Python для Data Science: 8 понятий, которые важно помнить

В последнее время использование Python для Data Science стало популярным, и мы подготовили памятку с темами, которые полезно знать.

Затрагиваемые понятия и техники будут сопровождаться коротким описанием и по необходимости видеороликами для получения дополнительного опыта.

Однострочные списки

Работа со списками (например, в цикле for) скучна и утомительна, но Python имеет встроенный инструмент для решения этой проблемы всего в одну строку. Чтобы лучше понять синтаксис, рассмотрите пример:

one-line list

И еще один пример – сравнительный анализ сразу двух способов (с циклом и без):

x = [1,2,3,4]
out = []
for item in x:
    out.append(item**2)
print(out)
[1, 4, 9, 16]
# vs.
x = [1,2,3,4]
out = [item**2 for item in x]
print(out)
[1, 4, 9, 16]

Лямбда-выражения

Инструменты Python

Если вам надоело создавать функции для операции, которая выполнится всего один раз – используйте лямбда-выражения. Эти функции широко используются в Python для Data Science при создании одноразовых, маленьких и анонимных объектов. “Лямбды”  зачастую выглядят меньше, они понятнее и позволяют создать функцию, не создавая ее.

lambda arguments: expression

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

double = lambda x: x * 2
print(double(5))
10

Если что-то не понятно, рекомендуем посмотреть видео для закрепления.

https://www.youtube.com/watch?v=25ovCm9jKfA

Карты и фильтры

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

# Map
seq = [1, 2, 3, 4, 5]
result = list(map(lambda var: var*2, seq))
print(result)
[2, 4, 6, 8, 10]

Работа функции фильтра схожа с картой: она принимает список и правило, но возвращает новое множество исходного списка, сравнивая каждый элемент с булевым правилом фильтрации.

# Filter
seq = [1, 2, 3, 4, 5]
result = list(filter(lambda x: x > 2, seq))
print(result)
[3, 4, 5]

И снова видео для лучшего понимания:

https://www.youtube.com/watch?v=cKlnR-CB3tk

arange и linspace

Для создания быстрых и простых массивов NumPy еще не придумали ничего лучше, чем функции arrange и linspace. Каждая из них имеет свое конкретное назначение, достоинства и недостатки. Но основная привлекательность (в отличие от range) в том, что они выводят массивы NumPy, с которыми обычно легче работать Data Science.

arrange возвращает равномерно расположенные значения в пределах заданного интервала. Кроме начальной и конечной точек, можно определить размер шага или тип данных.

# np.arange(start, stop, step)
np.arange(3, 7, 2)
array([3, 5])

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

Это особенно полезно для визуализации данных и объявления осей при построении графика – в Python для Data Science пригодится точность чисел с плавающей запятой.
# np.linspace(start, stop, num)
np.linspace(2.0, 3.0, num=5)
array([ 2.0,  2.25,  2.5,  2.75, 3.0])

Что такое axis?

Python для Data Science

Возможно, вы сталкивались с этим при удалении столбцов в Pandas или при суммировании значений в матрице NumPy. Если нет, то давайте пока воспользуемся примером удаления столбца:

df.drop('Column A', axis=1)
df.drop('Row A', axis=0)

Параметр axis используется для указания на то, с чем вы хотите работать:

  • 1 – столбец;
  • 0 – строка.

Тема непростая, поэтому вот видео для закрепления:

https://www.youtube.com/watch?v=PtO3t6ynH-8

concat, merge и join

Направление Python для Data Science очень тесно связано с огромными массивами данных, и Pandas очень помогает в этом. Если вы знакомы с SQL, то эти понятия будут для вас более понятными. Данные функции являются способами объединения. Может казаться сложным для понимания, какой метод лучше всего использовать и в каком случае, поэтому давайте их рассмотрим.

concat позволяет пользователю добавлять один или несколько фреймов данных ниже или рядом с ним (в зависимости от того, как вы определяете ось).

3

merge объединяет несколько фреймов данных в общих столбцах, которые служат первичным ключом.

2

join, как и merge, объединяет два фрейма данных, но соединяет он их на основании их индексов, а не по указанному столбцу.

1

Вот официальный мануал по Pandas в качестве “домашнего задания” и еще один ролик:

https://www.youtube.com/watch?v=XMjSGGej9y8

Использование apply в Pandas

Думайте об apply как о функции карты, но для фреймов Pandas или для рядов. Ряды очень сильно похожи на массивы NumPy. apply применяет функцию к каждому элементу столбца или строки в зависимости от того, что вы укажете. Это может быть полезно при форматировании и обработке значений по всему столбцу DataFrame, без использования цикла.

https://www.youtube.com/watch?v=P_q0tkYqvSk

Сводные таблицы

И напоследок не менее важное – сводные таблицы. Они похожи на одноименные таблицы в Microsoft Excel. Сводная таблица принимает на вход данные из отдельных столбцов и переводит все в многомерное представление. Встроенная в Pandas функция pivot_table создает сводную таблицу в виде электронной таблицы.

Вот немного теории и видео:

https://www.youtube.com/watch?v=xPPs59pn6qU

Оригинал

Другие материалы по теме:

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Оператор 1C
Краснодар, от 25000 RUB до 40000 RUB
Project Manager
Москва, по итогам собеседования
Разработчик Python
Москва, от 187000 RUB до 338000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