Задача курса
pandas rolling: window и minperiods в задаче
Курс «NumPy и pandas: практический тренажёр» · урок «rolling: скользящие агрегаты по упорядоченным данным»
Проверьте, как размер окна и минимальное число наблюдений влияют на первые значения ряда.
Условие
Скользящее среднее и сумма: window, min_periods и проверка NaN
Вы получаете временной ряд показателей датчика. Нужно:
- отсортировать данные по дню;
- вычислить скользящее среднее и скользящую сумму с заданным окном;
- вывести количество строк с NaN в каждом из двух новых столбцов.
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая:
- Читает из
stdinдва целых числаnиw— количество строк и размер скользящего окна. - Читает следующие
nстрок; каждая содержит два токена через пробел:day(целое число) иvalue(целое число). Строки могут быть в произвольном порядке. - Создаёт
pd.DataFrameсо столбцами'day'и'value'. - Сортирует DataFrame по
'day'черезsort_valuesи сбрасывает индекс черезreset_index(drop=True). Сохраняет результат обратно вdf. - Добавляет столбец
'roll_mean'— скользящее среднее'value'сwindow=w(параметрmin_periodsоставьте по умолчанию, то есть равнымw). - Добавляет столбец
'roll_sum'— скользящую сумму'value'сwindow=w(параметрmin_periodsоставьте по умолчанию). - Выводит в
stdoutровно три строки:
- строка 1:
nan_mean=<k>— число строк с NaN в'roll_mean'; - строка 2:
nan_sum=<k>— число строк с NaN в'roll_sum'; - строка 3: значения
'roll_mean'через пробел, округлённые до 2 знаков; NaN выводится как строкаnan.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Ограничения: n >= 1, w >= 1.
Формат ввода
n w day1 value1 day2 value2 ...
Формат вывода
nan_mean=<k>
nan_sum=<k>
<roll_mean через пробел, NaN как 'nan'>
Примеры
Пример 1
- Ввод
5 3 3 30 1 10 5 50 2 20 4 40
- Ожидаемый результат
nan_mean=2 nan_sum=2 nan nan 20.00 30.00 40.00
Попробуйте решить
РешениеPython
Без регистрации · результат не сохраняется
