Задача курса

pandas explode и groupby: подсчёт тегов товаров

Курс «NumPy и 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

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

Попробуйте решить

РешениеPython
Без регистрации · результат не сохраняется
pandas explode и groupby: подсчёт тегов товаров