Короткий ответ
groupby('col') разбивает DataFrame на группы по значениям столбца, а последующий agg-метод (sum, mean и так далее) считает статистику внутри каждой группы отдельно.
Как это работает подробнее
groupby сам по себе не вычисляет ничего, а создаёт объект-группировку; вызов .sum(), .mean() или .agg(...) применяет функцию к каждой группе независимо и собирает результат в новый DataFrame или Series с группами в индексе.
Пример кода
Пример Python
import pandas as pd
df = pd.DataFrame({'category': ['A', 'A', 'B', 'B'], 'amount': [100, 200, 50, 150]})
summary = df.groupby('category')['amount'].agg(['sum', 'mean']).reset_index()
print(summary)Что использовать на практике
- На практике: для нескольких статистик сразу удобно использовать .agg(['sum', 'mean', 'count']); после группировки результат часто приводят обратно к обычному DataFrame через reset_index(), чтобы было удобнее работать с группировочным столбцом как с обычной колонкой.
- Проверка: для категории A сумма должна быть 300, среднее 150; для B сумма 200, среднее 100 — легко проверить вручную по исходным значениям.
Подводные камни
- Частые ошибки: применяют groupby к столбцам с пропусками в группировочном ключе — такие строки по умолчанию исключаются из результата в более старых версиях pandas (а в более новых есть параметр dropna=False), что может незаметно потерять часть данных; забывают, что среднее по группе также чувствительно к выбросам внутри группы, как и обычное среднее.