Share This
Связаться со мной
Крути в низ
Categories
//Учебник по Pandas для начинающих

Учебник по Pandas для начинающих

17.09.2023Category : Python

Pandas, пожалуй, можно назвать самым важным пакетом Python для анализа данных. С более чем 100 миллионами загрузок в месяц, это фактически стандартный пакет для обработки данных и их исследовательского анализа. Его способность читать и записывать во множество форматов делает его универсальным инструментом для практиков в области науки о данных. Его функции работы с данными делают его очень доступным и практичным инструментом для агрегирования, анализа и очистки данных.

Содержание

  • Что такое pandas?
  • Для чего используется pandas?
  • Основные преимущества пакета pandas
  • Как установить pandas?
  • Импорт данных в pandas
    • Импорт CSV-файлов
    • Импорт текстовых файлов
    • Импорт файлов Excel (один лист)
    • Импорт файлов Excel (несколько вкладок)
    • Импорт JSON-файла
  • Вывод данных в pandas
    • Вывод DataFrame в CSV-файл
    • Вывод DataFrame в файл JSON
    • Вывод DataFrame в текстовый файл
    • Вывод DataFrame в файл Excel
  • Просмотр DataFrames
    • Как просмотреть данные с помощью .head() и .tail()
    • Понимание данных с помощью метода .describe()
    • Понимание данных с помощью метода .info()
    • Понимание данных с помощью .shape
    • Как получить все столбцы и имена столбцов
    • Проверка отсутствующих значений с помощью функции .isnull()
  • Нарезка и извлечение данных в pandas
    • Выделение одного столбца с помощью []
    • Изолирование двух или более столбцов с помощью [[]]
    • Изолирование одного ряда с помощью []
    • Выделение двух или более строк с помощью []
    • Использование .loc[] и .iloc[] для извлечения строк
    • Условная нарезка (данные, удовлетворяющие определенным условиям)
  • Очистка данных с помощью pandas
    • Работа с недостающими данными
    • Работа с дублирующимися данными
    • Переименование столбцов
  • Анализ данных в pandas
    • Операторы суммирования (среднее, мода, медиана)
    • Создание новых столбцов на основе существующих
    • Подсчет с помощью функции .value_counts()
    • Агрегация данных с помощью .groupby() в pandas
    • Pivot tables
  • Визуализация данных в pandas
    • Линейные графики
    • Столбчатые диаграммы
    • Усиковые диаграммы
  • Часто задаваемые вопросы по pandas
  • Заключение

Что такое pandas?

Pandas — это пакет для манипулирования табличными данными в Python. То есть данными в виде строк и столбцов, также известными как DataFrames. Интуитивно можно представить себе DataFrame как таблицу Excel.

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

Pandas хорошо работает с другими популярными пакетами Python для работы с данными, которые часто называют экосистемой PyData:

  • NumPy для численных вычислений
  • Matplotlib, Seaborn, Plotly для визуализации данных
  • scikit-learn для машинного обучения

Для чего используется pandas?

Pandas может использоваться во всех процессах анализа данных. С помощью этой библиотеки можно:

  • Импортировать наборы данных из баз данных, электронных таблиц, CSV-файлов и т.д.
  • Очищать наборы данных, например, устраняя пропущенные значения.
  • Упорядочивать наборы данных путем преобразования их структуры в формат, пригодный для анализа.
  • Агрегировать данные, вычисляя сводную статистику, например, среднее значение столбцов, корреляцию между ними и т.д.
  • Визуализировать наборы данных и открывать новые возможности.

Pandas также имеет функционал для анализа временных рядов и текстовых данных.

Ключевые преимущества пакета pandas

Несомненно, pandas — это мощный инструмент манипулирования данными, обладающий рядом преимуществ:

  • Создан для Python. Python — самый популярный в мире язык для машинного обучения и науки о данных.
  • Меньшая многословность в расчете на единицу операций. Код, написанный на pandas, лаконичен и требует меньшего количества строк для получения желаемого результата.
  • Интуитивно понятное представление данных. Pandas предлагает исключительно интуитивное представление данных, что облегчает их понимание и анализ.
  • Обширный набор функций. Pandas поддерживает широкий набор операций: анализ данных, работа с пропущенными значениями, вычисление статистики, визуализация одномерных и двумерных данных и многое другое.
  • Работа с большими данными. Pandas легко справляется с большими массивами данных. Он обеспечивает скорость и эффективность при работе с наборами данных, содержащих порядка миллионов записей и сотен столбцов, в зависимости от машины.

Установка pandas

Прежде чем приступить к изучению функциональности pandas, давайте сначала установим эту библиотеку. Для этого достаточно воспользоваться командой pip install в терминале.

pip install pandas

Импорт данных в pandas

Чтобы начать работу с pandas, импортируйте пакет pandas Python, как показано ниже. При импорте наиболее распространенным псевдонимом для pandas является pd.

import pandas as pd

Импорт CSV-файлов

Для чтения файла со значениями, разделенными запятыми, т.е. CSV-файлов, используйте функцию read_csv() с указанием пути к CSV-файлу.

df = pd.read_csv("diabetes.csv")

Эта операция чтения загружает файл diabetes.csv для генерации объекта Dataframe — df. В этом учебнике мы расскажем, как работать с такими объектами DataFrame.

От редакции Pythonist: рекомендуем также почитать статью «Как создать Pandas DataFrame».

Импорт текстовых файлов

Чтение текстовых файлов аналогично чтению CSV-файлов. Единственным нюансом является то, что необходимо указать разделитель с помощью аргумента sep, как показано ниже.

Аргумент sep (от англ. separator — разделитель) представляет символ, используемый для разделения строк в DataFrame. Обычно используются запятая (sep=»,»), пробел (sep=»s»), табуляция (sep=»t») и двоеточие (sep=»:»).

Здесь s представляет собой один символ пробела:

df = pd.read_csv("diabetes.txt", sep="s")

Импорт файлов Excel (один лист)

Чтение файлов Excel (как XLS, так и XLSX) осуществляется с помощью функции read_excel(), использующей в качестве входных данных путь к файлу.

df = pd.read_excel('diabetes.xlsx')

Можно добавить и другие аргументы, например header⁣, чтобы указать, какая строка становится заголовком DataFrame. По умолчанию он имеет значение 0, которое обозначает первую строку в качестве заголовков или имен столбцов. В аргументе names можно также указать имена столбцов в виде списка. Аргумент index_col (по умолчанию None) может быть использован, если файл содержит индекс строк.

Примечание. В pandas DataFrame или Series индекс — это идентификатор, указывающий на местоположение строки или столбца в pandas DataFrame. В двух словах, индекс маркирует строку или столбец DataFrame и позволяет получить доступ к ним по их индексам (об этом мы поговорим позже). Индекс строки DataFrame может представлять собой диапазон (например, от 0 до 303), временной ряд (даты или временные метки), уникальный идентификатор (например, employee_ID в таблице employees) или другие типы данных. Для столбцов это обычно строка, обозначающая имя столбца.

Импорт файлов Excel (несколько вкладок)

Чтение файлов Excel с несколькими вкладками не имеет особых отличий. Необходимо только указать один дополнительный аргумент — sheet_name. В качестве sheet_name можно передать либо имя вкладки (строку), либо позицию вкладки (целое число).

Обратите внимание, что в Python используется 0-индексация, поэтому доступ к первой вкладке можно получить при sheet_name=0.

# Выбираем вторую вкладку, но пишем 1, так как индексация начинается с нуля df = pd.read_excel('diabetes_multi.xlsx', sheet_name=1)

Импорт JSON-файла

Аналогично функции read_csv(), для файлов типа JSON можно использовать функцию read_json() с именем файла JSON в качестве аргумента. Приведенный ниже код считывает JSON-файл с диска и создает объект DataFrame df.

df = pd.read_json("diabetes.json")

Если вы хотите узнать больше об импорте данных в pandas, ознакомьтесь с этой шпаргалкой по импорту различных типов файлов в Python.

Вывод данных в pandas

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

Вывод DataFrame в CSV-файл

Фрейм данных pandas (в нашем учебнике — df) сохраняется в CSV-файл с помощью метода .to_csv(). В качестве аргументов указываются имя файла с путем к нему и index. При этом index=True подразумевает запись индекса DataFrame.

