melt, pivot_table и explode: широкий и длинный форматы
Содержание курса
Найди и исправь: три ошибки в melt, pivot_table и explode
Что уже дано
В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:
- В вызове
pd.meltне передан параметрid_vars— из-за этого столбец'product'тоже разворачивается в строки вместо того, чтобы оставаться идентификатором. - В вызове
pd.pivot_tableне указан параметрaggfunc— pandas использует'mean'по умолчанию вместо требуемого'sum'. - После
.explode('months')не вызван.reset_index(drop=True)— индекс результата содержит повторяющиеся метки вместо сквозногоRangeIndex.
Каждая ошибка находится в отдельной строке кода. Исправьте все три.
Что нужно сделать
Исправьте три ошибки так, чтобы программа:
- Читала из
stdinцелое числоn— количество строк таблицы продуктов. - Читала следующие
nстрок; каждая содержит три токена через пробел:product(строка без пробелов),jan(целое число),feb(целое число). - Строила
pd.DataFrameиз словаря списков с ключами'product','jan','feb'. - Переводила его в длинный формат через
pd.meltсid_vars=['product'],value_vars=['jan', 'feb'],var_name='month',value_name='sales'. Выводилаmelt_shape=<shape>. - Строила сводную таблицу через
pd.pivot_tableсindex='product',columns='month',values='sales',aggfunc='sum',fill_value=0. Выводилаpivot_sum_jan=<сумма по jan>. - Строила
pd.DataFrameс столбцами'product'(список уникальных продуктов в порядке первого появления) и'months'(для каждого —['jan', 'feb']). Разворачивала через.explode('months').reset_index(drop=True). Выводилаexplode_index=<список меток индекса>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: n >= 1.
Формат ввода
n product1 jan1 feb1 ... productN janN febN
Формат вывода
melt_shape=(<строк>, <столбцов>)
pivot_sum_jan=<число>
explode_index=[0, 1, ..., 2u-1], где u — число уникальных продуктов
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
3 Альфа 100 200 Бета 150 250 Гамма 120 180
Ожидаемый выводmelt_shape=(6, 3) pivot_sum_jan=370 explode_index=[0, 1, 2, 3, 4, 5]
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
