Очистка температур по перцентилям
Условие
В файле data.csv записаны измерения температуры воздуха с нескольких погодных станций. В строке может отсутствовать значение температуры: в этом случае поле air_temperature_c пустое.
Программа получает идентификатор одной станции. Из файла выбираются все строки этой станции с непустой температурой. Пустые значения температуры не участвуют в расчётах.
Пусть после удаления пропусков получен отсортированный список температур a[0], a[1], ..., a[m-1]. Пятый перцентиль равен a[floor(0.05 * (m - 1))], а девяносто пятый перцентиль равен a[floor(0.95 * (m - 1))]. Каждая температура x заменяется на max(P5, min(x, P95)), где P5 и P95 — найденные перцентили. Требуется вывести среднее арифметическое заменённых температур.
При равенстве температур все равные значения сохраняются и учитываются как отдельные измерения. Для указанной станции гарантируется хотя бы одно непустое значение температуры.
Формат ввода
Во входном потоке дана одна строка с идентификатором станции station_id.
Данные находятся в файле data.csv в кодировке UTF-8. Разделитель полей — запятая, первая строка содержит заголовки. В файле есть столбцы station_id, date, air_temperature_c. Пустое поле air_temperature_c обозначает пропуск измерения.
Формат вывода
Выведите среднее арифметическое температур после обрезания по пятому и девяносто пятому перцентилям.
Ответ нужно вывести ровно с двумя знаками после точки. Округление производится до ближайшего значения с двумя знаками после точки, а при ровно половинном случае — в сторону от нуля.
Ограничения
Количество строк с данными в файле: от 300 до 4000.
Длина station_id: от 4 до 8 символов из заглавных латинских букв и цифр. Дата имеет формат YYYY-MM-DD и лежит в диапазоне от 2025-01-01 до 2025-12-31. Непустая температура air_temperature_c содержит число с двумя знаками после точки от -60.00 до 60.00.
Для каждого идентификатора станции, который может быть подан во входном потоке, в файле есть хотя бы одна строка с непустой температурой.
Решить задачу с автопроверкой на Python →
Куда дальше
- Python на олимпиадах — где языка хватает с запасом, а где начинают значить лимиты — с замерами
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс
- С нуля до олимпиады: маршрут — сколько занимает язык, какие приёмы нужны и к какому этапу это ведёт