Skip to content

Команды Pandas, которые я часто использую для анализа данных

Пересказ статьи Insufficient. Pandas Commands I Frequently Use to Analyze Data


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

Здесь я буду в качестве примера использовать набор данных по статистике покемонов. Она не самая современная, но все еще используемая! В этой статье я буду называть dataframe сокращенно ‘df’.
Очевидно, что первым шагом является загрузка набора данных в Python, вы можете сделать это с помощью функции ‘read_csv’ из Pandas.

df=pd.read_csv('your path/Pokemon.csv')

Теперь давайте посмотрим на этот набор данных!


Первые 5 строк набора

Данные содержат 13 столбцов (за исключением индексного столбца) - 4 текстовых столбца и 7 числовых.

Теперь давайте пройдемся по некоторым командам Pandas, которые я часто использую.

1. fillna/dropna


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

df.info()



Из результатов видно, что в столбце ‘Type 2’ множество пропущенных данных! Чтобы разобраться с этой проблемой вы можете использовать либо fillna, либо dropna.

Команда fillna заполняет отсутствующие данные тем, что вы укажете.

df.fillna('-')

Эта команда заполняет отсутствующие данные символом '-'. Посмотрим теперь на набор данных:


Результат выполнения fillna

Можно увидеть, что некоторые строки в столбце ‘Type 2’ теперь содержат ‘-’, потому что ранее они не содержали значения.

Другим способом обработки отсутствующих данных является команда dropna. Команда dropna удаляет все строки, которые включают отсутствующие значения.

df.dropna()

Результат выполнения этой команды выглядит так:


Результат выполнения команды dropna

Как видно, эта команда удаляет все строки с отсутствующими данными в столбце ‘Type 2’. Обратите внимание, что фрейм данных теперь содержит только 414 строк, а не исходные 800. Хотя эту команду легко использовать, я не рекомендую этот метод, поскольку вы можете потерять множество полезных данных!

2. Group by


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

df_groupby=df.groupby(['Type 1']).agg(Mean_HP=('HP','mean'))
df_groupby



Эта команда создает новый фрейм данных с именем ‘df_groupby’. Во-первых, нам нужно указать, по какому столбцу вы хотите группировать данные. В нашем случае мы используем столбец ‘Type 1’. Затем нам нужно указать, какой столбец будет обрабатываться. Мы хотим найти среднее (mean) значение столбца HP. После этого мы можем задать имя столбцу, который мы только что создали с помощью функции groupby, у нас это имя ‘Mean_HP’.

Зачем останавливаться на среднем? Эта функция дает возможность вычислять любые виды статистики на вашем фрейме данных:

df_groupby=df.groupby(['Type 1']).agg(Mean_HP=('HP','mean'),Median_HP=('HP','median'),Max_HP=('HP','max'),Min_HP=('HP','min'),Count=('HP','count'),Sum_HP=('HP','sum'))

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

Более того, вы можете группировать данные по нескольким столбцам.

df_groupby=df.groupby(['Type 1','Generation']).agg(Mean_HP=('HP','mean'),Median_HP=('HP','median'),Max_HP=('HP','max'),Min_HP=('HP','min'),Count=('HP','count'),Sum_HP=('HP','sum'))



3. Melt


Обратите внимание, что функция groupby подобна повороту (pivot) вашего фрейма данных. Теперь вопрос: можно ли повернуть фрейм обратно (unpivot)? Ответ - да, мы можем это сделать с помощью функции melt.

Эта функция переводит фрейм данных с широкого представления (много столбцов) на длинный (много строк).

df_melt=pd.melt(df,id_vars=['Name'],value_vars=['HP','Attack','Defense'],ignore_index=False)


Результат выполнения команды melt

Эта команда создает новый фрейм данных с именем ‘df_melt’. Затем мы указываем переменную идентификатора (‘id_vars’). В данном случае наша переменная идентификатора носит имя покемона. Затем мы указываем столбцы для разворота. Мы используем столбцы ‘HP’, ‘Attack’ and ‘Defense’. Столбцы, которые мы хотим развернуть, попадут в новый столбец, названный ‘variable’. Значение каждого повернутого столбца находится в столбце ‘value’.

4. Loc


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

df.loc[(df['Type 1']=='Fire'),:]


Результат

Что если вы хотите выполнить фильтрацию покемона по fire, water и grass из первого поколения? Мы также можем использовать функцию loc!

df.loc[(df['Type 1'].isin(['Fire','Water','Grass'])) & (df['Generation']==1),:]

Вам, возможно интересно, что это за ":" после последней запятой в коде. Этот знак ":" используется для указания, что мы хотим увидеть все столбцы после фильтра. Если, скажем, нам нужны только names, HP, attack и defense из фильтра, мы можем использовать код:



Помимо loc, мы можете также использовать похожую команду с именем iloc. Она имеет подобную функциональность, но я предпочитаю использовать loc.

5. sort_values


Другой информацией, которую вы можете захотеть узнать, это кто из покемонов имеет наилучший (или наихудший) показатель. Скажем, вы хотите узнать, кто из покемонов имеет наивысший показатель HP.

df.sort_values(by=['HP'],ascending=False)


Результат выполнения sort_values

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

df.sort_values(by=['HP'],ascending=True)


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

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.