groupby и transform: групповые признаки на уровне строк и фильтрация групп
Содержание курса
Фильтрация отделов по числу сотрудников через transform('count')
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:dept(строка без пробелов),employee(строка без пробелов),hours(целое число). Пример строки:Dev Alpha 40. - Создаёт
pd.DataFrameс именемdfиз словаря списков с ключами'dept','employee','hours'. - Добавляет столбец
'dept_hours_sum'— суммарные часы по каждомуdeptдля каждой строки — черезdf.groupby('dept')['hours'].transform('sum'). - Добавляет столбец
'dept_count'— число сотрудников в каждомdeptдля каждой строки — черезdf.groupby('dept')['hours'].transform('count'). - Читает из
stdinцелое числоmin_count— минимальный размер отдела. - Строит булевую маску
mask = df['dept_count'] >= min_countи создаётdf_big = df.loc[mask]. - Выводит в
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 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
