df.groupby('channel').agg(
revenue=('amount', 'sum')
)
Результат:
revenue channel ads 4800 email 900 referral 800
df.groupby('channel').agg(
orders=('order_id', 'count'),
revenue=('amount', 'sum'),
avg_check=('amount', 'mean')
)
Результат:
orders revenue avg_check channel ads 3 4800 1600.0 email 2 900 450.0 referral 1 800 800.0
df.groupby('channel').agg(
users=('user_id', 'nunique'),
max_amount=('amount', 'max')
)
Результат:
users max_amount channel ads 3 2100 email 2 450 referral 1 800Порешать Python-задачи в тренажёре →
Классический вопрос «посчитай выручку и число заказов по каналу» — named agg самый чистый ответ. Идёт в паре с reset_index(), sort_values() и pivot_table; проверяют, знаешь ли ты современный синтаксис вместо .agg({'amount':['sum','mean']}).
Словарный синтаксис создаёт мультииндекс в колонках вида ('amount','sum'), с которым неудобно работать дальше. Named aggregation сразу даёт плоские осмысленные имена вроде revenue и avg_check. Плюс можно агрегировать разные колонки в одном вызове без вложенных структур.
Просто повторяй колонку с разными функциями: agg(total=('amount','sum'), avg=('amount','mean')). Каждый аргумент — отдельная выходная колонка. Это удобнее списка функций, потому что имена задаёшь сам.
groupby по умолчанию кладёт ключ в индекс результата. Передай as_index=False в groupby(...) или вызови .reset_index() после agg, чтобы получить обычную колонку. Для дальнейших merge и сохранения в CSV обычно нужен именно reset_index().
groupby · pivot_table · value_counts · rank · pivot · stack / unstack
Открыть Python-тренажёр (556 задач) →