df.to_csv("diabetes_out.csv", index=False)

Вывод DataFrame в файл JSON

Экспорт объекта датафрейма в JSON происходит при помощи метода .to_json():

df.to_json("diabetes_out.json")

Примечание: JSON-файл хранит табличный объект типа DataFrame в виде пары ключ-значение. Поэтому в JSON-файле можно наблюдать повторяющиеся заголовки столбцов.

Вывод DataFrame в текстовый файл

Для вывода датафрейма в текстовый файл можно вызвать команду .to_csv(), как при записи в CSV. Единственное отличие состоит в том, что формат выходного файла — .txt, и необходимо указать разделитель с помощью аргумента sep.

df.to_csv('diabetes_out.txt', header=df.columns, index=None, sep=' ')

Вывод DataFrame в файл Excel

Чтобы сохранить датафрейм в файл формата «.xls» или «.xlsx», вызовите функцию .to_excel() из объекта DataFrame.

df.to_excel("diabetes_out.xlsx", index=False)

Просмотр DataFrames

После считывания табличных данных в виде DataFrame нам нужно их как-то просмотреть. Можно просмотреть либо небольшую выборку из набора данных, либо сводку данных в виде итоговой статистики.

Как просмотреть данные с помощью .head() и .tail()

С помощью методов .head() и .tail() можно просмотреть несколько первых или несколько последних строк DataFrame соответственно. Количество строк можно задать через аргумент n (по умолчанию — 5).

df.head()

uchebnik po pandas dlja nachinajushhih b8f66f2 - Учебник по Pandas для начинающих

Первые пять строк DataFrame

df.tail(n = 10)

uchebnik po pandas dlja nachinajushhih ec2908d - Учебник по Pandas для начинающихПоследние 10 строк DataFrame

Понимание данных с помощью метода .describe()

Метод .describe() выводит сводную статистику всех числовых столбцов, такую как количество, среднее значение, стандартное отклонение, диапазон и квартили.

df.describe()

uchebnik po pandas dlja nachinajushhih cd3e033 - Учебник по Pandas для начинающихПолучение сводной статистики с помощью функции .describe()

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

Вы также можете изменить квартили с помощью аргумента percentiles. Здесь, например, мы рассматриваем 30%, 50% и 70% процентили числовых столбцов в DataFrame df.

df.describe(percentiles=[0.3, 0.5, 0.7])

uchebnik po pandas dlja nachinajushhih cd63e72 - Учебник по Pandas для начинающихПолучение сводной статистики с определенными значениями percentiles

С помощью аргумента include можно также выделить определенные типы данных в итоговом выводе. Здесь, например, мы суммируем только столбцы с типом данных integer.

df.describe(include=[int])

uchebnik po pandas dlja nachinajushhih 6d1561d - Учебник по Pandas для начинающихПолучение сводной статистики только по целочисленным столбцам

Аналогичным образом можно исключить определенные типы данных, используя аргумент exclude.

df.describe(exclude=[int])

uchebnik po pandas dlja nachinajushhih cb6ef02 - Учебник по Pandas для начинающихПолучение сводной статистики только для нецелочисленных столбцов

Часто практикам удобно просматривать такую статистику, транспонируя ее с помощью атрибута .T.

df.describe().T

uchebnik po pandas dlja nachinajushhih 96b908e - Учебник по Pandas для начинающихТранспонирование сводной статистики с помощью .T

Понимание данных с помощью метода .info()

Метод .info() — это быстрый способ посмотреть типы данных, пропущенные значения и размер данных в DataFrame. Здесь мы устанавливаем аргумент show_counts равным True, что дает возможность увидеть общее количество не пропущенных значений в каждом столбце.

Мы также устанавливаем значение memory_usage=True. memory_usage показывает общее использование памяти элементами DataFrame. Если для параметра verbose установлено значение True, то выводится полная сводка из .info().

df.info(show_counts=True, memory_usage=True, verbose=True)

uchebnik po pandas dlja nachinajushhih 4c65e74 - Учебник по Pandas для начинающих

Понимание данных с помощью .shape

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

