groupby и agg: сводные показатели с явными именами агрегатов
Содержание курса
Пайплайн: groupby + agg + rename + sort, затем группировка по двум ключам
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит четыре токена через пробел:month(строка без пробелов),category(строка без пробелов),amount(целое число),transactions(целое число). Пример строки:Jan Food 1200 12. - Создаёт
pd.DataFrameиз словаря списков с ключами'month','category','amount','transactions'. - Шаг A. Группирует DataFrame по
'month'сas_index=Falseи вычисляет за один вызовaggтри именованных агрегата:month_total=('amount', 'sum'),month_avg=('amount', 'mean'),month_tx=('transactions', 'sum'). Сохраняет вmonthly. - Шаг B. Переименовывает столбец
'month_total'в'total'черезrename(columns=...)и сохраняет результат обратно вmonthly. - Шаг C. Сортирует
monthlyпо'total'по возрастанию черезsort_values. Выводит строкуmonthly_columns=<список>—list(monthly.columns), затем для каждой строки отсортированногоmonthlyвыводит одну строку вида<month> <total> <round(month_avg, 1)> <month_tx>. - Шаг D. Группирует исходный DataFrame по
['month', 'category']сas_index=Falseи вычисляетcat_total=('amount', 'sum'). Сохраняет вby_cat. Сортируетby_catпо'month', затем по'category'. Выводит строкуby_cat_columns=<список>, затем для каждой строки выводит<month> <category> <cat_total>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: n >= 1.
Формат ввода
n month1 category1 amount1 transactions1 month2 category2 amount2 transactions2 ...
Формат вывода
monthly_columns=['month', 'total', 'month_avg', 'month_tx']
<month> <total> <month_avg> <month_tx>
...
by_cat_columns=['month', 'category', 'cat_total']
<month> <category> <cat_total>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
8 Jan Food 1200 12 Jan Tech 3500 5 Feb Food 900 9 Feb Tech 4200 6 Jan Food 800 8 Feb Food 650 7 Jan Tech 2000 3 Feb Tech 1500 4
Ожидаемый выводmonthly_columns=['month', 'total', 'month_avg', 'month_tx'] Feb 7250 1812.5 26 Jan 7500 1875.0 28 by_cat_columns=['month', 'category', 'cat_total'] Feb Food 1550 Feb Tech 5700 Jan Food 2000 Jan Tech 5500
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
