Сумма поездок после восстановления пропусков

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

Условие

В файле data.csv приведён справочник станций городского велопроката. В файле events.csv приведено число поездок, начатых на каждой станции в каждый из десяти дней наблюдения.

В некоторых строках файла events.csv значение trip_count равно NA. Такое значение означает пропуск измерения. Для каждой станции пропуски необходимо восстановить линейной интерполяцией по номеру дня.

Для пропуска в день d, расположенного между известными значениями x_L в день d_L и x_R в день d_R, восстановленное значение равно x(d) = x_L + (x_R - x_L) * (d - d_L) / (d_R - d_L). После восстановления всех пропусков требуется найти сумму числа поездок по всем станциям указанного района и всем дням наблюдения.

Гарантируется, что для каждой станции дни 1 и 10 имеют известные значения, поэтому интерполяция всегда определена. При равенстве числовых значений результат не меняется, так как требуется только их сумма.

Формат ввода

Рядом с программой находятся два файла в кодировке UTF-8 с разделителем-запятой.

Файл data.csv содержит заголовок и строки вида station_id,district,station_name, где station_id — целочисленный идентификатор станции, district — код района, station_name — название станции.

Файл events.csv содержит заголовок и строки вида station_id,day,trip_count, где station_id ссылается на станцию из data.csv, day — номер дня, а trip_count — целое число поездок либо строка NA.

В стандартный ввод подаётся одна строка с кодом района district.

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

Выведите сумму восстановленных значений trip_count для всех станций указанного района за все дни с двумя знаками после точки.

Ограничения

В файле data.csv от 300 до 4000 строк с данными. station_id — целое число от 1 до 1000000. Длина кода района составляет от 3 до 12 символов, длина названия станции — от 1 до 40 символов.

В файле events.csv от 300 до 4000 строк с данными. Для каждой станции из файла data.csv имеется ровно одна строка для каждого дня от 1 до 10. trip_count, если он не равен NA, является целым числом от 0 до 100000. Первый и последний дни каждой станции не содержат пропусков.

Код района из стандартного ввода существует в файле data.csv.

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

Куда дальше