Найти в Дзене
Big Lebowski

Топ 3 функции Pandas для ежедневной аналитики

Что хитрого может предложить самая популярная библиотека анализа данных. Пандас - одна из самых популярных библиотек по анализу данных, без всякого сомнения. Она существует уже достаточно давно и включает в себя множество функций экономии времени и нервов. Сегодня мы рассмотрим 3 из них. Подготовительные шаги минимальны, так как нам нужно только импортировать библиотеку Pandas и набор данных: import pandas as pd
df = pd.read_csv(‘https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv') и все. Без лишних слов давайте начнем с первой функции! 1. apply() Функция apply() позволяет, скажем так, применять предопределенную или анонимную функцию к конкретному столбцу. Анонимные или лямбда-функции отлично подходят, когда нет целой кучи логики, которую вы бы хотели выполнить, так как лямбды могут очень быстро стать очень неопрятными. Мы хотим извлечь заголовки из атрибута Name. Название можно найти после первой запятой, и до первой точки. Это все, что нам нужно знать. Вот

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

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

Подготовительные шаги минимальны, так как нам нужно только импортировать библиотеку Pandas и набор данных:

import pandas as pd
df = pd.read_csv(‘
https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv')

и все. Без лишних слов давайте начнем с первой функции!

1. apply()

Функция apply() позволяет, скажем так, применять предопределенную или анонимную функцию к конкретному столбцу. Анонимные или лямбда-функции отлично подходят, когда нет целой кучи логики, которую вы бы хотели выполнить, так как лямбды могут очень быстро стать очень неопрятными.

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

Вот как подойти к проблеме, если вы выберете предопределенную функцию:

def extract_title(string):
string = string.split(‘,’)[-1]
string = string.strip()
string = string.split(‘.’)[0]
return stringtitles = df[‘Name’].apply(extract_title)

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

Подход с анонимными функциями следующий, и это одна строка:

titles = df[‘Name’].apply(lambda x: x.split(‘,’)[-1].strip().split(‘.’)[0])

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

И вот как выглядят первые пары названий:

-2

Теперь вы можете использовать этот расчетный столбец, чтобы посмотреть, имеет ли название какое-то значение для шансов на выживание и использование.

2. value_counts()

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

Мы можем вызвать функцию серии title:

titles.value_counts()

Теперь вы можете создать бинарный атрибут со значением 1, если заголовок необычный (скажем, Dr, Rev, Mlle и другие) и 0 в противном случае (Mr, Miss, Mrs) и выполнить некоторый дальнейший анализ.

-3

Что мне нравится делать, так это смотреть на проценты вместо сырых чисел. Это довольно легко сделать:

titles.value_counts(normalize=True) * 100

И это довольно нужная, простая и понятная функция.

3. get_dummies()

Функция get_dummies() используется для преобразования категориальных столбцов в фиктивные переменные - 0 или 1. Это полезно, так как нельзя подавать строковые категории в модель машинного обучения - значения должны быть числовыми.

Эту операцию мы выполним на столбце Embarked, имеющем 3 значения и указывающем на то, в какой порт отправился пассажир на корабле.

Посмотрим, что произойдет по умолчанию:

emb = pd.get_dummies(df[‘Embarked’])
-4

Не самые описательные названия столбцов, должен признать. К счастью, это легко исправить:

emb = pd.get_dummies(df[‘Embarked’], prefix=’Embarked’)
-5

Теперь все немного лучше. Не идеально, так как у нас проблемы с коллинеарностью. Нам не нужны 3 колонки, чтобы знать, в какой порт вошёл пассажир. Просто посмотрите на первый ряд - значения для C и Q равны 0, что говорит о том, что пассажир вышел в порт S (Саутгемптон).

Есть быстрое решение этой проблемы:

emb = pd.get_dummies(df[‘Embarked’], prefix=’Embarked’, drop_first=True)
-6

Указание значения drop_first как True решает проблему коллинеарности. Теперь вы можете скомпоновать этот DataFrame с исходным и продолжить анализ.

Перед тем, как уйти

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

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

Спасибо за чтение.