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)
  • Тест 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
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.