groupby и transform: групповые признаки на уровне строк и фильтрация групп
Содержание курса
Фильтрация магазинов по суммарной выручке через transform + булевую маску
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит три токена через пробел:store(строка без пробелов),product(строка без пробелов),revenue(целое число). Пример строки:Alpha Laptop 300. - Создаёт
pd.DataFrameс именемdfиз словаря списков с ключами'store','product','revenue'. - Добавляет в
dfстолбец'store_total'— суммарную выручку каждого магазина для каждой строки — черезdf.groupby('store')['revenue'].transform('sum'). - Читает из
stdinцелое числоthreshold. - Строит булевую маску
mask = df['store_total'] > thresholdи создаётdf_big = df.loc[mask]. - Выводит в
stdoutровно три блока:
- Блок 1. Строку
store_total values:, затем значения столбца'store_total'через пробел (в порядке исходных строк). - Блок 2. Строку
filtered rows: <k>, гдеk— число строк вdf_big. - Блок 3. Для каждой строки
df_big(в порядке возрастания исходного индекса) одну строку вида<store> <product> <revenue>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n store1 product1 revenue1 ... storeN productN revenueN threshold
Формат вывода
store_total values:
<v1> <v2> ... <vN>
filtered rows: <k>
<store> <product> <revenue>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
8 Alpha Laptop 300 Beta Phone 150 Alpha Monitor 200 Gamma Tablet 80 Beta Cable 50 Gamma Mouse 40 Alpha Keyboard 100 Beta Charger 60 250
Ожидаемый выводstore_total values: 600 260 600 120 260 120 600 260 filtered rows: 6 Alpha Laptop 300 Beta Phone 150 Alpha Monitor 200 Beta Cable 50 Alpha Keyboard 100 Beta Charger 60
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
