Пропуски в таблице: обнаружение, dropna, fillna и nullable dtype
Содержание курса
Найди и исправь: три ошибки в bfill, dropna(subset) и dtype после fillna
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:
- Для заполнения пропусков в столбце
'temp'вперёд (каждый пропуск заменяется последним известным значением выше) используетсяbfill()— хотя нуженffill(). dropnaвызывается сsubset=['station'], хотя по условию нужно удалять строки, где пропущен именно столбец'temp'— то естьsubset=['temp'].- Для заполнения пропусков в столбце
'qty'(dtypeInt64) используетсяfillna(-1), но результат приводится через.astype('float64')— хотя nullable-типInt64сохраняется послеfillnaцелым числом и приводить к float не нужно; выводить нужноdtypeрезультатаfillnaбезastype.
Каждая ошибка находится в отдельной строке кода. Исправьте все три.
Что нужно сделать
Исправьте три ошибки так, чтобы программа:
- Читала из
stdinцелое числоn— количество строк таблицы. - Читала следующие
nстрок; каждая содержит три токена через пробел:station(строка без пробелов),temp(вещественное число илиnan),qty(целое число илиNA). Создавалаpd.DataFrameсо столбцами'station'(object),'temp'(float64),'qty'(Int64). - Шаг A. Заполняла пропуски в
df['temp']методом forward fill и сохраняла вs_ff. Выводила значенияs_ffчерез пробел, округлив до одного знака. Если первый элемент — пропуск иffillне смог его заполнить — выводилаnan. - Шаг B. Применяла
df.dropna(subset=['temp'])и выводила shape результата в видеdrop_shape=<shape>. - Шаг 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Ввод
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 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
