Задача курса

pandas transform count: фильтрация групп по числу строк

Курс «NumPy и pandas: практический тренажёр» · урок «groupby и transform: групповые признаки на уровне строк и фильтрация групп»

Условие

Фильтрация отделов по числу сотрудников через transform('count')

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: dept (строка без пробелов), employee (строка без пробелов), hours (целое число). Пример строки: Dev Alpha 40.
  3. Создаёт pd.DataFrame с именем df из словаря списков с ключами 'dept', 'employee', 'hours'.
  4. Добавляет столбец 'dept_hours_sum' — суммарные часы по каждому dept для каждой строки — через df.groupby('dept')['hours'].transform('sum').
  5. Добавляет столбец 'dept_count' — число сотрудников в каждом dept для каждой строки — через df.groupby('dept')['hours'].transform('count').
  6. Читает из stdin целое число min_count — минимальный размер отдела.
  7. Строит булевую маску mask = df['dept_count'] >= min_count и создаёт df_big = df.loc[mask].
  8. Выводит в stdout ровно четыре блока:
  • Блок 1. Строку dept_hours_sum:, затем значения столбца 'dept_hours_sum' через пробел (в порядке исходных строк).
  • Блок 2. Строку dept_count:, затем значения столбца 'dept_count' через пробел.
  • Блок 3. Строку big_dept rows: <k>, где k — число строк в df_big.
  • Блок 4. Для каждой строки df_big (в порядке исходного индекса) одну строку вида <dept> <employee> <hours>.

Ввод и вывод

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

Ограничения: n >= 1.

Формат ввода

n
dept1 employee1 hours1
...
deptN employeeN hoursN
min_count

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

dept_hours_sum:
<v1> <v2> ... <vN>
dept_count:
<c1> <c2> ... <cN>
big_dept rows: <k>
<dept> <employee> <hours>
...

Примеры

Пример 1

Ввод
8
Dev Alpha 40
Dev Beta 30
Dev Gamma 50
HR Onboard 20
HR Recruit 25
HR Policy 15
QA Smoke 40
QA Regress 40
3
Ожидаемый результат
dept_hours_sum:
120 120 120 60 60 60 80 80
dept_count:
3 3 3 3 3 3 2 2
big_dept rows: 6
Dev Alpha 40
Dev Beta 30
Dev Gamma 50
HR Onboard 20
HR Recruit 25
HR Policy 15

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

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