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

melt, pivot_table и explode: широкий и длинный форматы

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

Теги товаров: explode и groupby после разворачивания списков

Что уже дано

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

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

Напишите программу, которая работает с таблицей товаров, где у каждого товара есть список тегов и число единиц на складе.

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит несколько токенов через пробел:
  • первый токен — product (строка без пробелов);
  • второй токен — product_count (целое число);
  • все последующие токены — теги товара (одно или несколько слов без пробелов внутри).

Пример строки: Стол 3 дерево мебель

  1. Строит pd.DataFrame из словаря списков с ключами 'product', 'product_count' и 'tags', где 'tags' — список тегов для каждого товара.
  2. Разворачивает столбец 'tags' через .explode('tags').reset_index(drop=True) и сохраняет в df_ex.
  3. Выводит строку: explode shape=<shape> — например, explode shape=(5, 3).
  4. Выводит строку: tag columns=<список столбцов df_ex> — список столбцов в виде Python-списка.
  5. Группирует df_ex по столбцу 'tags' с as_index=False и вычисляет агрегат product_count=('product_count', 'sum'). Сохраняет в grouped. Сортирует grouped по 'product_count' по убыванию, затем по 'tags' по возрастанию (для стабильного порядка при одинаковых суммах). Сбрасывает индекс через reset_index(drop=True).
  6. Для каждой строки grouped выводит одну строку вида: <tag> <product_count>.

Ввод и вывод

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

Формат ввода

n
product1 count1 tag1a tag1b ...
...
productN countN tagNa ...

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

explode shape=(<строк>, <столбцов>)
tag columns=['product', 'product_count', 'tags']
<tag1> <sum1>
...
О данных в ответах

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    3
    Стол 3 дерево мебель
    Стул 2 пластик мебель
    Лампа 1 свет
    
    Ожидаемый вывод
    explode shape=(5, 3)
    tag columns=['product', 'product_count', 'tags']
    мебель 5
    дерево 3
    пластик 2
    свет 1
    
Решение
Как проверяется решение

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

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