«Удовольствие от программирования на Python должно заключаться в том, чтобы видеть короткие, лаконичные, удобочитаемые классы, которые выражают множество действий в небольшом количестве ясного кода, а не в грудах пустых символов, утомляющих читающего до смерти».
— Гвидо Ван Россум, создатель языка Python.
32 года гениальное творение Гвидо ван Россума входит в число наиболее востребованных и универсальных языков программирования в мире. Сообщество Python объединяет свыше 15 миллионов разработчиков, а за счет простого синтаксиса и возможности быстрого обучения продолжает постоянно пополняться новыми членами.
Для Python существует более 137 тысяч библиотек с открытым исходным кодом, автоматизирующих работу в разных областях — от отдельных рутинных рабочих процессов в компаниях до создания сложных многофункциональных приложений. Одна из самых популярных областей применения «змеиного языка» — наука о данных, а также задачи, связанные с искусственным интеллектом и машинным обучением.
В этой обширной «шпаргалке» для начинающих AI/ML специалистов мы собрали опенсорсные библиотеки Python, сгруппированные по областям практического применения. Этот список с кратким описанием функций каждого инструмента будет полезен всем, кто постоянно работает с «Питоном» и ищет эффективные инструменты для решения возникающих задач.
Важно! Учитывая пересечение функциональных областей различных направлений науки о данных, представленные здесь библиотеки и фреймворки могут (и по идее должны) одновременно находиться в разных подразделах списка. Однако мы сознательно избежали такого «повторения», чтобы описать как можно больше инструментов Python и не создавать ненужной путаницы у новичков.
Машинное обучение
PyTorch
Специализация: глубокое обучение, компьютерное зрение, обработка естественного языка
Лицензия: BSD
Документация: сайт
PyTorch — ML-библиотека с открытым исходным кодом была создана группой исследователей ИИ Facebook на основе библиотеки Torch с целью обеспечить максимальную гибкость и скорость обучения моделей.
Особенности PyTorch:
Предлагает динамический вычислительный граф, который обеспечивает мгновенные вычисления, отладку и простой переход от исследования к производству.
Гибкий, интуитивно понятный интерфейс для создания и обучения моделей глубокого обучения.
Поддерживает распределенные вычисления, что позволяет быстро и эффективно обучать модели на огромных наборах данных.
Тензорные вычисления с поддержкой ускорения графического процессора.
TensorFlow
Специализация: нейронные сети, машинное обучение, глубокое обучение
Лицензия: Apache 2.0
Документация: сайт
Опенсорсная библиотека Python с открытым исходным кодом для высокопроизводительных числовых вычислений, разработанная исследователями Google Brain. По сути, TensorFlow — это структура для определения и выполнения вычислений с использованием тензоров, которые являются частично определенными вычислительными объектами, в конечном итоге производящими значение.
Особенности TensorFlow:
Улучшенная нативная визуализация вычислительного графа.
Снижает количество ошибок на 50–60 % при машинном обучении нейронов.
Параллельные вычисления для выполнения сложных моделей.
Беспрепятственное управление библиотекой при поддержке Google.
Простота в использовании обеспечивает быструю отладку.
Библиотека включает в себя различные хелперы слоев (tflearn, tf-slim, skflow), которые делают ее еще более функциональной.
Быстрые обновления и регулярные новые выпуски с дополнительными функциями.
TensorFlow не имеет функции символических циклов.
Keras
Специализация: нейронные сети, глубокое обучение
Лицензия: Apache 2.0
Документация: сайт
Keras — это высокоуровневый API нейронной сети на основе Python и фреймворк, который может работать поверх TensorFlow, CNTK или Theano.
Особенности Keras:
Хотя во многих аспектах Keras похож на Tensorflow, он разработан с учетом подхода, ориентированного на человека, чтобы сделать ML и DL более доступными.
Модульный и расширяемый набор инструментов упрощает создание моделей глубокого обучения — создавать, компилировать и обучать нейронные сети можно всего несколькими строками кода.
Поддерживает типичные функции нейронных сетей — уровни, функции активации, функции потерь и оптимизаторы.
Быстрое выполнение различных итераций DL с полными возможностями развертывания.
Поддержка больших кластеров GPU и TPU, обеспечивающая машинное обучение на Python в промышленных масштабах.
Pandas
Специализация: анализ данных, дата-сайенс
Лицензия: BSD-3-Clause
Документация: сайт
Pandas (Python data analysis) — библиотека Python на основе NumPy, которая поддерживает различные структуры данных и операции для эффективного манипулирования числовыми данными и временными рядами.
Особенности Pandas:
Красноречивый синтаксис и богатые функциональные возможности.
Абстракция высокого уровня.
Выполняет огромный спектр операций с данными — слияние, изменение формы, выбор, очистку и функции обработки данных.
Позволяет импортировать данные из различных форматов файлов, таких как значения, разделенные запятыми, JSON, SQL и Microsoft Excel.
Доступны различные методы группировки, объединения и фильтрации данных из дата-сетов.
Подходит для задач преобразования и хранения данных (ETL), т. к. поддерживает загрузку файлов CSV в свой формат фрейма данных.
Поддерживает функции, специфичные для временных рядов, такие как генерация диапазона дат, скользящее окно, линейная регрессия и сдвиг даты.
SciPy
Специализация: ML-алгоритмы, дата-сайенс, массивы NumPy
Лицензия: BSD 3-Clause
Документация: сайт, GitHub
Scipy (Scientific Python) — библиотека, построенная поверх NumPy, которая содержит различные модули для оптимизации данных, интеграции и вычислительной статистики.
Особенности SciPy:
SciPy предоставляет алгоритмы оптимизации, интегрирования, интерполяции, задач на собственные значения, алгебраических уравнений, дифференциальных уравнений, статистики и многих других классов задач.
Библиотека предоставляет дополнительные инструменты для вычисления массивов NumPy и специализированные структуры данных, такие как разреженные матрицы и k-мерные деревья.
Поддерживает высокооптимизированные реализации, написанные на низкоуровневых языках, таких как Fortran, C и C++.
Высокоуровневый синтаксис облегчает использование.
Активное и бурно развивающееся сообщество по всему миру.
Scikit-Learn
Специализация: анализ данных, дата-сайенс, статистика
Лицензия: BSD 3-Clause
Документация: сайт
Библиотека с открытым исходным кодом, объединяющая алгоритмы машинного обучения для производственных приложений. Scikit-Learn фокусируется на качестве кода, документации, простоте использования и производительности.
Особенности Scikit-Learn:
Построена на основе ключевых опенсорсных библиотек Python: Numpy, Matplotlib и Scipy.
Предлагает множество функций для различных базовых алгоритмов машинного обучения, таких как регрессия, классификация и кластеризация.
Возможность повторного использования в различных контекстах.
Поддерживается практически всеми алгоритмами машинного обучения — контролируемыми и неконтролируемыми.
Используется как для обычного, так и для интеллектуального анализа данных, поэтому популярна у новичков в ML.
Caffe
Специализация: глубокое обучение, машинное зрение
Лицензия: BSD 2-Clause
Документация: сайт
Caffe (Convolution Architecture for Feature Extraction) — среда для глубокого обучения на языке C++, которая поддерживает интерфейс на Python.
Особенности Caffe:
Модели и оптимизация гибко определяются конфигурацией.
Расширяемый код, способствующий активной разработке.
Высокая скорость, позволяет использовать библиотеку для исследовательских экспериментов и развертывания в промышленности.
Развитое сообщество.
Chainer
Специализация: глубокое обучение, машинное обучение
Лицензия: MIT
Документация: сайт
Мощный и гибкий инструмент Python для построения и обучения глубоких нейронных сетей. Библиотека Chainer была разработана японской компанией Preferred Networks.
Особенности Chainer:
Сферой применения служат такие области, как видеоанализ, робототехника, исследования и обработка естественного языка.
Использует динамический граф вычислений, что позволяет более гибко и эффективно обучать глубокие нейронные сети.
Поддерживает множество архитектур нейронных сетей, включая упреждающие, свёрточные и рекуррентные.
Встроенные алгоритмы оптимизации, такие как стохастический градиентный спуск и Adam.
MXNet
Специализация: глубокое обучение
Лицензия: Apache 2.0
Документация: сайт
Apache MXNet — среда глубокого обучения, разработанная для повышения эффективности и гибкости. Этот инструмент позволяет смешивать различные варианты программ глубокого обучения, чтобы максимизировать их эффективность и производительность.
Особенности MXNet:
Комплексный и гибкий Python API.
Быстрое обучение моделей за счет масштабирования с использованием разных графических процессоров и компьютеров.
Помимо Python, поддерживает множество языков программирования, включая C++, Java, JavaScript, Go, R, Scala и Perl.
Поддержка различных моделей, включая свёрточные нейронные сети (CNNs) и сети долгой краткосрочной памяти (LSTMs).
LightGBM
Специализация: градиентный бустинг
Лицензия: MIT
Документация: сайт
Библиотека LightGBM обеспечивает высокопроизводительную реализацию повышения градиента в DS-проектах, которая может обрабатывать большие наборы данных и многомерные пространства признаков.
Особенности LightGBM:
Подходит для широкого круга задач DS, включая обнаружение аномалий, анализ временных рядов, обработку естественного языка и классификацию.
LightGBM легко интегрировать с другими библиотеками Python, такими как Pandas, Scikit-Learn и XGBoost.
Библиотека спроектирована с опорой на быстроту и эффективность с точки зрения использования памяти, поэтому хорошо подходит для крупномасштабных наборов данных и многомерных пространственных объектов.
LightGBM предоставляет широкий набор гиперпараметров, которые можно настраивать для оптимизации производительности модели для конкретных наборов данных и вариантов использования.
Eli5
Специализация: машинное обучение, визуализация
Лицензия: MIT
Документация: сайт
Библиотека Python для отладки и визуализации моделей машинного обучения. ELI5 предоставляет инструменты, помогающие DS и ML специалистам понять, как работают их модели, и диагностировать потенциальные проблемы.
Особенности ELI5:
Предоставляет ряд методов для интерпретации моделей машинного обучения, таких как важность признаков (feature importance), важность перестановки (permutation importance) и значения SHAP (SHapley Additive exPlanations).
Включает инструменты для отладки моделей машинного обучения, такие как визуализация неправильно классифицированных примеров, проверка весов и смещений моделей.
Может генерировать удобочитаемые объяснения того, как модель делает прогнозы, что может помочь в общении с нетехническими заинтересованными сторонами.
Функционал ELI5 для работы с ML-моделями включает их интерпретацию, отладку, сравнение, а также разработку функций.
Компьютерное зрение
OpenCV
Специализация: обработка изображений, сегментация/распознавание
Лицензия: Apache 2.0
Документация: сайт
Коммерческая библиотека компьютерного зрения и машинного обучения с открытым исходным кодом, в состав которой входит более 2500 высокооптимизированных алгоритмов. Это позволяет OpenCV выполнять практически любые задачи в сфере обработки изображений и видео, включая обнаружение и отслеживание объектов, распознавание лиц на фотографиях и видео.
Особенности OpenCV:
Кроссплатформенность и поддержка графических процессоров.
Оптимизирована для коммерческих приложений CV и ML, работающих в реальном мире и в реальном времени.
OpenCV изначально была написана на C++, что дает высокую производительность
Использует массивы Numpy для выполнения операций.
Расширенное приложение для 3D-объектов.
Отсутствие подробной документации и кодов обработки ошибок могут усложнить освоение библиотеки новичками.
YOLOv8
Специализация: детекция, распознавание объектов
Лицензия: AGPL 3.0
Документация: сайт
YOLOv8 — самый совершенный (на сегодня) и производительный представитель семейства моделей обнаружения объектов YOLO.
Особенности YOLOv8:
Предназначен для таких задач CV, как обнаружение объектов, сегментация экземпляров и классификация изображений.
Удобный API (командная строка + Python).
Быстрее и точнее предыдущих версий.
Поддерживает множество форматов экспорта.
Модель может работать на обычных и графических процессорах.
YOLOv8 обучена на датасете COCO.
PaddleOCR
Специализация: оптическое распознавание символов, OCR-пайплайн
Лицензия: Apache 2.0
Документация: GitHub
PaddleOCR — многоязычные наборы инструментов OCR на основе DL-фреймворка PaddlePaddle.
Особенности PaddleOCR:
Практичная сверхлегкая система OCR.
Поддержка распознавания более 80 языков.
Большой выбор инструментов аннотирования и синтеза данных.
Поддержка обучения и развертывания на серверных, мобильных, встроенных устройствах и IoT
SciKit-Image
Специализация: обработка изображений
Лицензия: BSD-3-Clause
Документация: сайт
SciKit-Image — коллекция алгоритмов для обработки изображений, основанная на NumPy, scipy.ndimage и ряде других библиотек, обеспечивающая универсальный набор процедур обработки изображений в Python.
Особенности SciKit-Image:
Простые и эффективные инструменты для обработки изображений и методов компьютерного зрения.
Доступна для всех и повторно используема в различных контекстах.
Создана на основе NumPy, SciPy и matplotlib (NumPy и SciPy должны быть предустановлены).
Работает со всеми форматами данных, поддерживаемыми библиотекой изображений Python.
Работает с URL-путями изображений.
DeepFace
Специализация: распознавание лиц
Лицензия: MIT
Документация: GitHub
Deepface — легкий фреймворк для распознавания лиц и анализа атрибутов лица (возраст, пол, эмоции и раса) для Python.
Особенности Deepface:
Библиотека опубликована в индексе пакетов Python (PyPI).
Гибридная система объединяет самые современные модели: VGG-Face, Google FaceNet, OpenFace, Facebook DeepFace, DeepID, ArcFace, Dlib и SFace.
Функции включают анализ атрибутов лиц и анализ лиц в реальном времени.
Точность 97,53% в задачах распознавания лиц.
Yellowbrick
Специализация: машинное обучение, прогнозирование, визуализация
Лицензия: MIT
Документация: сайт
Yellowbrick — набор средств визуального анализа и диагностики, предназначенных для облегчения машинного обучения с помощью scikit-learn. Основной объект API библиотеки Visualizer представляет собой средство оценки scikit-learn, которое учится на данных. «Визуализаторы» изучают данные, создавая визуальное представление рабочего процесса выбора модели.
Особенности Yellowbrick:
Поддержка различных моделей, включая визуализацию функций, классификации, кластеризации, регрессии, выбора модели, целей и текста.
Настройка гиперпараметров.
Возможность интерпретации оценки моделей.
Активное сообщество разработчиков.
Обработка естественного языка
DeepSpeech
Специализация: распознавание речи
Лицензия: MPL-2.0
Документация: сайт
DeepSpeech — встроенный механизм преобразования речи в текст с открытым исходным кодом, который может автономно работать в режиме реального времени на устройствах в диапазоне от Raspberry Pi 4 до мощных серверов с графическим процессором.
Особенности DeepSpeech:
Библиотека создана на основе TensorFlow и как реализация алгоритма DeepSpeech, разработанного Baidu.
Ядро DeepSpeech написано на C++, но имеет привязку к Python, .NET, Java и JavaScript.
DeepSpeech можно использовать для двух ключевых действий, связанных с распознаванием речи — обучения и логического вывода.
Использует нейронную модель для предсказания текста из речи, а также языковую модель N-грамм, обученную предсказывать текст из предшествующего текста.
Gensim
Специализация: тематическое моделирование без учителя и обработки естественного языка (NLP)
Лицензия: LGPL-2.1
Документация: GitHub.
Пакет Python с открытым исходным кодом, смоделированный для извлечения семантических тем из больших документов и текстов для обработки, анализа и прогнозирования поведения человека с помощью статистических моделей и лингвистических вычислений. Gensim имеет возможность обрабатывать огромные данные, независимо от того, являются ли они необработанными и неструктурированными.
Особенности Gensim:
Библиотеку можно использовать для создания моделей, которые могут эффективно классифицировать документы, понимая статистическую семантику каждого слова.
Поставляется с алгоритмами обработки текста, такими как Word2Vec, FastText, Latent Semantic Analysis, изучающими статистические закономерности совпадения в документе, чтобы отфильтровать ненужные слова и построить модель только с важными функциями.
Предоставляет оболочки ввода-вывода и считыватели, которые могут импортировать и поддерживать широкий спектр форматов данных.
Поставляется с простым и интуитивно понятным интерфейсом, который может легко использоваться новичками. Кривая изучения API также довольно низкая, что объясняет, почему многим разработчикам нравится эта библиотека.
SpaCy
Специализация: обработка естественного языка (NLP) промышленного масштаба
Лицензия: Third Party
Документация: сайт
Библиотека Python с открытым исходным кодом для решения сложных задач NLP. SpaCy написана на Cython с оптимизацией управления памятью для обеспечения улучшенной скорости.
Особенности SpaCy:
Более 60 обученных NLP-конвейеров с поддержкой 19 языков.
Предварительно обученные вложения слов.
Готовые к проду пайплайны.
Поддерживает пользовательские модели, написанные на TensorFlow и PyTorch.
SpaCy Universe предлагает широкий выбор пакетов Python, плагинов и расширений для NLP.
SpaCy API поддерживает многие задачи NLP, такие, как лемматизация, распознавание сущностей, тегирование, распознавание предложений и токенизация.
NLTK
Специализация: обработка естественного языка (NLP)
Лицензия: Apache-2.0
Документация: сайт
NLTK (Natural Language Toolkit) — один из наиболее популярных инструментов для обработки естественного языка.
Особенности NLTK:
Поддерживает более 50 языковых наборов данных и обученных языковых моделей.
Предлагает классификацию текста, выделение корней, токенизацию, тегирование, синтаксический анализ.
Функции для анализа настроений или мнения, выраженного во фрагменте текста.
Служит оболочкой для NLP-библиотек промышленного масштаба.
Поддерживает мультиплатформенность — работает на Windows, Linux и Mac OS X.
TorchAudio
Специализация: преобразование данных для обработки аудиосигнала
Лицензия: BSD-2-Clause
Документация: сайт
Библиотека машинного обучения для обработки звука и сигналов с помощью PyTorch. TorchAudio предоставляет функции ввода-вывода, обработки сигналов и данных, наборы данных, реализации моделей и компоненты приложений.
Особенности TorchAudio:
Мощные N-мерные массивы.
Быстрые и универсальные концепции векторизации, индексации и широковещательной рассылки.
Инструменты для интеграции кода C/C++ и Fortran.
Комплексные математические функции, генераторы случайных чисел, процедуры линейной алгебры, преобразования Фурье.
Поддерживает широкий спектр аппаратных и вычислительных платформ и хорошо интегрируется с библиотеками распределенных, графических процессоров и разреженных массивов.
Визуализация
MatPlotLib
Специализация: реализация визуальных данных
Лицензия: BSD-3-Clause
Документация: сайт
Matplotlib — основная опенсорсная библиотека Python, используемая в науке в дата-сайенс для визуализации данных в виде диаграмм и графиков.
Особенности Matplotlib:
Предоставляет объектно-ориентированный API, который можно использовать для встраивания графиков в приложения.
Двухмерная графическая библиотека Python с ограниченной поддержкой 3D-графики.
Может использоваться в качестве замены пакета MATLAB и Mathematica с преимуществом бесплатности и открытого исходного кода.
Поддерживает десятки бэкендов и типов вывода, поэтому не зависит от типа ОС и формата данных.
Низкое потребление памяти.
Не подходит для работы с несколькими наборами данных одновременно.
Слабая поддержка временных рядов.
Seaborn
Специализация: визуализация статических данных
Лицензия: BSD-3-Clause
Документация: сайт
Библиотека визуализации данных Python, основанная на Matplotlib. По сравнению с Matplotlib, Seaborn можно использовать для создания более привлекательных и информативных статистических графиков. Наряду с обширной поддержкой визуализации данных Seaborn также поставляется со встроенным API, ориентированным на набор данных, для изучения взаимосвязей между несколькими переменными.
Особенности Seaborn:
Высокоуровневый интерфейс для создания привлекательных и информативных статистических графиков.
Параметры для анализа и визуализации одномерных и двумерных точек данных, а также для сравнения данных с другими подмножествами данных.
Поддержка автоматизированной статистической оценки и графического представления моделей линейной регрессии для различных типов целевых переменных.
Создает сложные визуализации для структурирования сеток из нескольких графиков, предоставляя функции, выполняющие высокоуровневые абстракции.
Поставляется с многочисленными встроенными темами для стилизации и создания графиков matplotlib.
Хорошо подходит для статистических моделей визуализации — тепловых карт и других типов, которые обобщают данные и отображают общие распределения.
Plotly
Специализация: визуализация данных
Лицензия: MIT
Документация: сайт
Plotly — среда визуализации трехмерных данных Python с открытым исходным кодом, построенная на библиотеке Plotly JavaScript (plotly.js).
Особенности Plotly:
Легкий синтаксис — все графики используют одинаковые переменные.
Поддерживает точечные диаграммы, гистограммы, линейные диаграммы, ящичные диаграммы, многоосевые графики, спарклайны, дендрограммы, трехмерные графики и другие типы диаграмм.
В отличие от других сред визуализации данных, включает контурные графики.
Предоставляет трехмерные диаграммы с несколькими интерактивными параметрами.
Инструмент наведения Plotly позволяет обнаруживать выбросы или аномалии во многих точках выборки.
Plotly можно использовать для веб-визуализации данных, встроенных в блокноты Jupyter, веб-приложения Dash, или экспортированных в виде отдельных HTML-файлов.
Графический пользовательский интерфейс позволяет работать с инструментом визуализации даже новичкам.
Bokeh
Специализация: визуализация данных
Лицензия: BSD-3-Clause
Документация: GitHub
Bokeh — одна из самых интерактивных библиотек в Python. С ее помощью можно обрабатывать огромные наборы данных и строить универсальные графики, которые помогают выполнять обширные исследовательские работы в рамках EDA (Exploratory Data Analysis).
Особенности Bokeh:
Помогает быстро создавать сложные статистические графики с помощью простых команд.
Поддерживает выходные данные в виде HTML, блокнота и сервера.
Поддерживает несколько языковых привязок, включая R, Python, lua, Julia.
Интеграция с Flask и Django.
Обеспечивает поддержку преобразования визуализации, написанной в других библиотеках, таких как matplotlib, seaborn и ggplot.
Altair
Специализация: декларативная визуализация
Лицензия: BSD-3-Clause
Документация: GitHub
Altair — инструмент визуализации статистических данных, который разработан на декларативных языках Vega и Vega-Lite, которые используются для создания, сохранения и обмена интерактивными проектами визуализации данных.
Особенности Altair:
Altair может создавать привлекательные визуализации данных в таких видах графиков, как гистограммы, круговые диаграммы, диаграммы рассеивания, диаграммы ошибок, стеблевые диаграммы.
Altair позволяет легко и быстро переключаться между визуализациями и экспериментами, поскольку создает графики в декларативном формате.
Автоматически устанавливаемые зависимости включают Python 3.6, NumPy и Pandas.
Для визуализации данных можно использовать Jupyter Notebooks или JupyterLab.
Включает фильтрацию данных, позволяющую создавать более персонализированные визуализации, а также объединять много графиков в один с помощью общего динамического фильтра.
Плохо поддерживает 3D-визуализацию.
Работа с массивами
NumPy
Специализация: обработка данных.
Лицензия: BSD.
Документация: сайт, GitHub.
NumPy (Numerical Python) — основной пакет для работы дата-сайентистов с Python. Это модуль для числовых вычислений, который может обрабатывать огромные объемы данных и выполнять действия с массивами.
Особенности NumPy:
Мощные N-мерные массивы.
Быстрые и универсальные концепции векторизации, индексации и широковещательной рассылки.
Инструменты для интеграции кода C/C++ и Fortran.
Комплексные математические функции, генераторы случайных чисел, процедуры линейной алгебры, преобразования Фурье.
Поддерживает широкий спектр аппаратных и вычислительных платформ и хорошо интегрируется с библиотеками распределенных, графических процессоров и разреженных массивов.
Theano
Специализация: глубокое обучение, параллельные вычисления, оптимизация
Лицензия: BSD-3 Clause
Документация: GitHub
Theano — библиотека Python с открытым исходным кодом, которую можно использовать для различных операций, таких как определение, оценка и оптимизация сложных математических выражений, включая многомерные массивы.
Особенности Theano:
Theano достигает высокой эффективности за счет манипулирования и оптимизации распределенного использования ресурсов ЦП и ГП.
Предоставляет функцию автоматической дифференциации, упрощая вычисление градиентов и оптимизацию параметров при обучении ML-моделей.
Позволяет пользователям оптимизировать выражения для скорости, использования памяти или числовой стабильности в зависимости от требований их задачи машинного обучения.
Библиотека отлично подходит для модульного тестирования.
Xarray
Специализация: работа с многомерными размеченными массивами
Лицензия: Apache-2.0
Документация: сайт
Xarray расширяет возможности массивов NumPy, обеспечивая множество оптимизированных операций с данными.
Особенности Xarray:
Xarray, как и NumPy, задает метки (размеры, координаты и атрибуты) поверх необработанных массивов, чтобы использовать их для создания эффективного и лаконичного интерфейса.
Пакет включает обширную библиотеку функций, не зависящих от предметной области, для расширенной аналитики и визуализации с помощью этих структур данных.
Xarray похож на Pandas, но ориентирован не на табличные данные, а на N-мерные массивы данных.
Интерфейс Xarray во многом основан на модели данных netCDF, но выходит за ее рамки, предоставляя функциональные возможности, аналогичные Common Data Model (CDM) netCDF-java.
Тесная интеграция с Dask для параллельных вычислений.
Dask
Специализация: параллельные вычисления на Python
Лицензия: BSD-3-Clause
Документация: сайт
Библиотека с открытым исходным кодом для параллельных вычислений Dask способна масштабировать код Python с многоядерных локальных компьютеров на большие распределенные кластеры в облаке.
Особенности Dask:
Dask предоставляет параллельные вычисления с графами задач.
Библиотека поддерживает фрейм данных Pandas и массивы Numpy.
Легкое масштабирование один раз написанного кода до уровня промышленного кластера.
Библиотека состоит из 2 основных частей — коллекции больших данных (высоко- и низкоуровневых) и динамического планировщика задач.
Пользовательский интерфейс поддерживает API-интерфейсы других библиотек в экосистеме PyData, включая Pandas, scikit-learn и NumPy. Он предоставляет низкоуровневые API-интерфейсы, которые помогают программистам параллельно запускать пользовательские алгоритмы.
Развитое сообщество разработчиков.
Парсинг
Scrapy
Специализация: веб-краулинг, интеллектуальный анализ данных, автоматизированное тестирование.
Лицензия: BSD-3-Clause
Документация: GitHub
Одна из самых популярных и быстрых платформ веб-сканирования с открытым исходным кодом, написанная на Python. Scrapy обычно используется для извлечения данных с веб-страницы с помощью селекторов на основе XPath.
Особенности Scrapy:
Кроссплатформенность — работает в Linux, Windows, BSD и Mac OS X.
Встроенная функциональность для сбора и извлечения данных из источников HTML/XML.
Поддержка создания экспорта фидов в различных форматах (JSON, CSV, XML) и их хранения в нескольких бэкендах.
Библиотека использует принцип «Don't Repeat Yourself» («Не повторяйся») в дизайне своего интерфейса, побуждая пользователей писать универсальный код, который можно повторно использовать для создания и масштабирования больших веб-сканеров.
Используется для сбора данных из API.
Scrapy — асинхронная библиотека, крайне эффективная с точки зрения скорости.
Не поддерживает веб-сайты на основе Javascript.
BeautifulSoup
Специализация: парсинг и очистка данных.
Лицензия: MIT
Документация: сайт
Библиотека очистки и анализа данных Python, работающая с исходниками в HTML и XML. BeautifulSoup позволяет разрабатывать поисковых роботов, сканирующих веб-сайты.
Особенности BeautifulSoup:
Beautiful Soup построен на основе известных парсеров Python, таких как lxml и html5lib, что позволяет нам взаимодействовать с различными алгоритмами синтаксического анализа.
Предоставляет несколько простых методов и «pythonic» идиом для просмотра, поиска и управления деревом синтаксического анализа.
Упорядочивает собранные веб-данные в простые для понимания XML-структуры, что позволяет проводить их анализ данных.
Автоматически определяет кодировку и плавно интерпретирует HTML-документы в нужный формат (входящие — в Unicode, а исходящие — в UTF-8), в том числе содержащие специальные символы.
Поставляется с обширной документацией.
Большое и активное сообщество поддержки.
Работает с многопоточностью только через сторонние кодеры.
Matminer
Специализация: интеллектуальный анализ свойств материалов
Лицензия: BSD
Документация: GitHub
Matminer — это библиотека Python для анализа данных о свойствах материалов.
Особенности Matminer:
Быстрый доступ к 40+ готовым датасетам (matminer.datasets).
Охватывает различные домены данных о материалах.
Легко создавать свои собственные наборы данных из онлайн-репозиториев (matminer.data_retrieval).
Преобразование и описание атрибутов сложных материалов в числовые дескрипторы (matminer.featurizers).
70+ характеристик, адаптированных из научных публикаций.
Matminer сам по себе не содержит инструментов машинного обучения, но работает с форматом данных Pandas, делающим ML-библиотеки доступными для материаловедческих приложений.
Прогнозирование
Statsmodels
Специализация: обработка статистических данных
Лицензия: BSD-3-Clause
Документация: GitHub
Statsmodels — модуль Python, который предоставляет классы и функции для оценки множества различных статистических моделей, а также для проведения статистических тестов и исследования статистических данных.
Особенности Statsmodels:
Для каждого оценщика доступен обширный список статистики результатов.
Результаты проверяются на соответствие существующим статистическим пакетам, чтобы убедиться в их правильности.
Поддерживает указание моделей с использованием формул R-стиля и фреймов данных Pandas, а также массивы Numpy.
Prophet
Специализация: прогнозирование временных рядов
Лицензия: MIT
Документация: GitHub
Prophet — инструмент для создания высококачественных прогнозов для данных временных рядов, которые имеют множественную сезонность с линейным или нелинейным ростом.
Особенности Prophet:
Библиотека следует API модели Sklearn.
Prophet предоставляет быстрые и полностью автоматизированные прогнозы, с возможностью ручной настройки специалистом по дата-сайенс и анализу данных.
Процедура прогнозирования данных временных рядов основана на аддитивной модели, в которой нелинейные тренды соответствуют годовой, еженедельной и ежедневной сезонности, а также праздничным эффектам.
Prophet устойчива к отсутствующим данным и сдвигам в тренде и обычно хорошо справляется с выбросами.
Ramp
Специализация: построение предиктивных моделей, прототипирование
Лицензия: European Union Public License 1.2
Документация: сайт
Ramp (Rapid Machine Learning Prototyping) — фреймворк Python для предсказательной аналитики, который можно с успехом использовать для быстрого прототипирования машинного обучения. Это унифицированная платформа на основе Pandas для работы с существующими библиотеками машинного обучения и статистики Python (scikit-learn, rpy2 и т. д.).
Особенности Ramp:
Модульная и расширяемая библиотека позволяет сравнивать производительность различных моделей с различными наборами данных и задачами.
Ramp поддерживает несколько форматов ввода данных, включая базы данных CSV, Excel и SQL, что упрощает работу с различными типами данных.
Быстрое кэширование и сохранение всех промежуточных и конечных вычислений.
Ramp учитывает текущий обучающий набор даже при использовании сложных обученных функций и смешанных прогнозов, а также отслеживает заданный подготовительный набор.
Растущая библиотека преобразований признаков, метрик и оценок.
Среда для совместной работы специалистов.
NuPIC
Специализация: выделение паттернов из данных в режиме реального времени
Лицензия: GNU Affero General Public License
Документация: GitHub
NuPIC (Numenta Platform for Intelligent Computing) — библиотека Python с открытым исходным кодом, служащая реализацией теории иерархической временной памяти или HTM (Hierarchical Temporal Memory). Она предназначена для создания интеллектуальных систем, имитирующих поведение неокортекса — части мозга, отвечающей за сенсорное восприятие, пространственное мышление и язык.
Особенности NuPIC:
NuPIC реализует алгоритмы иерархической временной памяти или HTM (Hierarchical Temporal Memory) для изучения временных закономерностей в потоке данных и создания прогнозов на их основе.
Библиотека подходит для таких задач, как обнаружение аномалий, прогнозирование, снижение размерности и классификация образов.
Гибкий и расширяемый сетевой API, который можно использовать для создания пользовательских сетей HTM для конкретных приложений.
Математический анализ
SymPy
Специализация: символьные вычисления
Лицензия: BSD
Документация: сайт
Библиотека Python для символьной математики. SymPy является полнофункциональной системой компьютерной алгебры (CAS) с максимально простым кодом, делающим инструмент понятным и легко расширяемым.
Особенности SymPy:
SymPy зависит только от mpmath, чистой библиотеки Python для произвольной арифметики с плавающей запятой, что делает ее простой в использовании.
Функциональность библиотеки охватывает целые числа произвольной точности, рациональные числа и числа с плавающей запятой, а также символьные выражения.
Помимо использования в качестве интерактивного инструмента, SymPy можно встраивать в другие приложения и расширять с помощью пользовательских функций.
SageMath
Специализация: математические вычисления
Лицензия: GPL
Документация: сайт
SageMath — достойная опенсорсная альтернатива таким вычислительным системам, как Magma, Maple, Mathematica и Matlab.
Особенности SageMath:
Библиотека включает более 100 пакетов с открытым исходным кодом, таких как NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R.
Унифицированный интерфейс.
SageMath можно использовать для изучения элементарной и продвинутой, чистой и прикладной математики.
Пользовательский интерфейс представляет собой блокнот в веб-браузере или командную строку.
Квантовые вычисления
QuTiP
Специализация: моделирование квантовой динамики
Лицензия: BSD-3-Clause
Документация: сайт
QuTiP — программное обеспечение с открытым исходным кодом для моделирования динамики открытых квантовых систем.
Особенности QuTiP:
Библиотека зависит от числовых пакетов Numpy, Scipy и Cython.
Графический вывод обеспечивает Matplotlib.
Обеспечивает удобное и эффективное численное моделирование широкого спектра гамильтонианов, в том числе с произвольной зависимостью от времени, обычно встречающихся в широком диапазоне физических приложений, таких как квантовая оптика, захваченные ионы, сверхпроводящие схемы и квантовые наномеханические резонаторы.
Свободно распространяемое ПО идеально подходит для изучения квантовой механики и динамики в учебных заведениях.
PyQuil
Специализация: квантовое программирование с использованием Quil
Лицензия: Apache-2.0
Документация: сайт
Как компонент Rigetti Forest SDK, PyQuil позволяет создавать и выполнять программы на языке квантовых инструкций Quil (Quantum Instruction Language) с использованием Python.
Особенности PyQuil:
PyQuil требует установки других компонентов Forest SDK, а именно компилятора Quil (quilc) и виртуальной машины Quantum (QVM), используемых для моделирования квантовых компьютеров.
Библиотеку также можно использовать для запуска программ на реальных квантовых компьютерах с помощью Quantum Cloud Services (QCS).
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.