melt, pivot_table и explode: широкий и длинный форматы
Содержание курса
Сводная таблица продаж по отделам и кварталам: pivot_table с aggfunc, fill_value и reset_index
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая строит сводную таблицу продаж из длинного формата.
- Читает из
stdinцелое числоn— количество строк таблицы (n >= 1). - Читает следующие
nстрок; каждая содержит три токена через пробел:dept(строка без пробелов),quarter(строка видаQ1,Q2и т.д.),amount(целое число). Пример строки:Alpha Q1 700. - Строит
pd.DataFrameиз словаря списков с ключами'dept','quarter','amount'. - Строит сводную таблицу через
pd.pivot_tableс параметрами:
index='dept'columns='quarter'values='amount'aggfunc='sum'— явно, так как одна пара(dept, quarter)может встречаться несколько разfill_value=0— заполнить отсутствующие комбинации нулём
- Сохраняет результат в
pt. Вызываетpt.reset_index(), сохраняет вpt_flat. Убирает имя оси столбцов:pt_flat.columns.name = None. - Выводит строку:
shape=<shape>— формуpt_flatв виде(строк, столбцов), напримерshape=(3, 3). - Выводит строку:
columns=<список>— список столбцовpt_flatв виде Python-списка, напримерcolumns=['dept', 'Q1', 'Q2']. Порядок столбцов —'dept', затем столбцы кварталов в алфавитном порядке (pandas сортирует их автоматически). - Для каждой строки
pt_flat(в порядке строк) выводит одну строку вида:<dept> total=<сумма всех кварталов>. Сумму вычисляйте как сумму всех числовых столбцовpt_flat(то есть всех столбцов, кроме'dept').
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: n >= 1.
Формат ввода
n dept1 quarter1 amount1 ... deptN quarterN amountN
Гарантируется: n >= 1; все значения dept и quarter — строки без пробелов; amount — целое число.
Формат вывода
shape=(<строк>, <столбцов>)
columns=[...]
<dept1> total=<число>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
6 Alpha Q1 1000 Beta Q1 500 Gamma Q2 400 Alpha Q2 300 Alpha Q1 700 Gamma Q1 0
Ожидаемый выводshape=(3, 3) columns=['dept', 'Q1', 'Q2'] Alpha total=2000 Beta total=500 Gamma total=400
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
