Задача курса

pandas rank: методы ранжирования и накопительная сумма

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

Условие

Рейтинг продавцов: три метода rank и накопительная сумма после сортировки

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

Что уже дано

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

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

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

  1. Читает из stdin целое число n — количество продавцов.
  2. Читает следующие n строк; каждая содержит два токена через пробел: name (строка без пробелов) и revenue (целое число). Пример строки: Аня 8000.
  3. Создаёт pd.DataFrame из словаря списков с ключами 'name' и 'revenue'.
  4. Добавляет три столбца рангов по убыванию revenue (ascending=False):
  • 'rank_avg' — method='average';
  • 'rank_min' — method='min';
  • 'rank_first' — method='first'.
  1. Сортирует DataFrame по 'revenue' по убыванию через sort_values, сбрасывает индекс через reset_index(drop=True).
  2. Добавляет столбец 'cum_revenue' — накопительную сумму revenue в текущем (уже отсортированном) порядке через df['revenue'].cumsum().
  3. Выводит в stdout заголовок и строки таблицы. Формат:
  • первая строка: name revenue rank_avg rank_min rank_first cum_revenue
  • каждая следующая строка: значения через пробел; rank_avg выводить с одним знаком после запятой, rank_min и rank_first — тоже с одним знаком, cum_revenue — целое число.

Ввод и вывод

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

Формат ввода

n
name1 revenue1
name2 revenue2
...

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

name revenue rank_avg rank_min rank_first cum_revenue
name1 revenue1 ra1 rm1 rf1 cr1
...

Примеры

Пример 1

Ввод
5
Аня 8000
Боря 12000
Вера 8000
Гена 5000
Даша 15000
Ожидаемый результат
name revenue rank_avg rank_min rank_first cum_revenue
Даша 15000 1.0 1.0 1.0 15000
Боря 12000 2.0 2.0 2.0 27000
Аня 8000 3.5 3.0 3.0 35000
Вера 8000 3.5 3.0 4.0 43000
Гена 5000 5.0 5.0 5.0 48000

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

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