Поскольку Python в последние годы приобрел большую популярность в отрасли Data Science, я хотел бы изложить некоторые из его наиболее полезных библиотек для работы с данными.
Все библиотеки с открытым исходным кодом и поэтому мы сравним их по таким показателям как количество коммитов, вкладов и запросов на Github, а также Google Trends. Эти данные можно будет использовать как метрики популярности библиотек.
Основные библиотеки
1. NumPy (коммиты: 16348, контрибьюторы: 540)
NumPy – это библиотека языка Python, добавляющая поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.
Математические алгоритмы, реализованные на Python, часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран, Си, Java). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB.
2. SciPy (коммиты: 17509, контрибьюторы: 510)
SciPy – это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке. Библиотека разрабатывается для той же аудитории, что MATLAB и Scilab. Для визуализации при использовании SciPy часто применяют библиотеку Matplotlib, являющуюся аналогом средств вывода графики MATLAB. В настоящее время SciPy распространяется под лицензией BSD и его разработчики спонсируются Enthought.
Возможности:
- поиск минимумов и максимумов функций;
- вычисление интегралов функций;
- поддержка специальных функций;
- обработка сигналов;
- обработка изображений;
- работа с генетическими алгоритмами;
- решение обыкновенных дифференциальных уравнений;
- и др.
3. Pandas (коммиты: 15418, контрибьюторы: 848)
Pandas – это библиотека Python,которая является мощным инструментом для анализа данных. Пакет дает возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным, а при наличии пакета matplotlib дает возможность рисовать графики на полученных наборах данных. Далее будут показаны основы работы с пакетом, такие как загрузка данных, обращение к полям, фильтрация и построение сводных.
Основные возможности библиотеки:
- Объект DataFrame для манипулирования индексированными массивами двумерных данных
- Инструменты для обмена данными между структурами в памяти и файлами различных форматов
- Встроенные средства совмещения данных и способы обработки отсутствующей информации
- Переформатирование наборов данных, в том числе создание сводных таблиц
- Срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных
- Вставка и удаление столбцов данных
- Возможности группировки позволяют выполнять трёхэтапные операции типа «разделение, изменение, объединение» (англ. split-apply-combine).
- Слияние и объединение наборов данных
- Иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности
- Работа с временными рядами: формирование временных периодов и изменение интервалов и т. д.
Статистика Google Trends
История запросов на GitHub
Визуализация
4. Matplotlib (коммиты: 22235, контрибьюторы: 616)
Matplotlib — это библиотека Python для построения качественных двумерных графиков. Matplotlib является гибким, легко конфигурируемым пакетом, который вместе с NumPy, SciPy и IPython предоставляет возможности, подобные MATLAB. В настоящее время пакет работает с несколькими графическими библиотеками, включая wxWindows и PyGTK.
Пакет поддерживает многие виды графиков и диаграмм:
- Графики (line plot)
- Диаграммы разброса (scatter plot)
- Столбчатые диаграммы (bar chart) и гистограммы (histogram)
- Круговые диаграммы (pie chart)
- Ствол-лист диаграммы (stem plot)
- Контурные графики (contour plot)
- Поля градиентов (quiver)
- Спектральные диаграммы (spectrogram)
Пользователь может указать оси координат, решетку, добавить надписи и пояснения, использовать логарифмическую шкалу или полярные координаты.
Несложные трёхмерные графики можно строить с помощью набора инструментов (toolkit) mplot3d. Есть и другие наборы инструментов: для картографии, для работы с Excel, утилиты для GTK и другие.
5. Bokeh (коммиты: 16121, контрибьюторы: 243)
Bokeh — это мощная библиотека с открытым исходным кодом, которая позволяет визуализировать данные для веб-приложений, не написав ни строчки на javascript. Изучение библиотек для визуализации вроде d3.js может оказаться полезным, но гораздо легче написать несколько строк кода на Python, чтобы решить задачу.
С Bokeh мы можем создавать поразительно детальные интерактивные визуализации или же более простые вещи, вроде столбчатых диаграмм.
6. Plotly (коммиты: 2593, контрибьюторы: 38)
Plotly – это библиотека, с помощью, которой достаточно легко строить интерактивные графики в Jupyter Notebook’e. В Python есть много библиотек для визуализации, среди них и те, которые позволяют строить интерактивные графики, например, bokeh, pygal и plotly, о котором собственно идет речь.
Plotly позицинируется как online-платформа, где можно создавать и публиковать свои графики. Однако, эту библиотеку можно использовать и просто в Jupyter Notebook’e. К тому же у библиотеки есть offline-mode, который позволяет использовать ее без регистрации и публикации данных и графиков на сервер plotly.
7. SciKit-Learn (коммиты: 22096, контрибьюторы: 898)
Scikit-learn это библиотека для машинного обучения на языке программирования Python с открытым исходным кодом. С помощью нее можно реализовать различныеалгоритмы классификации, регрессии и кластеризации, в том числе алгоритмы SVM,случайного леса, k-ближайших соседей и DBSCAN, которые построены на взаимодействии библиотек NumPyи SciPy с Python.
Достоинствами данной библиотеки являются:
- Простые и эффективные инструменты для data mining и data analysis;
- Удобный доступ к необходимым компонентам;
- Построен на NumPy, SciPy и Matplotlib;
- Открытый исходный код, лицензия BSD.
Статистика Google Trends
История запросов на GitHub
Machine Learning
8. Theano (коммиты: 26580, контрибьюторы: 313)
Theano — это расширение языка Python, позволяющее эффективно вычислять математические выражения, содержащие многомерные массивы. Библиотека предоставляет базовый набор инструментов для конфигурации нейросетей и их обучения. Наибольшее признание Theano получила в задачах машинного обучения при решении задач оптимизации. Библиотека позволяет использовать возможности GPU без изменения кода программы, что делает ее незаменимой при выполнении ресурсоемких задач.
Возможности библиотеки:
- тесная интеграция с NumPy;
- прозрачное использование GPU;
- эффективное дифференцирование переменных;
- быстрая и стабильная оптимизация;
- динамическая генерация кода на C;
- расширенные возможности юнит-тестирования и самопроверок;
9. TensorFlow (коммиты: 19862, контрибьюторы: 956)
Проект TensorFlow масштабнее, чем вам может показаться. Тот факт, что это библиотека для глубинного обучения, и его связь с Гуглом помогли проекту TensorFlow привлечь много внимания. Но если забыть про ажиотаж, некоторые его уникальные детали заслуживают более глубокого изучения:
- Основная библиотека подходит для широкого семейства техник машинного обучения, а не только для глубинного обучения.
- Линейная алгебра и другие внутренности хорошо видны снаружи.
- В дополнение к основной функциональности машинного обучения, TensorFlow также включает собственную систему логирования, собственный интерактивный визуализатор логов и даже мощную архитектуру по доставке данных.
- Модель исполнения TensorFlow отличается от scikit-learn языка Python и от большинства инструментов в R.
10. Keras (коммиты: 3745, контрибьюторы: 493)
Keras – это библиотека, позволяющая на более высоком уровне работать с нейросетями. Она упрощает множество задач, используется в быстрых экспериментах и сильно уменьшает количество однообразного кода. В качестве бекендной библиотеки для вычислений keras может использовать theano и tenzorfow.
Изначально Keras вырос как удобная надстройка над Theano. Отсюда и его греческое имя — κέρας, что значит “рог” по-гречески, что, в свою очередь, является отсылкой к Одиссее Гомера. Хотя, с тех пор утекло много воды, и Keras стал сначала поддерживать Tensorflow, а потом и вовсе стал его частью. Впрочем, наш рассказ будет посвящен не сложной судьбе этого фреймворка, а его возможностям. Если вам интересно, добро пожаловать под кат.
Статистика Google Trends
История запросов на GitHub
Обработка естественного языка
11. NLTK (коммиты: 12629, контрибьюторы: 201)
Библиотека NLTK, или NLTK — пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на языке программирования Python. Содержит графические представления и примеры данных. Сопровождается обширной документацией, включая книгу с объяснением основных концепций, стоящих за теми задачами обработки естественного языка, которые можно выполнять с помощью данного пакета.
NLTK хорошо подходит для студентов, изучающих компьютерную лингвистику или близкие предметы, такие как эмпирическая лингвистика, когнитивистика, искусственный интеллект, информационный поиск и машинное обучение. NLTK с успехом используется в качестве учебного пособия, в качестве инструмента индивидуального обучения и в качестве платформы для прототипирования и создания научно-исследовательских систем.
12. Gensim (коммиты: 2878, контрибьюторы: 179)
Python-библиотека Gensim — популярный инструмент для автоматической обработки языка, основанный на машинном обучении и используемый как коммерческими компаниями, так и академическими исследователями. В Gensim реализованы алгоритмы дистрибутивной семантики word2vec и doc2vec, он позволяет решать задачи тематического моделирования (topic modeling) и выделять основные темы текста или документа.
Целевая аудитория является обработка естественного языка (НЛП) и IR сообщество. В Gensim реализованы популярные алгоритмы НЛП.
Например, word2vec. Большинство реализаций алгоритмов умеет использовать несколько ядер.
Статистика Google Trends
История запросов на GitHub
Data Mining
13. Scrapy (коммиты: 6409, контрибьюторы: 251)
Scrapy – одна из наиболее популярных и производительных библиотек Python для получения данных с веб-страниц, которая включает в себя большинство общих функциональных возможностей. Это значит, что вам не придётся самостоятельно прописывать многие функции. Scrapy позволяет быстро и без труда создать «веб-паука».
Пакет Scrapy (как и большинство других пакетов Python) можно найти в PyPI (Python Package Index, также известен как pip) – это поддерживаемый сообществом репозиторий для всех вышедших пакетов Python.
Рекомендуем к прочтению: Upwork: вывод средств. Как вывести средства с международной биржи труда в России и Украине?
Изучайте веб разработку, с помощью онлайн уроков, каждый понедельник и среду в 20:00, на канале: Быстрый старт в веб-разработке (на странице проекта доступны записи всех уроков).