pandas: типы столбцов и очистка по правилу

Пропуски в таблице: обнаружение, dropna, fillna и nullable dtype

Содержание курса

Пропуски в журнале датчиков: isna, dropna, fillna и ffill за один проход

Что уже дано

Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.

Что нужно сделать

Напишите программу, которая обрабатывает журнал показаний датчика:

  1. Читает из stdin целое число n — количество строк журнала.
  2. Читает следующие n строк; каждая содержит два токена через пробел: hour (целое число от 0 до 23) и value (вещественное число или строка nan). Создаёт pd.DataFrame с именем df со столбцами 'hour' (dtype int64) и 'value' (dtype float64).
  3. Шаг A. Выводит одну строку: missing=<k>, где k — число пропущенных значений в столбце 'value' (через df['value'].isna().sum()).
  4. Шаг B. Удаляет строки, где 'value' пропущен, через df.dropna(subset=['value']). Сохраняет результат в df_clean. Выводит одну строку: clean_shape=<shape>, например clean_shape=(4, 2).
  5. Шаг C. Заполняет пропуски в df['value'] константой 0.0 через fillna. Сохраняет результат в s_filled. Выводит значения s_filled через пробел, округлив до одного знака.
  6. Шаг D. Заполняет пропуски в df['value'] методом ffill(). Сохраняет результат в s_ffill. Выводит значения s_ffill через пробел, округлив до одного знака. Если первый элемент оказался пропуском и ffill не смог его заполнить — выводит nan для этой позиции.

Во всех шагах исходный df не изменяется.

Ввод и вывод

Программа читает stdin и пишет в stdout.

Формат ввода

n
hour0 value0
hour1 value1
...

Токен nan в поле value означает пропуск.

Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.

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

Ровно четыре строки в порядке A → B → C → D.

О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    6
    0 10.0
    1 nan
    2 nan
    3 25.0
    4 nan
    5 30.0
    
    Ожидаемый вывод
    missing=3
    clean_shape=(3, 2)
    10.0 0.0 0.0 25.0 0.0 30.0
    10.0 10.0 10.0 25.0 25.0 30.0
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.

Отправьте решение, чтобы увидеть результаты тестов.