Абсолютный минимум Pandas

автор рубрика
Абсолютный минимум Pandas

Pandas – Python-библиотека обработки и анализа данных. Ее используют для чтения и манипулирования данными, упакованные в датасет. Датасет может быть представлен в формате csv, json, html, xlsx и т.д. Чаще всего используется csv – формат, в котором значения разделены запятой. Чтобы скачать библиотеку Pandas введите в командной строке:

pip install pandas

В качестве примера будем использовать датасет с олимпийскими играми, содержащий данные о спортсменах с 1896 по 2016 года. Скачать датасет можно на сайте Kaggle – площадки для соревнований по машинному обучению.

Анализ данных с Pandas

В основе Pandas лежит DataFrame. DataFrame – двумерное (табличное) представление данных. Один из способов создания DataFrame – чтение датасета, например в формате csv. Для начала импортируем библиотеку pandas и будем обращаться к ней как pd:

import pandas as pd
data = pd.read_csv('athlete_events.csv')

Метод read_csv читает датасет и возвращает DataFrame. Чтобы посмотреть первые пять строк вызываем метод head:

data.head()

Данные выглядят следующим образом:

Отображение первых пяти строк вызовом метода head Pandas
Отображение 5 первых строк в Pandas

Считаем количество строк и столбцов

Как видно, здесь присутствуют пустые записи – NaN (c ними поработаем чуть позже). Чтобы посмотреть сколько всего строк и столбцов используем метод shape:

>>> data.shape
(271116, 15)

Следовательно, в датасете 271.116 строк и 15 столбцов.
Для просмотра названий столбцов используем метод index:

>>> data.index
Index(['ID', 'Name', 'Sex', 'Age', 'Height', 'Weight', 'Team', 'NOC', 'Games',
'Year', 'Season', 'City', 'Sport', 'Event', 'Medal'],
dtype='object')

Извлекаем отдельные столбцы в Pandas

Из DataFrame можно извлекать отдельные столбцы. DataFrame имеет сходный синтаксис со словарем (dict), т.е. обращаться к значениям можно через квадратные скобки. Например, посмотрим на столбец Age:

>>> data['Age']
0         24.0
1         23.0
2         24.0
3         34.0
4         21.0
...
271111    29.0
271112    27.0
271113    27.0
271114    30.0
271115    34.0
Name: Age, Length: 271116, dtype: float64

Стоит заметить, что такое обращение к столбцу возвращает объект Series. Series – одномерное (столбчатое) представление данных. Можно сказать, что DataFrame представлен коллекцией Series.
Обращаться можно и к нескольким столбцам. Используя список (list) необходимых столбцов, можно получить новый датафрейм:

data[['Name', 'City', 'Sport']]

В результате получаем:

Отображение первых пять строк со столбцами Имя, Город, Спорт
Отображение столбцов в Pandas

Name, City, Sport являются элементами списка. Для обращения используются квадратные скобки, так же как и с одним значением.

Извлекаем отдельные строки в Pandas

Извлечение строк также возможно с помощью метод iloc. Вот так выглядит обращение к одной строчке под номером 100:

>>> data.iloc[100]
ID                                         36
Name                     Stefan Remco Aartsen
Sex                                         M
Age                                        21
Height                                    194
Weight                                     78
Team                              Netherlands
NOC                                       NED
Games                             1996 Summer
Year                                     1996
Season                                 Summer
City                                  Atlanta
Sport                                Swimming
Event     Swimming Men's 100 metres Butterfly
Medal                                     NaN
Name: 100, dtype: object

Несколько строк извлекаем, устанавливая диапазон start и stop в методе iloc через двоеточие:

data.iloc[100:105]
Отображение строк с 100 по 104 вызовом метода iloc Pandas
Отображение строк с 100 по 104

Извлекаем oтдельные строки и столбцы одновременно

Извлекаем строки и столбцы одновременно, соединяя оба метода:

data.iloc[100:105][['Name', 'City', 'Sport']]

Заметим также, порядок не извлечения не важен. Аналогично можно написать следующее:

Отображение строк с 100-го по 104-й со столбцами Имя, Возраст, Спорт
Извлечение строк и столбцов одновременно
data[['Name', 'City', 'Sport']].iloc[100:105]

что приведет к тому же результату.

Описательная статистика и пустые значения

Для числовых значений можно получить описательную статистику методом describe:

data.describe()
Отображение описательной статистики Pandas
Описательная статистика

Пробежимся по атрибутам описательной статистики:

  • сount обозначает количество записей,
  • mean – среднее арифметическое,
  • std – стандартное отклонение,
  • min – минимальное значение,
  • n-ый (25, 50, 75) % – n-ый квартиль,
  • max – максимальное значение.

Строки с пустыми (NaN)значениями отбрасываются методом drop. У drop есть параметр subset, уточняющий, в каком столбце удалять; если его не указать, то отбросятся строки с NaN’ами каждого из столбцов. Удалим пустые значения Medal:

>>> data.dropna(subset=['Medal'])['Medal']
3           Gold
37        Bronze
38        Bronze
40        Bronze
41        Bronze
...
271078    Silver
271080    Bronze
271082    Bronze
271102    Bronze
271103    Silver
Name: Medal, Length: 39783, dtype: object

Как можно заметить, этот столбец имеет только 39.783 не NaN значений тогда, когда всего 271.116.

После всех манипуляций с данными не забудьте переприсвоить изменения. Вышеперечисленные методы создают новый DataFrame, а не изменяют старый. Например, чтобы в дальнейшем иметь дело с тремя столбцами, пишем:

data = data[['Name', 'City', 'Sport']]

Подведем итоги

  • read_csv создает DataFrame из датасета.
  • Метод head вызывает 5 первых строк.
  • Атрибут shape показывает количество строк и столбцов.
  • Атрибут index возвращает список названий столбцов.
  • Для извлечения столбца или столбцов указывается в квадратных скобках название столбца или список названий, соответственно.
  • Метод iloc возвращает строки.
  • Метод describe показывает описательную статистику.
  • Метод drop отбрасывает пустые строки.

 
В нашей следующей статье мы познакомимся с 5 методами визуализации данных в matplotlib. На курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве вы узнаете о еще большем применении Pandas на практике.

Комментировать

Ваш адрес email не будет опубликован. Обязательные поля помечены *