Language

ТОП 13 Python библиотек для работы с данными 2017

Поскольку Python в последние годы приобрел большую популярность в отрасли Data Science, я хотел бы изложить некоторые из его наиболее полезных библиотек для работы с данными.

Все библиотеки с открытым исходным кодом и поэтому мы сравним их по таким показателям как количество коммитов, вкладов и запросов на Github, а также Google Trends. Эти данные можно будет использовать как метрики популярности библиотек.

Основные библиотеки

           1. NumPy (коммиты: 16348, контрибьюторы: 540)

NumPy – это библиотека языка Python, добавляющая поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.

Математические алгоритмы, реализованные на Python, часто работают гораздо медленнее тех же алгоритмов, реализованных на компилируемых языках (например, Фортран, Си, Java). Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов), оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy, работает так же быстро, как эквивалентный код, выполняемый в MATLAB.

Проекты на NumPy

Github


Изучайте C#/.Net на примере создания мессенджера. Каждую пятницу в 16:00, на канале: Разработка мессенджера – OpenTl.Server (на странице проекта доступны записи всех уроков).


           2. SciPy (коммиты: 17509, контрибьюторы: 510)

SciPy – это открытая библиотека высококачественных научных инструментов для языка программирования Python. SciPy содержит модули для оптимизации, интегрирования, специальных функций, обработки сигналов, обработки изображений, генетических алгоритмов, решения обыкновенных дифференциальных уравнений и других задач, обычно решаемых в науке и при инженерной разработке. Библиотека разрабатывается для той же аудитории, что MATLAB и Scilab. Для визуализации при использовании SciPy часто применяют библиотеку Matplotlib, являющуюся аналогом средств вывода графики MATLAB. В настоящее время SciPy распространяется под лицензией BSD и его разработчики спонсируются Enthought.

Возможности:

  • поиск минимумов и максимумов функций;
  • вычисление интегралов функций;
  • поддержка специальных функций;
  • обработка сигналов;
  • обработка изображений;
  • работа с генетическими алгоритмами;
  • решение обыкновенных дифференциальных уравнений;
  • и др.

Проекты на SciPy

Github

           3. Pandas (коммиты: 15418, контрибьюторы: 848)

Pandas – это библиотека Python,которая является мощным инструментом для анализа данных. Пакет дает возможность строить сводные таблицы, выполнять группировки, предоставляет удобный доступ к табличным данным, а при наличии пакета matplotlib дает возможность рисовать графики на полученных наборах данных. Далее будут показаны основы работы с пакетом, такие как загрузка данных, обращение к полям, фильтрация и построение сводных.

Основные возможности библиотеки:

  • Объект DataFrame для манипулирования индексированными массивами двумерных данных
  • Инструменты для обмена данными между структурами в памяти и файлами различных форматов
  • Встроенные средства совмещения данных и способы обработки отсутствующей информации
  • Переформатирование наборов данных, в том числе создание сводных таблиц
  • Срез данных по значениям индекса, расширенные возможности индексирования, выборка из больших наборов данных
  • Вставка и удаление столбцов данных
  • Возможности группировки позволяют выполнять трёхэтапные операции типа «разделение, изменение, объединение» (англ. split-apply-combine).
  • Слияние и объединение наборов данных
  • Иерархическое индексирование позволяет работать с данными высокой размерности в структурах меньшей размерности
  • Работа с временными рядами: формирование временных периодов и изменение интервалов и т. д.

Проекты на Pandas

Github

Статистика 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 и другие.

Проекты на Matplotlib

Github

           5. Bokeh (коммиты: 16121, контрибьюторы: 243)

Bokeh — это мощная библиотека с открытым исходным кодом, которая позволяет визуализировать данные для веб-приложений, не написав ни строчки на javascript. Изучение библиотек для визуализации вроде d3.js может оказаться полезным, но гораздо легче написать несколько строк кода на Python, чтобы решить задачу.

С Bokeh мы можем создавать поразительно детальные интерактивные визуализации или же более простые вещи, вроде столбчатых диаграмм.

Github

           6. Plotly (коммиты: 2593, контрибьюторы: 38)

