Задача курса
pandas rank: методы ранжирования и накопительная сумма
Курс «NumPy и pandas: практический тренажёр» · урок «rank и cumsum: ранги и накопительные показатели»
Условие
Рейтинг продавцов: три метода rank и накопительная сумма после сортировки
Вы получаете таблицу продавцов с их месячной выручкой. Нужно сравнить три варианта ранжирования и вычислить накопительную сумму в порядке убывания выручки.
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinцелое числоn— количество продавцов. - Читает следующие
nстрок; каждая содержит два токена через пробел:name(строка без пробелов) иrevenue(целое число). Пример строки:Аня 8000. - Создаёт
pd.DataFrameиз словаря списков с ключами'name'и'revenue'. - Добавляет три столбца рангов по убыванию
revenue(ascending=False):
'rank_avg'—method='average';'rank_min'—method='min';'rank_first'—method='first'.
- Сортирует DataFrame по
'revenue'по убыванию черезsort_values, сбрасывает индекс черезreset_index(drop=True). - Добавляет столбец
'cum_revenue'— накопительную суммуrevenueв текущем (уже отсортированном) порядке черезdf['revenue'].cumsum(). - Выводит в
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
Без регистрации · результат не сохраняется
