Очистка длительностей посещений сайта

тема: Пропуски, дубликаты, выбросы · уровень: продвинутый

Условие

В файле data.csv хранится журнал посещений школьного сайта. Для каждого посещения указаны раздел сайта, дата и длительность в секундах. В некоторых строках длительность отсутствует.

Из стандартного ввода задаются раздел сайта и дата, по которым выбираются строки. Значение ALL во второй строке означает, что подходят посещения за все даты. Строки с пустой длительностью не участвуют в вычислениях.

Для отсортированных длительностей x[0], x[1], ..., x[m-1] определяются квартиль Q1 = x[floor((m-1)/4)] и квартиль Q3 = x[floor(3(m-1)/4)]. Межквартильный размах равен IQR = Q3 - Q1. Выбросом считается длительность v, для которой v < Q1 - 1.5 * IQR или v > Q3 + 1.5 * IQR.

Требуется вывести число отброшенных выбросов и среднюю длительность остальных выбранных посещений. При равенстве длительности с границей допустимого интервала она не считается выбросом. Ограничения гарантируют, что после удаления строк с пропусками остаётся хотя бы одно посещение, а после удаления выбросов остаётся хотя бы одно посещение.

Формат ввода

В первой строке дано название раздела сайта: news, library, clubs или schedule.

Во второй строке дана дата формата YYYY-MM-DD либо строка ALL.

Файл data.csv находится рядом с программой, имеет кодировку UTF-8 и разделитель запятая. Первая строка файла содержит заголовки:

visit_id,visitor_id,page_section,visit_date,visit_duration_sec

Поле visit_duration_sec содержит целое число секунд или пустую строку.

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

Выведите через пробел два числа: количество отброшенных выбросов и среднюю длительность оставшихся посещений.

Среднюю длительность выведите ровно с двумя знаками после десятичной точки.

Ограничения

В файле от 300 до 4000 строк с данными.

visit_id — целое число от 1 до 4000.

visitor_id — целое число от 10000 до 99999.

Длина page_section — от 4 до 8 символов.

visit_date имеет длину 10 символов и формат YYYY-MM-DD.

Непустая visit_duration_sec — целое число от 1 до 2000.

Для указанного сочетания раздела и даты, с учётом значения ALL, имеется от 1 до 4000 строк с непустой длительностью.

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

Куда дальше