df.shape # Получить число строк и столбцов df.shape[0] # Получить только число строк df.shape[1] # Получить только число столбцов

Вывод:

(768,9) 768 9

Получить все столбцы и имена столбцов

Вызов атрибута .columns объекта DataFrame возвращает имена столбцов в виде объекта Index. Напомним, что индекс pandas — это адрес/метка строки или столбца.

df.columns

Вывод:

uchebnik po pandas dlja nachinajushhih 7b445e5 - Учебник по Pandas для начинающих

Он может быть преобразован в список с помощью функции list().

list(df.columns)

Результат:

uchebnik po pandas dlja nachinajushhih 7001427 - Учебник по Pandas для начинающих

Проверка отсутствующих значений в pandas с помощью функции .isnull()

В нашем примере DataFrame нет ни одного пропущенного значения. Давайте введем несколько, чтобы было интереснее.

Метод .copy() создает копию исходного DataFrame. Это делается для того, чтобы любые изменения в копии не отражались на исходном DataFrame. С помощью метода .loc (будет рассмотрен позже) можно установить в столбце Pregnancies со второй по пятую строки значения NaN, которые обозначают отсутствующие значения.

df2 = df.copy() df2.loc[2:5,'Pregnancies'] = None df2.head(7)

uchebnik po pandas dlja nachinajushhih c6ce582 - Учебник по Pandas для начинающихВидно, что теперь строки со 2 по 5 являются NaN

Проверить, отсутствует ли элемент в DataFrame, можно с помощью метода .isnull().

df2.isnull().head(7)

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

df2.isnull().sum()

Результат:

Pregnancies                 4 Glucose                     0 BloodPressure               0 SkinThickness               0 Insulin                     0 BMI                         0 DiabetesPedigreeFunction    0 Age                         0 Outcome                     0 dtype: int64

Для получения общего количества нулей в DataFrame можно также выполнить двойное суммирование.

df2.isnull().sum().sum()  # Вывод: # 4

Нарезка и извлечение данных в pandas

Пакет pandas предлагает несколько способов выделения подмножества, фильтрации и выделения данных во фреймах DataFrames. Здесь мы рассмотрим наиболее распространенные способы.

Выделение одного столбца с помощью []

Вы можете выделить один столбец, используя квадратные скобки [ ] с именем столбца в них. На выходе получается объект pandas Series.

Серия pandas — это одномерный массив, содержащий данные любого типа, включая целые числа, числа с плавающей точкой, строки, булевы значения, объекты Python и т.д. DataFrame состоит из множества серий, которые выступают в качестве столбцов.

df['Outcome']

uchebnik po pandas dlja nachinajushhih 803af5f - Учебник по Pandas для начинающихИзолирование одного столбца в pandas

Изолирование двух или более столбцов с помощью [[]]

Для получения более одного столбца можно также указать список имен столбцов внутри квадратных скобок. Здесь квадратные скобки используются двумя разными способами. Внешние квадратные скобки используются для обозначения подмножества фрейма DataFrame, а внутренние — для создания списка.

df[['Pregnancies', 'Outcome']]

uchebnik po pandas dlja nachinajushhih cdf7ae2 - Учебник по Pandas для начинающихИзолирование двух столбцов в pandas

Изолирование одного ряда с помощью []

Выделить один ряд можно путем передачи булевого ряда с одним значением True. В приведенном ниже примере возвращается второй ряд с index=1. Здесь .index возвращает метки строк DataFrame, а сравнение превращает их в булевский одномерный массив.

df[df.index==1]

uchebnik po pandas dlja nachinajushhih f52682e - Учебник по Pandas для начинающихИзолирование одной строки в pandas

Выделение двух или более строк с помощью []

Аналогичным образом можно вернуть два или более ряда, используя метод .isin() вместо оператора ==.

df[df.index.isin(range(2,10))]

uchebnik po pandas dlja nachinajushhih 7bb35e4 - Учебник по Pandas для начинающихИзолирование определенных строк в pandas

Использование .loc[] и .iloc[] для извлечения строк

С помощью .loc[] и .iloc[] («местоположение» и «целочисленное местоположение») можно получить определенные строки по меткам или условиям.

В .loc[] для указания на строку, столбец или ячейку используется метка, а в .iloc[] — числовая позиция. Чтобы понять разницу между ними, изменим созданный ранее индекс df2.

df2.index = range(1,769)

В приведенном ниже примере вместо DataFrame возвращается pandas Series. 1 представляет собой индекс ряда (метка), а 1 в .iloc[] — позицию ряда (первый ряд).

df2.loc[1]

Вывод:

Pregnancies                   6.000 Glucose                     148.000 BloodPressure                72.000 SkinThickness                35.000 Insulin                       0.000 BMI                          33.600 DiabetesPedigreeFunction      0.627 Age                          50.000 Outcome                       1.000 Name: 1, dtype: float64

И .iloc[]:

df2.iloc[1]

Вывод:

Pregnancies                  1.000 Glucose                     85.000 BloodPressure               66.000 SkinThickness               29.000 Insulin                      0.000 BMI                         26.600 DiabetesPedigreeFunction     0.351 Age                         31.000 Outcome                      0.000 Name: 2, dtype: float64

Вы также можете получить несколько строк, указав диапазон в квадратных скобках.

df2.loc[100:110]

uchebnik po pandas dlja nachinajushhih cfe19d6 - Учебник по Pandas для начинающихИзолирование строк в pandas с помощью .loc[]

df2.iloc[100:110]

uchebnik po pandas dlja nachinajushhih fc4a4bb - Учебник по Pandas для начинающихИзолирование строк в pandas с помощью .iloc[]

Вы также можете получать подмножество с помощью .loc[] и .iloc[], используя список вместо диапазона.

df2.iloc[[100, 200, 300]]

uchebnik po pandas dlja nachinajushhih a487c19 - Учебник по Pandas для начинающихИзолирование строк с помощью списка в pandas с помощью .iloc[]

Можно также выбирать конкретные столбцы вместе со строками. В этом .iloc[] отличается от .loc[] — ему требуется расположение столбцов, а не их метки.

df2.loc[100:110, ['Pregnancies', 'Glucose', 'BloodPressure']]

uchebnik po pandas dlja nachinajushhih 8bc15c3 - Учебник по Pandas для начинающихИзолирование столбцов в pandas с помощью .loc[]

df2.iloc[100:110, :3]

uchebnik po pandas dlja nachinajushhih 077d13d - Учебник по Pandas для начинающихИзолирование столбцов с помощью .iloc[]

Для ускорения работы можно передавать начальный индекс строки в виде диапазона.

df2.loc[760:, ['Pregnancies', 'Glucose', 'BloodPressure']]

uchebnik po pandas dlja nachinajushhih 065cce3 - Учебник по Pandas для начинающихИзолирование столбцов и строк в pandas с помощью .loc[]

df2.iloc[760:, :3]

uchebnik po pandas dlja nachinajushhih a5f1383 - Учебник по Pandas для начинающихИзолирование столбцов и строк в pandas с помощью .iloc[]

Обновить/изменить определенные значения можно с помощью оператора присваивания =.

df2.loc[df['Age']==81, ['Age']] = 80

Условная нарезка (данные, удовлетворяющие определенным условиям)

Pandas позволяет фильтровать данные по условиям над значениями строк/столбцов. Например, приведенный ниже код выбирает строку, в которой значение артериального давления равно 122.

Здесь мы выделяем строки с помощью скобок [], как это было показано в предыдущих разделах. Однако вместо индексов строк или имен столбцов мы вводим условие, при котором столбец BloodPressure равен 122. Обозначим это условие через df.BloodPressure == 122.

df[df.BloodPressure == 122]

uchebnik po pandas dlja nachinajushhih 357de96 - Учебник по Pandas для начинающихИзолирование строк на основе условия в pandas

В приведенном ниже примере извлекаются все строки, в которых Outcome равен 1. Здесь df.Outcome выбирает этот столбец, df.Outcome == 1 возвращает серию булевых значений, определяющих, какие Outcomes равны 1, затем [] берет подмножество df, в котором эта булева серия равна True.

df[df.Outcome == 1]

uchebnik po pandas dlja nachinajushhih 752a311 - Учебник по Pandas для начинающихИзолирование строк на основе условия в pandas

Для проведения сравнений можно использовать оператор >. В приведенном ниже коде для всех записей, в которых давление крови больше 100, получены значения Pregnancies, Glucose и BloodPressure.

df.loc[df['BloodPressure'] > 100, ['Pregnancies', 'Glucose', 'BloodPressure']]

uchebnik po pandas dlja nachinajushhih a8a7d75 - Учебник по Pandas для начинающихИзолирование строк и столбцов на основе условия в pandas

Очистка данных с помощью pandas

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

Для иллюстрации нескольких примеров использования очистки данных воспользуемся приведенным ранее DataFrame df2 с четырьмя пропущенными значениями. Напомним, как можно посмотреть количество пропущенных значений в DataFrame:

df2.isnull().sum()
Pregnancies                 4 Glucose                     0 BloodPressure               0 SkinThickness               0 Insulin                     0 BMI                         0 DiabetesPedigreeFunction    0 Age                         0 Outcome                     0 dtype: int64

Работа с недостающими данными

Техника № 1: отбрасывание недостающих значений

Одним из способов решения проблемы недостающих данных является их отбрасывание. Это особенно полезно в тех случаях, когда данных много и потеря небольшой части не повлияет на последующий анализ. Для этого можно использовать метод .dropna(), как показано ниже. Здесь мы сохраняем результаты работы метода .dropna() в DataFrame df3.

df3 = df2.copy() df3 = df3.dropna() df3.shape

Вывод:

(764, 9) # this is 4 rows less than df2

Аргумент axis позволяет указать, отбрасываются ли строки или столбцы с отсутствующими значениями. axis по умолчанию удаляет строки, содержащие NaN. Если использовать axis=1, то будут удалены столбцы с одним или несколькими значениями NaN.

Также обратите внимание на то, что мы используем аргумент inplace=True, который позволяет не сохранять вывод .dropna() в новый DataFrame.

df3 = df2.copy() df3.dropna(inplace=True, axis=1) df3.head()

uchebnik po pandas dlja nachinajushhih c70bd3f - Учебник по Pandas для начинающихУдаление отсутствующих данных в pandas

Вы также можете отбросить как строки, так и столбцы с отсутствующими значениями, установив для аргумента how значение ‘all’.

df3 = df2.copy() df3.dropna(inplace=True, how='all')

Техника № 2: замена отсутствующих значений

Вместо отбрасывания можно заменить пропущенные значения суммарной статистикой или конкретным значением (в зависимости от конкретного случая).

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

Заменить недостающие данные средним значением строки или столбца можно с помощью приведенного ниже кода.

df3 = df2.copy() # Get the mean of Pregnancies mean_value = df3['Pregnancies'].mean() # Fill missing values using .fillna() df3 = df3.fillna(mean_value)

Работа с дублирующимися данными

Давайте добавим несколько дубликатов к исходным данным, чтобы узнать, как устранить дубликаты в DataFrame. Здесь мы используем метод .concat() для конкатенации строк фрейма df2 во фрейм df2, добавляя совершенные дубликаты каждой строки в df2.

df3 = pd.concat([df2, df2]) df3.shape  # Вывод: # (1536, 9)

Удалить все дублирующиеся строки (по умолчанию) из DataFrame можно с помощью метода .drop_duplicates().

df3 = df3.drop_duplicates() df3.shape  # Вывод: # (768, 9)

Переименование столбцов

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

В приведенном ниже коде показан словарь для сопоставления старых и новых имен столбцов.

df3.rename(columns = {'DiabetesPedigreeFunction':'DPF'}, inplace = True) df3.head()

uchebnik po pandas dlja nachinajushhih 6347e04 - Учебник по Pandas для начинающихПереименование столбцов в pandas

Можно также непосредственно присвоить DataFrame имена столбцов в виде списка.

df3.columns = ['Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DPF', 'Age', 'Outcome', 'STF'] df3.head()

uchebnik po pandas dlja nachinajushhih e59bbe1 - Учебник по Pandas для начинающихПереименование столбцов в pandas

Анализ данных в pandas

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

Операторы суммирования (среднее, мода, медиана)

Как вы видели ранее, среднее значение каждого столбца можно получить с помощью метода .mean().

df.mean()

uchebnik po pandas dlja nachinajushhih b8004c9 - Учебник по Pandas для начинающихВывод среднего значения столбцов в pandas

Аналогично можно вычислить моду — с помощью метода .mode().

df.mode()

uchebnik po pandas dlja nachinajushhih cbf251c - Учебник по Pandas для начинающихВывод моды столбцов в pandas

С помощью метода .median() вычисляется медиана каждого столбца:

df.median()

uchebnik po pandas dlja nachinajushhih 79e06a0 - Учебник по Pandas для начинающихВывод медианы столбцов в pandas

Создание новых столбцов на основе существующих

Pandas обеспечивает быстрые и эффективные вычисления путем объединения двух или более столбцов как скалярных переменных.

Приведенный ниже код делит каждое значение в столбце Glucose на соответствующее значение в столбце Insulin для вычисления нового столбца с именем Glucose_Insulin_Ratio.

df2['Glucose_Insulin_Ratio'] = df2['Glucose']/df2['Insulin'] df2.head()

uchebnik po pandas dlja nachinajushhih 336037d - Учебник по Pandas для начинающихСоздание нового столбца из существующих столбцов в pandas

Подсчет с помощью функции .value_counts()

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

Для подсчета значений категорий можно использовать метод .value_counts(). Здесь, например, мы подсчитываем количество наблюдений, в которых Outcome является диабетическим (1), и количество наблюдений, в которых Outcome не является диабетическим (0).

df['Outcome'].value_counts()

uchebnik po pandas dlja nachinajushhih ec9499a - Учебник по Pandas для начинающихИспользование .value_counts() в pandas

Добавление аргумента normalize возвращает пропорции вместо абсолютных значений.

df['Outcome'].value_counts(normalize=True)

uchebnik po pandas dlja nachinajushhih c413ba0 - Учебник по Pandas для начинающихИспользование .value_counts() с нормализацией

Отключить автоматическую сортировку результатов можно с помощью аргумента sort (по умолчанию True). По умолчанию сортировка производится на основе подсчетов в порядке убывания.

df['Outcome'].value_counts(sort=False)

uchebnik po pandas dlja nachinajushhih 0b5534a - Учебник по Pandas для начинающихИспользование функции .value_counts() в pandas с сортировкой

df.value_counts(subset=['Pregnancies', 'Outcome'])

uchebnik po pandas dlja nachinajushhih 87f30a8 - Учебник по Pandas для начинающихИспользование .value_counts() в pandas при подмножестве столбцов

Агрегация данных с помощью .groupby()

Pandas позволяет агрегировать значения, группируя их по определенным значениям столбцов. Это можно сделать, сочетая метод .groupby() с выбранным вами методом суммирования.

Приведенный ниже код отображает среднее значение каждого из числовых столбцов, сгруппированных по критерию Outcome.

df.groupby('Outcome').mean()

uchebnik po pandas dlja nachinajushhih 8606b70 - Учебник по Pandas для начинающихАгрегирование данных по одному столбцу в pandas

Функция .groupby() позволяет группировать данные более чем по одному столбцу, передавая список имен столбцов, как показано ниже.

df.groupby(['Pregnancies', 'Outcome']).mean()

uchebnik po pandas dlja nachinajushhih 9910971 - Учебник по Pandas для начинающихАгрегация данных по двум столбцам в pandas

Вместе с .groupby() можно использовать любой метод подведения итогов, включая .min(), .max(), .mean(), .median(), .sum(), .mode() и др.

Pivot tables

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

Приведенный ниже код выбирает строки как уникальные значения Pregnancies, значения столбцов — как уникальные значения Outcome, а ячейки — как среднее значение BMI в соответствующей группе.

Например, для Pregnancies = 5 и Outcome = 0 среднее значение BMI оказывается равным 31,1.

pd.pivot_table(df, values="BMI", index='Pregnancies',                 columns=['Outcome'], aggfunc=np.mean)

uchebnik po pandas dlja nachinajushhih e250191 - Учебник по Pandas для начинающихАгрегирование данных с помощью pivoting в pandas

Визуализация данных в pandas

Pandas предоставляет удобные обертки для функций построения графиков Matplotlib, которые позволяют легко визуализировать ваши DataFrames. Ниже мы рассмотрим, как с помощью pandas выполнять распространенные визуализации данных.

Линейные графики

Pandas позволяет строить графики взаимосвязей между переменными с помощью линейных диаграмм. Ниже показан линейный график зависимости индекса массы тела и глюкозы от индекса ряда.

df[['BMI', 'Glucose']].plot.line()

uchebnik po pandas dlja nachinajushhih 817c4a9 - Учебник по Pandas для начинающихБазовый линейный график с помощью pandas

C помощью аргумента color можно указать цвета:

df[['BMI', 'Glucose']].plot.line(figsize=(20, 10),                                   color={"BMI": "red", "Glucose": "blue"})

uchebnik po pandas dlja nachinajushhih 99a34fb - Учебник по Pandas для начинающихБазовый линейный график с помощью pandas, с пользовательскими цветами

df.plot.line(subplots=True)

uchebnik po pandas dlja nachinajushhih 39daed8 - Учебник по Pandas для начинающихПодплоты для линейных графиков в pandas

Столбчатые диаграммы

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

df['Outcome'].value_counts().plot.bar()

uchebnik po pandas dlja nachinajushhih b666233 - Учебник по Pandas для начинающихГистограммы в pandas

Усиковые диаграммы

Квартильное распределение непрерывных переменных может быть визуализировано с помощью усиковой диаграммы. Приведенный ниже код позволяет создать боксплот с помощью pandas.

df.boxplot(column=['BMI'], by='Outcome')

uchebnik po pandas dlja nachinajushhih f95e320 - Учебник по Pandas для начинающихБоксплоты в pandas

Pandas FAQs

Что такое pandas в Python?

Pandas — это мощная библиотека для работы с данными на языке Python. Она предоставляет структуры данных и функции, необходимые для работы со структурированными данными, в том числе функции для манипулирования датафреймами и их анализа. Это незаменимый инструмент в мире анализа данных и науки о данных, поскольку он позволяет эффективно очищать, преобразовывать и анализировать данные.

Зачем мне изучать pandas?

Если вы работаете с данными используя Python, то изучение pandas является практически обязательным. Он упрощает процесс обработки и анализа данных, позволяя сосредоточиться на извлечении информации. Независимо от того, работаете ли вы с небольшими наборами данных или с большими массивами, pandas облегчит вам жизнь благодаря своей скорости, гибкости и удобным структурам данных.

Как установить pandas?

Для установки pandas вам потребуется Python и pip (программа установки пакетов Python). Чтобы установить pandas, нужно ввести команду pip install pandas. Если вы используете блокнот Jupyter в среде, подобной Anaconda, pandas будет предустановлен.

Каковы основные структуры данных в pandas?

Две основные структуры данных в pandas — это Series и DataFrame. Серия — это, по сути, столбец, а DataFrame — это многомерная таблица, состоящая из набора серий. Эти структуры являются гибкими, то есть в них могут храниться данные различных типов (например, целое число, число с плавающей точкой, строка).

Подойдет ли pandas для работы с большими массивами данных?

Да, pandas является отличным выбором для работы с большими наборами данных. Он разработан для эффективного анализа данных, включая их большие массивы.

Однако следует помнить, что размер данных, с которыми вы можете работать, в некоторой степени зависит от объема памяти вашей системы. Если вы имеете дело с очень большими наборами данных, которые не помещаются в память, то вам, возможно, придется использовать другие инструменты или методы (например, разбиение на части или использование dask).

Как импортировать данные в pandas?

Pandas может читать данные из различных форматов файлов, таких как CSV, Excel, SQL-базы данных, JSON и многое другое. Для импорта данных из соответствующих типов файлов используются команды pd.read_csv(), pd.read_excel(), pd.read_sql() и pd.read_json(). Все эти команды возвращают объект DataFrame, с которым вы можете работать с помощью библиотеки pandas.

Заключение

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

Перевод статьи «Python pandas tutorial: The ultimate guide for beginners».

  • 1 views
  • 0 Comment

Leave a Reply

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close