Библиотеки Python для data science

в Python, Анализ данных, Наука о данных (Data Science)

Полезные библиотеки Python для data science

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

В подготовке материала помогали:

Для удобства разделили библиотеки на четыре вида:

  • Основные
  • Для работы с данными
  • Для интеллектуального анализа и обработки естественного языка
  • Для визуализации

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

Это список базовых библиотек, которые делают из языка программирования Python мощный и надежный инструмент для анализа и визуализации данных. На них основываются более специализированные библиотеки. Иногда их называют набором SciPy.

Jupyter

Интерактивная оболочка для языка программирования Python. Она предоставляет расширенную интроспекцию и дополнительный командный синтаксис; сохраняет историю ввода во всех сеансах, подсвечивает и автоматически дополняет код. Если вы когда-либо пользовались Mathematica или MATLAB, то разберетесь и в Jupyter.

Веб-интерфейс отлично подходит для исследования и первичной обработки данных, тестирования первых версий кода и пошаговой отладки. Используя язык разметки markdown и библиотеки для визуализации, можно формировать аналитические отчеты прямо в браузере. Или преобразовать отчет в слайды HTML-презентации.

С помощью Jupyterhub можно настроить совместную работу команды на сервере с корпоративной авторизацией. Пример небольшого анализа данных в браузере:

Пример использования библиотеки Python - IPython

2-й пример использования библиотеки Python - IPython

3-й пример использования библиотеки Python - IPython

Pandas

Библиотека предоставляет структуры данных и инструменты для анализа. Хороша в обработке неполных, неупорядоченных и немаркированных данных (как раз такие чаще всего и встречаются в жизни).

Pandas позволяет заменить довольно сложные операции с данными на одну-две команды. Содержит много готовых методов группировки, фильтрации, объединения данных, а также возможность распознавания разных типов источников.

В библиотеке можно объединять таблицы по аналогии с SQL JOIN. При этом данные берутся прямо из файлов, благодаря чему отпадает необходимость в организации баз данных.

Еще одна особенность Pandas — cкорость работы. Например, чтобы сгруппировать данные таблицы в 10 млн. строк, подсчитать средний чек и отсортировать результаты по убыванию, понадобится одна строчка кода и меньше пяти секунд:

Загрузка данных в dataframe в библиотеке Python - Pandas

работа в Pandas - библиотеке Python

Работа в Pandas (2) - библиотеке Python

NumPy

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

Библиотека Python - NumPy - пример системы уравнений

Чтобы ее решить, достаточно воспользоваться методом lialg.solve:

import numpy as np

left = np.array( [ [1, 3], [2, -4] ] )

right = np.array( [9, 8] )

np.linalg.solve(left, right)

Ответ: array([6., 1.])

SciPy

Библиотека основывается на NumPy и расширяет ее возможности. Включает методы линейной алгебры и методы для работы с вероятностными распределениями, интегральным исчислением и преобразованиями Фурье. Например, для проведения T-теста двух выборок достаточно вызвать метод ttest_ind: stats.ttest_ind( data_list_1, data_list_2 ).  SciPy похожа на Matlab и понимает формат mat.

Matplotlib

Низкоуровневая библиотека для создания двумерных диаграмм и графиков. С ее помощью можно построить любой график. Однако для сложной визуализации потребуется больше кода, чем в продвинутых библиотеках. Примеры визуализации:

Библиотеки Pandas. Пример визуализации на Matplotlib

Используемый код:

import matplotlib.pyplot as plt
import numpy as np

t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2*np.pi*t)
plt.plot(t, s)

plt.xlabel(‘time (s)’)
plt.ylabel(‘voltage (mV)’)
plt.title(‘About as simple as it gets, folks’)
plt.grid(True)
plt.savefig(«test.png»)
plt.show()

Библиотеки Python для работы с данными

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

Scikit-learn

Основывается на NumPy и SciPy. Предоставляет алгоритмы для машинного обучения и интеллектуального анализа данных: кластеризации, регрессии и классификации. Одна из самых лучших библиотек для компаний, работающих с огромным объемом данных. Ее используют Evernote, OKCupid, Spotify и Birchbox.

Theano

Библиотека используется для оценки и улучшения математических выражений. Синтаксис, как и в NumPy. Проводит необходимые расчеты с большим объемом данных в 100 раз быстрее, чем CPU, так как использует GPU. За это и ценится теми, кто занимается глубоким обучением и сталкивается с вычислительными задачами.

TensorFlow

Библиотека создана Google на замену DistBelief — фреймворк для обучения нейронных сетей. Используется для настройки, тренировки и применения искусственных нейронных сетей с многочисленными наборами данных. Благодаря этой библиотеке Google может определять объекты на фотографиях, а приложение для распознавания голоса — понимать речь.

Библиотеки Python для интеллектуального анализа и обработки естественного языка

Это список библиотек, которые используются для извлечения данных из интернет-ресурсов и обработки естественного языка.

Scrapy

Используется для создания ботов-пауков, которые сканируют страницы сайтов и собирают структурированные данные: цены, контактную информацию и URL-адреса. Кроме этого, Scrapy может извлекать данные из API.

NLTK

Набор библиотек для обработки естественного языка. Основные функции: разметка текста, определение именованных объектов, отображение синтаксического дерева, раскрывающего части речи и зависимости. Используется для анализа тональности и автоматического обобщения. В наборе есть книга, посвященная анализу текста.

