Регион с наибольшей средней температурой

тема: Связывание таблиц · уровень: продвинутый

Условие

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

Каждое измерение связано со станцией по полю station_id. Станция связана с населённым пунктом по полю locality_id, а населённый пункт содержит название региона в поле region_name. Таким образом, регион измерения определяется двумя последовательными соединениями справочников.

Для месяца из stdin требуется определить регион с наибольшей средней температурой. Для региона r средняя температура вычисляется по формуле \(\overline{x}_r = \frac{\sum x_i}{k_r}\), где сумма берётся по всем непустым значениям temperature_c измерений указанного месяца, относящихся к региону r, а \(k_r\) — количество таких значений. Строки с пустым temperature_c считаются пропусками и в сумму и количество не входят.

Гарантируется, что для каждого региона есть хотя бы одно непустое измерение в каждом допустимом месяце. Если наибольшая средняя температура достигается у нескольких регионов, выводится лексикографически меньшее имя региона.

Округление не применяется, поскольку ответом является имя региона.

Формат ввода

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

record_type,station_id,locality_id,region_name,date,temperature_c

Поле record_type имеет одно из значений locality, station или reading.

У строк типа locality заполнены поля locality_id и region_name. У строк типа station заполнены поля station_id и locality_id. У строк типа reading заполнены поля station_id, date и temperature_c; значение temperature_c может быть пустым.

В stdin подаётся одна строка с месяцем в формате YYYY-MM.

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

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

Ограничения

В файле от 300 до 4000 строк данных без учёта заголовка.

Длина station_id составляет от 3 до 12 символов, длина locality_id — от 3 до 12 символов, длина region_name — от 3 до 40 символов. Поле date имеет формат YYYY-MM-DD. Значение temperature_c является десятичным числом от -50.0 до 60.0 с не более чем одним знаком после точки либо пустой строкой. Месяц из stdin имеет формат 2025-MM, где MM — целое число от 01 до 12.

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

Куда дальше