Задача курса
pandas rank и cumsum: ранг по региону и накопительный итог
Курс «NumPy и pandas: практический тренажёр» · урок «rank и cumsum: ранги и накопительные показатели»
Условие
Турнир по регионам: глобальный ранг, ранг внутри региона и накопительные очки
Вы получаете таблицу участников турнира. Каждый участник принадлежит одному из регионов и набрал некоторое число очков. Нужно вычислить три показателя и вывести итоговую таблицу.
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество участников. - Читает следующие
nстрок; каждая содержит три токена через пробел:name(строка без пробелов),region(строка без пробелов),points(целое число). Пример строки:Даша Север 100. - Создаёт
pd.DataFrameиз словаря списков с ключами'name','region','points'. - Добавляет столбец
rank_global— ранг каждого участника среди всех строк по убываниюpoints,method='min'. - Добавляет столбец
rank_in_region— ранг каждого участника внутри своего региона по убываниюpoints,method='min'. - Сортирует DataFrame сначала по
region(по возрастанию), затем поpoints(по убыванию) черезsort_values. Сбрасывает индекс черезreset_index(drop=True). - Добавляет столбец
cum_points— накопительную суммуpointsвнутри каждогоregionв текущем порядке строк черезgroupby('region')['points'].cumsum(). - Выводит в
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
Без регистрации · результат не сохраняется
