Задача курса
pandas pivottable: продажи по отделам и кварталам
Курс «NumPy и pandas: практический тренажёр» · урок «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
Попробуйте решить
РешениеPython
Без регистрации · результат не сохраняется
