Группировка данных — один из важных этапов анализа данных, который позволяет собрать информацию и получить статистику на основе разных критериев. Рассмотрим основы метода groupby()
и как его применять для агрегации данных по группам в Python, с использованием библиотеки Pandas.
Группировка данных — это процесс разделения набора данных на более мелкие группы на основе каких-то категорий или критериев. Это может быть полезно, например, для анализа продаж по категориям товаров, статистики по регионам, или оценки производительности сотрудников по отделам. Группировка позволяет нам легко извлекать обобщенную информацию из больших объемов данных и делает анализ более удобным и информативным.
В 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 позволяет легко сгруппировать данные по различным критериям и применять агрегирующие функции для вычисления статистики. Это помогает аналитикам и исследователям данных делать информированные выводы на основе обобщенных данных.
Содержание: