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