Plotly – это библиотека, с помощью, которой достаточно легко строить интерактивные графики в Jupyter Notebook’e. В Python есть много библиотек для визуализации, среди них и те, которые позволяют строить интерактивные графики, например, bokeh, pygal и plotly, о котором собственно идет речь.

Plotly позицинируется как online-платформа, где можно создавать и публиковать свои графики. Однако, эту библиотеку можно использовать и просто в Jupyter Notebook’e. К тому же у библиотеки есть offline-mode, который позволяет использовать ее без регистрации и публикации данных и графиков на сервер plotly.

Проекты на Plotly

Github

           7. SciKit-Learn (коммиты: 22096, контрибьюторы: 898)

Scikit-learn это библиотека для машинного обучения на языке программирования Python  с открытым исходным кодом. С помощью нее можно реализовать различныеалгоритмы классификации, регрессии и кластеризации, в том числе алгоритмы SVM,случайного леса, k-ближайших соседей и DBSCAN, которые построены на взаимодействии библиотек NumPyи SciPy с Python.

Достоинствами данной библиотеки являются:

  • Простые и эффективные инструменты для data mining и data analysis;
  • Удобный доступ к необходимым компонентам;
  • Построен на NumPy, SciPy и Matplotlib;
  • Открытый исходный код, лицензия BSD.

Проекты на Scikit-learn

Github

Статистика Google Trends

История запросов на GitHub

Machine Learning

           8. Theano (коммиты: 26580, контрибьюторы: 313)

Theano — это расширение языка Python, позволяющее эффективно вычислять математические выражения, содержащие многомерные массивы. Библиотека предоставляет базовый набор инструментов для конфигурации нейросетей и их обучения. Наибольшее признание Theano получила в задачах машинного обучения при решении задач оптимизации. Библиотека позволяет использовать возможности GPU без изменения кода программы, что делает ее незаменимой при выполнении ресурсоемких задач.

Возможности библиотеки:

  • тесная интеграция с NumPy;
  • прозрачное использование GPU;
  • эффективное дифференцирование переменных;
  • быстрая и стабильная оптимизация;
  • динамическая генерация кода на C;
  • расширенные возможности юнит-тестирования и самопроверок;

Github

           9. TensorFlow (коммиты: 19862, контрибьюторы: 956)

Проект TensorFlow масштабнее, чем вам может показаться. Тот факт, что это библиотека для глубинного обучения, и его связь с Гуглом помогли проекту TensorFlow привлечь много внимания. Но если забыть про ажиотаж, некоторые его уникальные детали заслуживают более глубокого изучения:

  • Основная библиотека подходит для широкого семейства техник машинного обучения, а не только для глубинного обучения.
  • Линейная алгебра и другие внутренности хорошо видны снаружи.
  • В дополнение к основной функциональности машинного обучения, TensorFlow также включает собственную систему логирования, собственный интерактивный визуализатор логов и даже мощную архитектуру по доставке данных.
  • Модель исполнения TensorFlow отличается от scikit-learn языка Python и от большинства инструментов в R.

Проекты на TensorFlow

Github

           10. Keras (коммиты: 3745, контрибьюторы: 493)

Keras – это библиотека, позволяющая на более высоком уровне работать с нейросетями. Она упрощает множество задач, используется в быстрых экспериментах и сильно уменьшает количество однообразного кода. В качестве бекендной библиотеки для вычислений keras может использовать theano и tenzorfow.

Изначально Keras вырос как удобная надстройка над Theano. Отсюда и его греческое имя — κέρας, что значит “рог” по-гречески, что, в свою очередь, является отсылкой к Одиссее Гомера. Хотя, с тех пор утекло много воды, и Keras стал сначала поддерживать Tensorflow, а потом и вовсе стал его частью. Впрочем, наш рассказ будет посвящен не сложной судьбе этого фреймворка, а его возможностям. Если вам интересно, добро пожаловать под кат.

Проекты на Keras

Github

Статистика Google Trends

История запросов на GitHub


Изучайте верстку на примере создания реального сайта на канале: продвинутая верстка реального сайта от А до Я


Обработка естественного языка

           11. NLTK (коммиты: 12629, контрибьюторы: 201)

