Задача курса
pandas setindex, sortvalues и reindex: задача на рейтинг
Курс «NumPy и pandas: практический тренажёр» · урок «Управление метками: rename, sort_values, set_index, reset_index, reindex»
Условие
Рейтинг отделов: set_index, sort_values по двум ключам и reindex с fill_value
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая выполняет четыре операции над таблицей отделов:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:dept(строка без пробелов),head_count(целое число),budget(целое число). Пример строки:Sales 12 500000. - Строит
pd.DataFrameиз словаря списков с ключами'dept','head_count','budget'. - Шаг A. set_index. Назначает столбец
'dept'индексом. Сохраняет вdf2. Выводит одну строку:shape=<df2.shape> columns=<list(df2.columns)>. - Шаг B. sort_values. Сортирует
df2сначала по'budget'по убыванию, затем при равенстве по'head_count'по возрастанию. Сохраняет вdf3. Выводит одну строку:top_dept=<df3.index[0]>. - Шаг C. reindex. Читает из
stdinпоследнюю строку — список меток через пробел (new_order). Вызываетdf3.reindex(new_order, fill_value=0)и сохраняет вdf4. Выводит одну строку:budget_sum=<int(df4['budget'].sum())>. - Шаг 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
Без регистрации · результат не сохраняется
