Что такое data science в python
Python для Data Science: 8 понятий, которые важно помнить
В последнее время использование Python для Data Science стало популярным, и мы подготовили памятку с темами, которые полезно знать.
Затрагиваемые понятия и техники будут сопровождаться коротким описанием и по необходимости видеороликами для получения дополнительного опыта.
Однострочные списки
Работа со списками (например, в цикле for) скучна и утомительна, но Python имеет встроенный инструмент для решения этой проблемы всего в одну строку. Чтобы лучше понять синтаксис, рассмотрите пример:
И еще один пример – сравнительный анализ сразу двух способов (с циклом и без):
Лямбда-выражения
Если вам надоело создавать функции для операции, которая выполнится всего один раз – используйте лямбда-выражения. Эти функции широко используются в Python для Data Science при создании одноразовых, маленьких и анонимных объектов. “Лямбды” зачастую выглядят меньше, они понятнее и позволяют создать функцию, не создавая ее.
Лямбда-выражения могут делать все, что могут делать обычные функции, даже если они состоят всего из одного выражения.
Если что-то не понятно, рекомендуем посмотреть видео для закрепления.
Карты и фильтры
В дополнение к лямбда-выражениям вам нужно уметь оперировать картами и фильтрами. Map может принимать список и преобразовывать его в новый список, выполняя какую-то операцию над каждым элементом. В примере ниже производятся операции с каждым элементом, а в новый список кладутся значения, умноженные на два.
Работа функции фильтра схожа с картой: она принимает список и правило, но возвращает новое множество исходного списка, сравнивая каждый элемент с булевым правилом фильтрации.
И снова видео для лучшего понимания:
arange и linspace
Для создания быстрых и простых массивов NumPy еще не придумали ничего лучше, чем функции arrange и linspace. Каждая из них имеет свое конкретное назначение, достоинства и недостатки. Но основная привлекательность (в отличие от range) в том, что они выводят массивы NumPy, с которыми обычно легче работать Data Science.
arrange возвращает равномерно расположенные значения в пределах заданного интервала. Кроме начальной и конечной точек, можно определить размер шага или тип данных.
linspace очень похож на arrange, но с небольшим отличием. linspace возвращает равномерно расположенные числа в пределах заданного интервала, но вместо шага используется количество выводимых элементов. Таким образом, учитывая начальную и конечную точки, а также ряд значений, linspace равномерно распределит их в массиве NumPy.
Это особенно полезно для визуализации данных и объявления осей при построении графика – в Python для Data Science пригодится точность чисел с плавающей запятой.
Что такое axis?
Возможно, вы сталкивались с этим при удалении столбцов в Pandas или при суммировании значений в матрице NumPy. Если нет, то давайте пока воспользуемся примером удаления столбца:
Параметр axis используется для указания на то, с чем вы хотите работать:
Тема непростая, поэтому вот видео для закрепления:
concat, merge и join
Направление Python для Data Science очень тесно связано с огромными массивами данных, и Pandas очень помогает в этом. Если вы знакомы с SQL, то эти понятия будут для вас более понятными. Данные функции являются способами объединения. Может казаться сложным для понимания, какой метод лучше всего использовать и в каком случае, поэтому давайте их рассмотрим.
concat позволяет пользователю добавлять один или несколько фреймов данных ниже или рядом с ним (в зависимости от того, как вы определяете ось).
merge объединяет несколько фреймов данных в общих столбцах, которые служат первичным ключом.
join, как и merge, объединяет два фрейма данных, но соединяет он их на основании их индексов, а не по указанному столбцу.
Вот официальный мануал по Pandas в качестве “домашнего задания” и еще один ролик:
Использование apply в Pandas
Думайте об apply как о функции карты, но для фреймов Pandas или для рядов. Ряды очень сильно похожи на массивы NumPy. apply применяет функцию к каждому элементу столбца или строки в зависимости от того, что вы укажете. Это может быть полезно при форматировании и обработке значений по всему столбцу DataFrame, без использования цикла.
Сводные таблицы
И напоследок не менее важное – сводные таблицы. Они похожи на одноименные таблицы в Microsoft Excel. Сводная таблица принимает на вход данные из отдельных столбцов и переводит все в многомерное представление. Встроенная в Pandas функция pivot_table создает сводную таблицу в виде электронной таблицы.
15 библиотек Python для Data Science
Эксперт в Frontend, Data Science. Ментор, автор курсов в SkillFactory.
Язык Python часто применяется в Data Science, потому что, во-первых, по сравнению с другими языками код для сложных задач на Python проще и короче. А во-вторых, есть много мощных прикладных библиотек для решения разных задач: первичной обработки и анализа данных, обработки естественного языка и визуализации. Эта подборка будет полезна аналитикам данных, математикам и тем, кто занимается Data Science на разных уровнях. Составить ее нам помогли эксперты Константин Башевой (старший аналитик «Ростелеком»), Петр Ермаков (руководитель отдела аналитики в Mail.ru) и Анна Агабекян (ментор курса SkillFactory).
Библиотеки Python — это файлы с шаблонами кода. Их придумали для того, чтобы людям не приходилось каждый раз заново набирать один и тот же код: они просто открывают файл, вставляют свои данные и получают нужный результат. В этом материале вы найдете описание библиотек, которые используются чаще всего для анализа данных на Python.
Основные библиотеки Python
Вот базовые библиотеки, которые делают из языка программирования Python инструмент для анализа и визуализации данных. Иногда их называют SciPy Stack. На них основываются более специализированные библиотеки.
Jupyter
Интерактивная оболочка для языка Python. В ней есть дополнительный командный синтаксис; она сохраняет историю ввода во всех сеансах, подсвечивает и автоматически дополняет код. Если вы когда-либо пользовались Mathematica или MATLAB, то разберетесь и в Jupyter.
Интерфейс библиотеки подходит для исследования и первичной обработки данных, тестирования первых версий кода и его улучшения. Используя язык разметки Markdown для форматирования текста и библиотеки для визуализации, можно формировать аналитические отчеты в браузере или преобразовать отчет в презентацию. С помощью JupyterHub можно настроить совместную работу команды на сервере.
Пример небольшого анализа данных в браузере:
NumPy
NumPy — основная библиотека Python, которая упрощает работу с векторами и матрицами. Содержит готовые методы для разных математических операций: от создания, изменения формы, умножения и расчета детерминанта матриц до решения линейных уравнений и сингулярного разложения. Например, возьмем такую систему уравнений:
Чтобы ее решить, достаточно воспользоваться методом lialg.solve:
SciPy
Библиотека SciPy основывается на NumPy и расширяет ее возможности. SciPy похожа на Matlab. Включает методы линейной алгебры и методы для работы с вероятностными распределениями, интегральным исчислением и преобразованиями Фурье. Пример расчета определителя двумерной матрицы:
from scipy import linalg
import numpy as np
#define square matrix
two_d_array = np.array([ [4,5], [3,2] ])
#pass values to det() function
linalg.det( two_d_array )
Matplotlib
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 для анализа данных, Machine Learning и обучения сложных нейронных сетей.
Scikit-learn
Scikit-learn основана на NumPy и SciPy. В ней есть алгоритмы для машинного обучения и интеллектуального анализа данных: кластеризации, регрессии и классификации. Это одна из самых лучших библиотек для компаний, работающих с огромным объемом данных — ее используют Evernote, OKCupid, Spotify и Birchbox.
Пример визуализации частичной зависимости стоимости домов в Калифорнии в зависимости от особенностей местности:
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import fetch_california_housing
from sklearn.inspection import plot_partial_dependence
X, y = fetch_california_housing(return_X_y=True, as_frame=True)
features = [‘MedInc’, ‘AveOccup’, ‘HouseAge’, ‘AveRooms’]
est = RandomForestRegressor(n_estimators=10)
est.fit(X, y)
display = plot_partial_dependence(
est, X, features, kind=»individual», subsample=50,
n_jobs=3, grid_resolution=20, random_state=0
)
display.figure_.suptitle(
‘Partial dependence of house value on non-location features\n’
‘for the California housing dataset, with BayesianRidge’
)
display.figure_.subplots_adjust(hspace=0.3)
TensorFlow
Библиотеку создали в Google, чтобы заменить DistBelief — фреймворк для обучения, настройки и тренировки нейронных сетей. Благодаря этой библиотеке Google может определять объекты на фотографиях, а приложение для распознавания голоса — понимать речь.
Пример архитектуры сверточной нейронной сети:
Model: «sequential»
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 30, 30, 32) 896
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense (Dense) (None, 64) 65600
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________
Keras
Библиотека глубокого обучения. Благодаря модульности и масштабированию она позволяет легко и быстро создавать прототипы. Keras поддерживает как сверточные и рекуррентные сети, так и их комбинации.
Пример кода обучения модели по классификации изображений:
epochs = 50
callbacks = [
keras.callbacks.ModelCheckpoint(«save_at_
]
model.compile(
optimizer=keras.optimizers.Adam(1e-3),
loss=»binary_crossentropy»,
metrics=[«accuracy»],
)
model.fit(
train_ds, epochs=epochs, callbacks=callbacks, validation_data=val_ds,
)
Библиотеки для интеллектуального анализа и обработки естественного языка
Полезные иблиотеки для работы с текстом, которые используются для извлечения данных из интернет-ресурсов и обработки естественного языка.
Scrapy
Библиотека используется для создания ботов-пауков, которые сканируют страницы сайтов и собирают структурированные данные: цены, контактную информацию и URL-адреса. Кроме этого, Scrapy может извлекать данные из API.
Пример кода для создания бота-паука:
NLTK (Natural Language Toolkit)
Набор библиотек для обработки естественного языка. Основные функции: разметка текста, определение именованных объектов, отображение синтаксического дерева, раскрывающего части речи и зависимости. Например, так выглядит обучение классификатора, который будет определять тональность текста:
>>> trainer = NaiveBayesClassifier.train
>>> classifier = sentim_analyzer.train(trainer, training_set)
Training classifier
>>> for key,value in sorted(sentim_analyzer.evaluate(test_set).items()):
… print(‘<0>: <1>’.format(key, value))
Evaluating NaiveBayesClassifier results…
Accuracy: 0.8
F-measure [obj]: 0.8
F-measure [subj]: 0.8
Precision [obj]: 0.8
Precision [subj]: 0.8
Recall [obj]: 0.8
Recall [subj]: 0.8
Pattern
Сочетает функциональность Scrapy и NLTK и предназначена для извлечения данных в интернете, естественной обработки языка, машинного обучения и анализа социальных сетей. Среди инструментов есть поисковик, API для Google, Twitter и Wikipedia и алгоритмы текстового анализа, которые могут выполняться несколькими строками кода.
Python-пакеты для Data Science
Python — это один из самых распространённых языков программирования. Хотя стандартные возможности Python достаточно скромны, существует огромное количество пакетов, которые позволяют решать с помощью этого языка самые разные задачи. Пожалуй, именно поэтому Python и пользуется такой популярностью среди программистов. Можно наугад назвать какую-нибудь сферу деятельности и в экосистеме Python, почти гарантированно, найдутся отличные инструменты для решения специфических задач из этой сферы. В наше время весьма востребованы наука о данных (Data Science, DS) и машинное обучение (Machine Learning, ML). И там и там Python показывает себя наилучшим образом.
Помимо Python в DS-проектах часто используют язык программирования R. R быстрее Python и имеет больше статистических и вычислительных библиотек. Но в этом материале мы будем говорить исключительно о библиотеках (пакетах) для Python, о которых стоит знать каждому, кто хочет добраться до профессиональных вершин Data Science.
Прежде чем переходить к обзору библиотек, остановимся на том, что это такое — «наука о данных», и на том, почему в этой сфере стоит пользоваться языком Python.
Обзор Data Science
В наши дни данные в бизнесе ценятся буквально на вес золота. Мы живём во времена больших данных, каждую секунду в мире появляются огромные объёмы информации. Крупные организации пользуются этими данными ради укрепления и расширения своего бизнеса.
Применяя DS и другие подобных технологии, мы извлекаем из данных ценные сведения, которые позволяют решать сложные реальные задачи и строить прогнозные модели. Data Science — это не инструмент или технология. Это — навык, который можно развить, освоив некоторые инструменты и программные пакеты.
Почему Python используется в сфере Data Science?
Python считается одним из ведущих языков программирования, используемых для построения DS- и ML-моделей.
Обсудим основные причины, по которым разработчики и дата-сайентисты предпочитают использовать в своих проектах Python, а не другие языки программирования.
▍Простота изучения
Это — очевидная причина выбора из множества существующих языков программирования именно Python. В этом языке используется простой и понятный синтаксис, писать Python-код совсем несложно. Этот процесс напоминает написание инструкций на обычном английском языке.
▍Для решения сложных задач требуется писать сравнительно небольшие объёмы кода
Алгоритмы из сфер DS и ML весьма сложны. Поэтому для их реализации желательно использовать такой язык программирования, который позволяет кратко и ёмко выражать идеи разработчика. Python, благодаря его синтаксису и чёткой структуре кода, отлично подходит для решения подобных задач. Это помогает программистам создавать компактные и мощные программы.
▍Библиотеки
Главные ресурсы Python-программиста — это дополнительные библиотеки. Создано множество Python-пакетов, ориентированных на сферу Data Science. В них имеются реализации сложных алгоритмов, что позволяет тем, кому нужны эти алгоритмы, не писать код с нуля.
▍Кроссплатформенность
Python-программы могут работать на различных платформах. В частности — на Windows, Linux, macOS. Код, написанный для некоей платформы, может, без изменений, запускаться на других платформах.
▍Большое сообщество
Вокруг Python сформировалось огромное сообщество. Существует множество онлайн-площадок, на которых разработчики обсуждают возникшие у них проблемы и помогают друг другу в их решении.
Python-пакеты для Data Science
Мы поговорили о том, что такое Data Science, и о том, почему Python популярен в этой сфере. Теперь давайте рассмотрим некоторые полезные Python-пакеты. В частности, речь пойдёт о следующих пакетах:
▍1. NumPy
NumPy — это один из самых широко используемых Python-пакетов. Название пакета, NumPy, расшифровывается как Numerical Python. Здесь реализовано множество вычислительных механизмов, пакет поддерживает специализированные структуры данных, в том числе — одномерные и многомерные массивы, значительно расширяющие возможности Python по выполнению различных вычислений. Возможности структур данных, которые поддерживает Python, уступают возможностям структур данных NumPy.
Особенности NumPy
▍2. SciPy
Пакет SciPy построен на основе NumPy, в нём используются и некоторые другие вспомогательные пакеты. Он широко используется для выполнения статистических расчётов. В SciPy можно работать с теми же данными, что и в NumPy. Поэтому SciPy часто используют для решения задач, которые нельзя решить с использованием стандартных механизмов NumPy. SkiPy — это инструмент, которому доверяет огромное количество учёных во всём мире.
Особенности SciPy
▍3. Pandas
Pandas — это, после NumPy, второй по известности Python-пакет, используемый в Data Science. Его применяют в самых разных местах, например, в сферах статистики, финансов, экономики, анализа данных. Он основан на NumPy, в частности, поддерживает преобразование структур данных NumPy в собственные структуры данных и обратные преобразования. Пакет Pandas часто используют для обработки больших объёмов данных. В ходе обработки данных Pandas прибегает к некоторым возможностям NumPy, в нём применимы и возможности SciPy, например, средства проведения статистических вычислений. Фактически, для проведения DS-вычислений обычно используются все три пакета — Pandas, NumPy и SciPy.
Особенности Pandas
▍4. StatsModels
Пает StatsModels основан на пакетах NumPy и SciPy. Он широко используется для анализа данных, для создания статистических моделей, для выполнения статистических исследований. Данный пакет весьма популярен благодаря своим возможностям в сфере статистических вычислений. Он хорошо интегрируется, например, с Pandas. В других подобных пакетах, в SciPy, например, выполнять статистические вычисления достаточно сложно. StatsModels упрощает решение подобных задач.
Особенности StatsModels
▍5. Matplotlib
Matplotlib — это известнейший Python-пакет для визуализации данных. Его, пожалуй, можно включить в набор основных пакетов, которые нужно освоить тому, кто пользуется Python в сфере Data Science. Он поддерживает множество стандартных средств для визуализации данных, представленных различными графиками и диаграммами.
Этот пакет может работать вместе с другими Python-пакетами, вроде уже известных нам NumPy и SciPy. Он, кроме того, поддерживает API, который позволяет встраивать создаваемые им графические объекты в различные приложения.
Особенности Matplotlib
▍6. Seaborn
Seaborn — это расширение для Matplotlib, которое направлено на то, чтобы сделать графики Matplotlib привлекательнее и упростить создание сложных визуализаций. Этот пакет, кроме того, содержит API, направленный на изучение взаимоотношений между переменными. В целом, Seaborn можно назвать «улучшенным Matplotlib».
Особенности Seaborn
▍7. Plotly
Plotly — это ещё один известный Python-пакет для визуализации данных. Он даёт в наше распоряжение интерактивные графики, позволяющие исследовать взаимоотношения переменных. Plotly, помимо сферы статистики, используется в финансах, в экономике, в науке. Plotly отличается от Matplotlib гораздо более продвинутыми возможностями по построению трёхмерных графиков.
Особенности Plotly
▍8. Bokeh
Bokeh — это пакет, предназначенный для визуализации данных в веб-приложениях. Его можно легко интегрировать с любым Python-фреймворком, с таким, как Flask или Django. Он поддерживает множество видов графиков. Этим пакетом просто и удобно пользоваться. В частности, речь идёт о том, что создавать с его помощью интерактивные графики можно, написав буквально несколько строк кода.
Особенности Bokeh
▍9. Scikit-Learn
Scikit-Learn — это Python-пакет для машинного обучения. Он включает в себя практически всё, что нужно дата-сайентисту. Этот проект появился на мероприятии Google Summer of Code. В нём имеются различные встроенные модули, которые дают возможность работать с множеством популярных алгоритмов машинного обучения. Это, например, алгоритм «случайный лес», алгоритм спектральной кластеризации, алгоритм кросс-валидации, метод k-средних и многие другие. Этот пакет можно использовать для создания моделей машинного обучения с учителем и без учителя.
Особенности Scikit-Learn
▍10. Keras
Keras — это пакет, реализующий механизмы глубокого обучения (Deep Learning, DL), который широко используется при создании нейросетевых моделей. Это — одна из самых мощных опенсорсных Python-библиотек, которая способна работать с самыми разными видами данных, например — с текстами и с изображениями. Существуют и другие надёжные DL-решения, предназначенные для Python-разработчиков, но Keras выгодно отличается от них тем, что упрощает работу со сложными моделями глубокого обучения.
Особенности Keras
Итоги
Все Python-пакеты, о которых мы рассказали, пользуются серьёзной популярностью в среде дата-сайентистов. Есть, конечно, и другие подобные библиотеки. И вам, если вы хотите построить карьеру в сфере Data Science, понадобится разобраться со многими из них, а не только с теми, о которых мы говорили сегодня.
Какими Python-пакетами из сферы Data Science вы пользуетесь чаще всего?