Библиотеки Python для анализа данных. Что, зачем и почему…

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Python. Решил составить список библиотек, которые используются в data science, если мы применяем язык Python. Cписок будут открытым и выражает сугубо личное мнение. Энциклопедического описания библиотек я решил не приводить, а просто и кратко объяснить их основное назначение для всех непосвященных.

Раздел 1. Сбор, обработка и анализ данных.

1.1 Pandas. Основная библиотека для анализа. Операции с данными в можно производить и с помощью стандартного функционала Python, но с Pandas все задачи упрощаются в разы. Нужен сбор данных из различных источников - не проблема, необходимо консолидировать таблицы (датафреймы) - не вопрос, провести очистку и трансформацию массивов чисел - и с этом Pandas справится без труда. Главное, все операции выполняются практически «одной строчкой» кода. В этом случае мы имеем дело, так сказать, с высокоуровневым программированием.

1.2 NumPy. Библиотека для работы с многомерными массивами чисел. Так как данные массивы и "классические" таблицы, с которыми работает аналитик, - не одно и тоже, в финансово-экономических расчетах NumPy выполняет вспомогательную функцию. Ситуация меняется, если речь идет о машинном (глубоком) обучении и нейронных сетях. Там библиотека играет более значимую роль.

1.3 SciPy. Библиотека, предназначенная для выполнения научных и инженерных расчётов. Иногда встречается в требованиях к кандидатам на вакантную должность аналитика, но на практике применить возможности библиотеки вряд ли получиться.

1.4 Dask. Любопытная библиотека, позволяющая распараллеливать процесс обработки данных, за счет чего достигается ускорение работы кода. Понятно, что в применении любого инструмента есть свои нюансы, но их рассмотрение будет выходить за рамки это обзорной публикации. В любом случае, если ваши расчеты на Pandas уже начали захлебываться, то имеет смысл присмотреться к данной библиотеке.

Раздел 2. Статистические расчеты.

2.1 Statsmodels. Если говорить о статистических расчетах, то язык Python будет уступать языку R. Причина тому — отсутствие большого количества тематических библиотек для узкоспециализированных расчетов. Наиболее известный инструмент для статистики на Python — Statsmodels.

Раздел 3. Визуализация полученной информации.

3.1 Matplotlib. Библиотека позволяет строить линейные графики, диаграммы разброса, столбчатые диаграммы и гистограммы и т.д. Полученные изображения могут быть использованы в дальнейшем в качестве иллюстраций для публикации или отчета. Важно отметить, что вся работа с визуализациями проходит на низком уровне, то есть создание/коррекция таких элементов как ряды данных, легенда, подписи осей, название и т.д. это отдельные строчки кода. С одной стороны это дает большую гибкость для разработки диаграмм, с другой повышает трудоемкость разработки графиков и требует от аналитика-программиста определенных навыков.

3.2 Seaborn. Инструмент для создания визуализаций очень напоминает предыдущий. Отличия же состоит в том, что построение графиков и диаграмм проходит в более высокоуровневым плане, что позволяет более просто создавать сложные типы визуализаций.

3.3 Bokeh, Plotly. Здесь уже можно строить интерактивные графики и диаграммы с возможностью частичного взаимодействия с визуализациями.

Вопрос: «Возможно ли построение дашбордов, подобных решениям на платформах Power BI/Tableau/Qlik силами библиотек Python?»

Ответ: Реализовать решения с подобным функционалом на платформе Python невозможно, так как графики и диаграммы, созданные с помощью библиотек не поддерживают всю палитру взаимодействий с конечным пользователем. С другой стороны, теоретически/практически можно разработать шаблоны относительно стабильных дашбордов для регулярного вывода ключевых KPI организации. Два плюса таких решений: возможность задействовать любые типы алгоритмов для предобработки больших данных (получается бесшовная система «сбор -обработка -визуализация» на одной платформе Python), бесплатность использования конечного результата.

Apache Zeppilin. По правде сказать, это не библиотека Python, а полноценный инструмент подобный Jupyter Notebook. Есть лишь одна причина, по которой я решил заострить внимание на данном программном решении. Это простота построения визуализаций и последующее взаимодействие с ними. Не берусь утверждать, что это самый простой инструмент в плане внедрения и построения дашбордов, но в целом все реализуемо (подробности ищите на Youtube).

Раздел 4. Инструменты для ETL.

4.1 Luigi, Apache Airflow. Данные библиотеки необходимы для организации Data Pipeline (дословный перевод трубопровод). С их помощью выстраиваются последовательности зависимых задач, отслеживается граф выполнения, обрабатываются ошибки с возможностью перезапуска нужных задач, распределяются ресурсы рабочих процессов с возможностью параллельной работы независимых частей графа задач.

Теперь простыми словами. У вас есть отдельные полезные скрипты (что-то выгружается из БД, потом где-то информация агрегируется, как-то чистится и т.д.) И все это десятки или сотни скриптов Python, которые регулярно приходится запускать вручную. Luigi (Apache Airflow) может выступить эффективным дирижером для всех этих процессов, контролируя их запуск, выполнение и т.д.

Раздел 5. Взаимодействие с табличным редактором Excel.

5.1 Openpyxl и аналоги. Python может читать данные из книг Excel, Python может сохранять данные в книгу Excel. Но лично у меня возникает вопрос, если объем данных таков, что их можно корректно обработать в разумные сроки с помощью табличного редактора, зачем применять Python? Если речь идет о массивах, которые вообще не открыть Excel, зачем их сохранять в книгу? Одним словом, философия получается…

Раздел 6. Взаимодействие с БД.

6.1 Sqlalchemy. По сути дела, данная библиотека позволяет осуществить симбиоз кода Python с языком запросов SQL, чтобы облегчить считывание/запись данных. В самых простых случаях можно обойтись и без нее (использовать библиотеки-коннекторы для разных БД), но с ней будет удобнее.

Раздел 7. Сбор данных из сети Интернет.

7.1 Beautiful_soup. Парсинг данных с сайтов где нет доступа по API. Добавить нечего)

Раздел 8. Машинное/глубокое обучение.

8.1 Scikit-learn, Theano, Tensorflow, Keras, pyTorch и т.д. Тема машинного и глубокого обучения сейчас настолько распиарена, что ее смело причислить к хайповым в IT. Платные курсы, полу бесплатные тренинги, бесплатные открытые семинары с крутыми экспертами. HR-менеджеры включают знание данных библиотек чуть ли не в каждую вакансию к месту и не к месту. При этом мало кто понимает сколько в реальности нужно таких специалистов (тема профессионального мыльного пузыря), какой у них должен быть квалификационный уровень (тема вечных диспутов о знании матанализа, профильном образовании в топовом вузе страны и т.д.), каковы критерии оценки их работы (призовое место на конкурсе и реальное сокращение издержек в коммерческом проекте это разные вещи). А пока история как в одном анекдоте. Все слышали о машинном обучении, только часть понимает, что там и к чему, и лишь единицам удается извлечь из данной технологии реальную коммерческую прибыль.

9. Тесты

9.1 Unittest. Код нужно не только писать, но и проверять и тестировать. Традиционно это прерогатива профессиональных программистов (всякие там код-ревью), но если аналитик решил написать недетский скрип на несколько сотен (а то и тысяч) строк, а потом передать его по наследству (тут уже всплывает термин legacy-код), то не мешало бы и задуматься о вариантах диагностики своего творения. У данной библиотеки есть аналоги, поэтому Unittest я выбрал как первое решение, пришедшее на ум.


Источник: m.vk.com

Комментарии: