Группировка данных в Pandas

Сегментация данных по критериям и получение агрегированных результатов в Pandas

Группировка данных — один из важных этапов анализа данных, который позволяет собрать информацию и получить статистику на основе разных критериев. Рассмотрим основы метода groupby() и как его применять для агрегации данных по группам в Python, с использованием библиотеки Pandas.

Зачем нужна группировка данных

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

Основы метода groupby()

В Pandas метод groupby() является мощным инструментом для группировки данных. Он позволяет разделить DataFrame на группы на основе значений в одном или нескольких столбцах. Вот как он работает:

import pandas as pd

data = {
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Sales': [100, 150, 200, 250, 300]
}

df = pd.DataFrame(data)

grouped = df.groupby('Category')

В этом примере мы создаем DataFrame с двумя столбцами: Category и Sales. Затем мы используем метод groupby('Category'), чтобы сгруппировать данные по столбцу Category. В результате, у нас появляется объект GroupBy, который содержит группы данных, разделенные по уникальным значениям в столбце Category.

Агрегация данных по группам

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

sum_sales = grouped['Sales'].sum()

print(sum_sales)

# Category
# A    600
# B    400
# Name: Sales, dtype: int64

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

Примеры группировки данных и агрегации

Пример 1: Группировка по нескольким столбцам
Иногда требуется группировать данные по нескольким столбцам. Допустим, у нас есть данные о продажах товаров с указанием категории и региона:

data = {
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Region': ['North', 'South', 'North', 'South', 'North'],
    'Sales': [100, 150, 200, 250, 300]
}

df = pd.DataFrame(data)

Мы можем группировать данные по обоим столбцам Category и Region и находить сумму продаж для каждой комбинации:

grouped = df.groupby(['Category', 'Region'])
sum_sales = grouped['Sales'].sum()

print(sum_sales)

# Category  Region
# A         North     600
# B         South     400
# Name: Sales, dtype: int64

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

agg_result = grouped.agg({'Sales': 'sum', 'Sales': 'mean'})

print(agg_result)

#                  Sales
# Category Region       
# A        North   200.0
# B        South   200.0

Здесь мы используем метод agg() и указываем разные функции для столбца Sales.

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

def custom_function(series):
    return series.max() - series.min()

agg_result = grouped.agg({'Sales': custom_function})

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

Заключение

Группировка данных и агрегация - важные инструменты в анализе данных. Метод groupby() в Pandas позволяет легко сгруппировать данные по различным критериям и применять агрегирующие функции для вычисления статистики. Это помогает аналитикам и исследователям данных делать информированные выводы на основе обобщенных данных.

Содержание: