pandas: группировки, соединения и упорядоченные показатели

groupby и agg: сводные показатели с явными именами агрегатов

Содержание курса

Один ключ, два способа плоской таблицы: as_index=False и reset_index

Что уже дано

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

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

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

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит три токена через пробел: store (строка без пробелов), qty (целое число), revenue (целое число). Пример строки: Alpha 10 5000.
  3. Создаёт pd.DataFrame из словаря списков с ключами 'store', 'qty', 'revenue'.
  4. Способ A. Группирует DataFrame по 'store' с as_index=False и вычисляет за один вызов agg два агрегата: total_qty=('qty', 'sum') и total_rev=('revenue', 'sum'). Сохраняет результат в result_a.
  5. Способ B. Группирует тот же DataFrame по 'store' без as_index=False и вычисляет те же два агрегата с теми же именами. Затем применяет .reset_index(). Сохраняет в result_b.
  6. Выводит в stdout три служебные строки, а затем по одной строке для каждой строки result_a:
  • columns_a=<список>list(result_a.columns) в виде Python-списка;
  • columns_b=<список>list(result_b.columns);
  • equal=<bool> — результат result_a.equals(result_b) (True если таблицы идентичны);
  • для каждой строки result_a, отсортированной по 'store', выводит одну строку вида <store> <total_qty> <total_rev>.

Ввод и вывод

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

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

Формат ввода

n
store1 qty1 rev1
store2 qty2 rev2
...

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

columns_a=['store', 'total_qty', 'total_rev']
columns_b=['store', 'total_qty', 'total_rev']
equal=True
<store> <total_qty> <total_rev>
...
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    5
    Alpha 10 5000
    Beta 4 2000
    Alpha 6 3000
    Beta 8 4000
    Gamma 12 6000
    
    Ожидаемый вывод
    columns_a=['store', 'total_qty', 'total_rev']
    columns_b=['store', 'total_qty', 'total_rev']
    equal=True
    Alpha 16 8000
    Beta 12 6000
    Gamma 12 6000
    
Решение
Как проверяется решение

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

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