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

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

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

Найди и исправь: три ошибки в bfill, dropna(subset) и dtype после fillna

Что уже дано

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

В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:

  1. Для заполнения пропусков в столбце 'temp' вперёд (каждый пропуск заменяется последним известным значением выше) используется bfill() — хотя нужен ffill().
  2. dropna вызывается с subset=['station'], хотя по условию нужно удалять строки, где пропущен именно столбец 'temp' — то есть subset=['temp'].
  3. Для заполнения пропусков в столбце 'qty' (dtype Int64) используется fillna(-1), но результат приводится через .astype('float64') — хотя nullable-тип Int64 сохраняется после fillna целым числом и приводить к float не нужно; выводить нужно dtype результата fillna без astype.

Каждая ошибка находится в отдельной строке кода. Исправьте все три.

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

Исправьте три ошибки так, чтобы программа:

  1. Читала из stdin целое число n — количество строк таблицы.
  2. Читала следующие n строк; каждая содержит три токена через пробел: station (строка без пробелов), temp (вещественное число или nan), qty (целое число или NA). Создавала pd.DataFrame со столбцами 'station' (object), 'temp' (float64), 'qty' (Int64).
  3. Шаг A. Заполняла пропуски в df['temp'] методом forward fill и сохраняла в s_ff. Выводила значения s_ff через пробел, округлив до одного знака. Если первый элемент — пропуск и ffill не смог его заполнить — выводила nan.
  4. Шаг B. Применяла df.dropna(subset=['temp']) и выводила shape результата в виде drop_shape=<shape>.
  5. Шаг C. Заполняла пропуски в df['qty'] значением -1 через fillna(-1) и выводила qty_dtype=<dtype> — dtype результата (без astype).

Ввод и вывод

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

Формат ввода

n
station0 temp0 qty0
station1 temp1 qty1
...

Токен nan в поле temp означает пропуск (float NaN). Токен NA в поле qty означает пропуск (pd.NA).

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

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

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

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

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    5
    Alpha 12.5 3
    Beta nan 7
    Gamma nan NA
    Delta 18.0 NA
    Epsilon 21.0 2
    Ожидаемый вывод
    12.5 12.5 12.5 18.0 21.0
    drop_shape=(3, 3)
    qty_dtype=Int64
Решение
Как проверяется решение

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

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