groupby и transform: групповые признаки на уровне строк и фильтрация групп
Содержание курса
Флаг «выше среднего по региону»: transform('mean') и векторное сравнение
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:region(строка без пробелов),manager(строка без пробелов),sales(целое число). Пример строки:Север Аня 200. - Создаёт
pd.DataFrameс именемdfиз словаря списков с ключами'region','manager','sales'. - Добавляет столбец
'region_avg'— среднееsalesпо каждомуregionдля каждой строки — черезdf.groupby('region')['sales'].transform('mean'). - Добавляет булев столбец
'above_avg'—True, еслиsalesданной строки строго большеregion_avg. Используйте векторное сравнение без циклов. - Выводит в
stdoutровноn + 2строк:
- Строки 1…n: для каждой строки (в исходном порядке) одну строку вида
<manager> <region_avg_rounded_to_1> <above_avg>, гдеregion_avgокруглён до одного знака после запятой,above_avg—TrueилиFalse. - Строка n+1:
above_count: <k>— число строк, гдеabove_avgравенTrue(черезdf['above_avg'].sum()). - Строка n+2:
shape: <shape>— кортежdf.shape.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: n >= 1.
Формат ввода
n region1 manager1 sales1 ... regionN managerN salesN
Формат вывода
manager1 region_avg1 above_avg1
...
managerN region_avgN above_avgN
above_count: <k>
shape: (<n>, <cols>)
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
8 Север Аня 200 Юг Боря 150 Север Вера 300 Восток Гена 100 Юг Даша 250 Восток Егор 180 Север Жора 220 Юг Зина 90
Ожидаемый выводАня 240.0 False Боря 163.3 False Вера 240.0 True Гена 140.0 False Даша 163.3 True Егор 140.0 True Жора 240.0 False Зина 163.3 False above_count: 3 shape: (8, 5)
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
