Задача курса

pandas setindex, sortvalues и reindex: задача на рейтинг

Курс «NumPy и pandas: практический тренажёр» · урок «Управление метками: rename, sort_values, set_index, reset_index, reindex»

Условие

Рейтинг отделов: set_index, sort_values по двум ключам и reindex с fill_value

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая выполняет четыре операции над таблицей отделов:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: dept (строка без пробелов), head_count (целое число), budget (целое число). Пример строки: Sales 12 500000.
  3. Строит pd.DataFrame из словаря списков с ключами 'dept', 'head_count', 'budget'.
  4. Шаг A. set_index. Назначает столбец 'dept' индексом. Сохраняет в df2. Выводит одну строку: shape=<df2.shape> columns=<list(df2.columns)>.
  5. Шаг B. sort_values. Сортирует df2 сначала по 'budget' по убыванию, затем при равенстве по 'head_count' по возрастанию. Сохраняет в df3. Выводит одну строку: top_dept=<df3.index[0]>.
  6. Шаг C. reindex. Читает из stdin последнюю строку — список меток через пробел (new_order). Вызывает df3.reindex(new_order, fill_value=0) и сохраняет в df4. Выводит одну строку: budget_sum=<int(df4['budget'].sum())>.
  7. Шаг D. Выводит одну строку: missing_rows=<число строк в df4 с head_count равным 0> — это строки, добавленные reindex для отсутствующих меток.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
dept1 head_count1 budget1
...
deptN head_countN budgetN
мет1 мет2 ... метK

Последняя строка — метки для reindex через пробел. Некоторые метки могут отсутствовать в исходном DataFrame.

Дополнительные ограничения: n >= 1; значения dept попарно различны; head_count >= 1.

Формат вывода

Ровно четыре строки в порядке шагов A–D:

shape=<shape> columns=<list>
top_dept=<строка>
budget_sum=<целое число>
missing_rows=<целое число>

Примеры

Пример 1

Ввод
4
Sales 12 500000
HR 5 200000
IT 20 800000
Legal 8 200000
IT Sales Finance HR
Ожидаемый результат
shape=(4, 2) columns=['head_count', 'budget']
top_dept=IT
budget_sum=1500000
missing_rows=1

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется