Максимум скользящего среднего посылок

тема: Временные ряды и окна · уровень: средний

Условие

В файле data.csv хранится число посылок, принятых пунктом выдачи в каждый рабочий день. Строки файла расположены в хронологическом порядке.

Необходимо найти наибольшее скользящее среднее числа принятых посылок для окна из k последовательных дней. Для окна, начинающегося в строке с номером s, его среднее равно

A_s = (x_s + x_(s+1) + ... + x_(s+k-1)) / k,

где x_i — значение столбца parcels_received в строке i.

Требуется вывести значение max(A_s) по всем допустимым окнам. Если наибольшее значение достигается у нескольких окон, выбирается окно, которое раньше начинается в файле, однако в ответ всё равно выводится только значение среднего.

Пропусков в столбце parcels_received нет. Так как 1 <= k <= n, каждое рассматриваемое окно содержит ровно k строк.

Формат ввода

В первой и единственной строке stdin задано целое число k — длина окна.

Рядом с программой находится файл data.csv в кодировке UTF-8. Разделитель полей — запятая, первая строка содержит заголовки. В файле имеются столбцы date и parcels_received.

Столбец date содержит дату в формате YYYY-MM-DD. Столбец parcels_received содержит целое число принятых посылок за этот день.

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

Выведите наибольшее скользящее среднее с двумя знаками после точки.

Ограничения

В файле data.csv от 300 до 2000 строк с данными, в используемом наборе данных — 360 строк.

1 <= k <= n, где n — число строк с данными в файле.

Длина значения в столбце date равна 10 символам. Даты находятся в диапазоне от 2025-01-01 до 2025-12-31.

35 <= parcels_received <= 149.

Решить задачу с автопроверкой на Python →

Куда дальше