Библиотека NLTK, или NLTK — пакет библиотек и программ для символьной и статистической обработки естественного языка, написанных на языке программирования Python. Содержит графические представления и примеры данных. Сопровождается обширной документацией, включая книгу с объяснением основных концепций, стоящих за теми задачами обработки естественного языка, которые можно выполнять с помощью данного пакета.

NLTK хорошо подходит для студентов, изучающих компьютерную лингвистику или близкие предметы, такие как эмпирическая лингвистика, когнитивистика, искусственный интеллект, информационный поиск и машинное обучение. NLTK с успехом используется в качестве учебного пособия, в качестве инструмента индивидуального обучения и в качестве платформы для прототипирования и создания научно-исследовательских систем.

Проекты на NumPy

Github

           12. Gensim (коммиты: 2878, контрибьюторы: 179)

Python-библиотека Gensim — популярный инструмент для автоматической обработки языка, основанный на машинном обучении и используемый как коммерческими компаниями, так и академическими исследователями. В Gensim реализованы алгоритмы дистрибутивной семантики word2vec и doc2vec, он позволяет решать задачи тематического моделирования (topic modeling) и выделять основные темы текста или документа.

Целевая аудитория является обработка естественного языка (НЛП) и IR сообщество. В Gensim реализованы популярные алгоритмы НЛП.

Например, word2vec. Большинство реализаций алгоритмов умеет использовать несколько ядер.

Github

Статистика Google Trends

История запросов на GitHub

Data Mining

           13. Scrapy (коммиты: 6409, контрибьюторы: 251)

Scrapy – одна из наиболее популярных и производительных библиотек Python для получения данных с веб-страниц, которая включает в себя большинство общих функциональных возможностей. Это значит, что вам не придётся самостоятельно прописывать многие функции. Scrapy позволяет быстро и без труда создать «веб-паука».

Пакет Scrapy (как и большинство других пакетов Python) можно найти в PyPI (Python Package Index, также известен как pip) – это поддерживаемый сообществом репозиторий для всех вышедших пакетов Python.

Проекты на NumPy

Github


Рекомендуем к прочтению: Upwork: вывод средств. Как вывести средства с международной биржи труда в России и Украине?


Изучайте веб разработку, с помощью онлайн уроков, каждый понедельник и среду в 20:00, на канале: Быстрый старт в веб-разработке (на странице проекта доступны записи всех уроков).


Dr. Michael J. Garbade

I, Dr. Michael J. Garbade is the co-founder of the Education Ecosystem (aka LiveEdu), ex-Amazon, GE, Rebate Networks, Y-combinator. Python, Django, and DevOps Engineer. Serial Entrepreneur. Experienced in raising venture funding. I speak English and German as mother tongues. I have a Masters in Business Administration and Physics, and a Ph.D. in Venture Capital Financing. Currently, I am the Project Lead on the community project -Nationalcoronalvirus Hotline I write subject matter expert technical and business articles in leading blogs like Opensource.com, Dzone.com, Cybrary, Businessinsider, Entrepreneur.com, TechinAsia, Coindesk, and Cointelegraph. I am a frequent speaker and panelist at tech and blockchain conferences around the globe. I serve as a start-up mentor at Axel Springer Accelerator, NY Edtech Accelerator, Seedstars, and Learnlaunch Accelerator. I love hackathons and often serve as a technical judge on hackathon panels.

Recent Posts

Blockchain in Elections: A Leap Toward Transparent Democracy

In 2024 we're witnessing a critical point in democratic technology: the integration of blockchain and…

3 weeks ago

Win Big with Our Amazon Fire Max 11 & AirPods Pro Giveaway!

We’re thrilled to announce an exciting opportunity for you to win not one but two…

2 months ago

Unleashing Potential: How Education Ecosystem Transforms Learning into Real-World Success

Acquiring practical skills is crucial for career advancement and personal growth. Education Ecosystem stands out…

4 months ago

The Role of Artificial Intelligence in Modern Software Development

Artificial Intelligence (AI) has been making significant strides in various industries, and the software development…

7 months ago

Highest Stable Coin Yields – (W16 – 2024)

Another week to bring you the top yield platforms for three of the most prominent…

8 months ago

LEDU Token OTC Trading

If you hold a large volume of LEDU tokens above 1 million units and wish…

9 months ago