Pattern

Сочетает функциональность Scrapy и NLTK и предназначен для извлечения данных в интернете, естественной обработки языка, машинного обучения и анализа социальных сетей. Среди его инструментов есть поисковик, API для Google, Twitter и Wikipedia и алгоритмы текстового анализа, которые могут выполняться несколькими строками кода.

Библиотеки Python для визуализации

Это список библиотек, которые пригодятся в визуализации данных и построении графиков.

Seaborn

Библиотека более высокого уровня, чем matplotlib. С ее помощью проще создавать специфическую визуализацию: карты тепла, временные ряды и скрипичные диаграммы. Примеры визуализации:

Библиотеки Python: Пример визуализации на Seaborn

Скрипичная диаграмма

Используемый код:

import seaborn as sns
sns.set(style=»whitegrid», palette=»pastel», color_codes=True)

# Load the example tips dataset
tips = sns.load_dataset(«tips»)

# Draw a nested violinplot and split the violins for easier comparison
sns.violinplot(x=»day», y=»total_bill», hue=»sex», data=tips, split=True,
inner=»quart», palette={«Male»: «b», «Female»: «y»})
sns.despine(left=True)

Bokeh

Создает интерактивные и масштабируемые графики в браузерах, используя виджеты JavaScript. Имеет три уровня интерфейса, от высокого, который позволяет быстро создавать сложные графики, до низкого. Примеры визуализации:

Библиотеки Python. Пример визуализации на Bokeh

Используемый код:

import numpy as np

from bokeh.layouts import gridplot
from bokeh.plotting import figure, show, output_file

x = np.linspace(0, 4*np.pi, 100)
y = np.sin(x)

TOOLS = «pan,wheel_zoom,box_zoom,reset,save,box_select»

p1 = figure(title=»Legend Example», tools=TOOLS)

p1.circle(x,   y, legend=»sin(x)»)
p1.circle(x, 2*y, legend=»2*sin(x)», color=»orange»)
p1.circle(x, 3*y, legend=»3*sin(x)», color=»green»)

p2 = figure(title=»Another Legend Example», tools=TOOLS)

p2.circle(x, y, legend=»sin(x)»)
p2.line(x, y, legend=»sin(x)»)

p2.line(x, 2*y, legend=»2*sin(x)», line_dash=(4, 4), line_color=»orange», line_width=2)

p2.square(x, 3*y, legend=»3*sin(x)», fill_color=None, line_color=»green»)
p2.line(x, 3*y, legend=»3*sin(x)», line_color=»green»)

output_file(«legend.html», title=»legend.py example»)

show(gridplot(p1, p2, ncols=2, plot_width=400, plot_height=400))  # open a browser

Basemap

Используется для создания карт. На ее основе сделана библиотека Folium, с помощью которой создают интерактивные карты в интернете. Примеры визуализации, созданной с помощью Folium и Basemap:

Библиотеки Python. Пример визуализации на Basemap

Карта, созданная с помощью Basemap

Используемый код:

import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from datetime import datetime

# miller projection
map = Basemap(projection=’mill’,lon_0=180)

# plot coastlines, draw label meridians and parallels.
map.drawcoastlines()
map.drawparallels(np.arange(-90,90,30),labels=[1,0,0,0])
map.drawmeridians(np.arange(map.lonmin,map.lonmax+30,60),labels=[0,0,0,1])

# fill continents ‘coral’ (with zorder=0), color wet areas ‘aqua’
map.drawmapboundary(fill_color=’aqua’)
map.fillcontinents(color=’coral’,lake_color=’aqua’)

# shade the night areas, with alpha transparency so the
# map shows through. Use current time in UTC.
date = datetime.utcnow()
CS=map.nightshade(date)
plt.title(‘Day/Night Map for %s (UTC)’ % date.strftime(«%d %b %Y %H:%M:%S»))
plt.show()

NetworkX

Используется для создания и анализа графов и сетевых структур. Предназначен для работы со стандартными и нестандартными форматами данных. Примеры визуализации:

Библиотеки Python. Пример визуализации на NetworkX

Используемый код:

# Author: Aric Hagberg (hagberg@lanl.gov)

#    Copyright (C) 2004-2018 by
#    Aric Hagberg <hagberg@lanl.gov>
#    Dan Schult <dschult@colgate.edu>
#    Pieter Swart <swart@lanl.gov>
#    All rights reserved.
#    BSD license.

import sys

import matplotlib.pyplot as plt
import networkx as nx

G = nx.grid_2d_graph(5, 5)  # 5×5 grid
try:  # Python 2.6+
nx.write_adjlist(G, sys.stdout)  # write adjacency list to screen
except TypeError:  # Python 3.x
nx.write_adjlist(G, sys.stdout.buffer)  # write adjacency list to screen
# write edgelist to grid.edgelist
nx. write_edgelist(G, path=»grid.edgelist», delimiter=»:»)
# read edgelist from grid.edgelist
H = nx.read_edgelist(path=»grid.edgelist», delimiter=»:»)

nx.draw(H)
plt.show()

Эти библиотеки Python лишь малая часть того, что имеется. Будем признательны, если дополните список в комментариях.

Адаптированный перевод статьи 15 Python Libraries for Data Science

Поделиться: