df.groupby('manager').agg(
total=('amount', 'sum'),
avg=('amount', 'mean'),
deals=('amount', 'count'),
)
Результат:
total avg deals manager Anna 400 200.0 2 Bob 200 66.7 3
df['share'] = df['amount'] / df.groupby('manager')['amount'].transform('sum')
Результат:
manager amount share 0 Anna 100 0.25 1 Anna 300 0.75Порешать Python-задачи в тренажёре →
groupby — базовый вопрос на собеседовании по pandas. Спрашивают разницу между agg (агрегат, схлопывает группу), transform (результат длины исходного df, для доли/нормализации) и apply (произвольная функция). Умей объяснить связь с SQL GROUP BY.
agg возвращает по одному значению на группу (схлопывает). transform возвращает результат той же длины, что исходный df (удобно для доли внутри группы). apply — самый гибкий, но медленный: применяет произвольную функцию к каждой группе.
Named aggregation: df.groupby('k').agg(total=('x','sum'), avg=('x','mean')) — чистые имена колонок за один проход, без MultiIndex.
По умолчанию ключ группировки становится индексом. Верни его в столбцы через as_index=False в groupby или .reset_index() после агрегации.
Pandas groupby · Pandas: основы
merge · pivot_table · apply · value_counts · drop_duplicates · fillna
Открыть Python-тренажёр (556 задач) →