Задача курса

pandas rank и cumsum: ранг по региону и накопительный итог

Курс «NumPy и pandas: практический тренажёр» · урок «rank и cumsum: ранги и накопительные показатели»

Условие

Турнир по регионам: глобальный ранг, ранг внутри региона и накопительные очки

Вы получаете таблицу участников турнира. Каждый участник принадлежит одному из регионов и набрал некоторое число очков. Нужно вычислить три показателя и вывести итоговую таблицу.

Что уже дано

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

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

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

  1. Читает из stdin целое число n — количество участников.
  2. Читает следующие n строк; каждая содержит три токена через пробел: name (строка без пробелов), region (строка без пробелов), points (целое число). Пример строки: Даша Север 100.
  3. Создаёт pd.DataFrame из словаря списков с ключами 'name', 'region', 'points'.
  4. Добавляет столбец rank_global — ранг каждого участника среди всех строк по убыванию points, method='min'.
  5. Добавляет столбец rank_in_region — ранг каждого участника внутри своего региона по убыванию points, method='min'.
  6. Сортирует DataFrame сначала по region (по возрастанию), затем по points (по убыванию) через sort_values. Сбрасывает индекс через reset_index(drop=True).
  7. Добавляет столбец cum_points — накопительную сумму points внутри каждого region в текущем порядке строк через groupby('region')['points'].cumsum().
  8. Выводит в stdout заголовок и строки таблицы. Формат:
  • первая строка: name region points rank_global rank_in_region cum_points
  • каждая следующая строка: значения соответствующих столбцов через пробел; rank_global и rank_in_region выводить как целые числа.

Ввод и вывод

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

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

Формат ввода

n
name1 region1 points1
name2 region2 points2
...

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

name region points rank_global rank_in_region cum_points
name1 region1 points1 rg1 rr1 cp1
...

Примеры

Пример 1

Ввод
6
Даша Север 100
Аня Север 80
Вера Север 80
Боря Юг 95
Егор Юг 85
Гена Юг 70
Ожидаемый результат
name region points rank_global rank_in_region cum_points
Даша Север 100 1 1 100
Аня Север 80 4 2 180
Вера Север 80 4 2 260
Боря Юг 95 2 1 95
Егор Юг 85 3 2 180
Гена Юг 70 6 3 250

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

РешениеPython
Без регистрации · результат не сохраняется