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

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

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

dropna с how и subset: диагностика формы после каждого удаления

Что уже дано

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

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

Напишите программу, которая:

  1. Читает из stdin целое число n — количество строк таблицы.
  2. Читает следующие n строк; каждая содержит четыре токена через пробел:
  • id — целое число;
  • region — строка или NA (пропуск);
  • amount — вещественное число или NA (пропуск);
  • tag — строка или NA (пропуск).
  1. Строит pd.DataFrame с именем df со столбцами 'id' (int64), 'region' (object), 'amount' (float64), 'tag' (object). Токен NA заменяется на None для строковых столбцов и на float('nan') для числового.
  2. Шаг A. Вычисляет df.isna().sum() и выводит строку:
    isna_sum=<id> <region> <amount> <tag> — четыре числа через пробел.
  3. Шаг B. Применяет df.dropna(how='any'). Выводит drop_any=<shape>, например drop_any=(3, 4).
  4. Шаг C. Применяет df.dropna(subset=['region', 'amount'], how='all'). Выводит drop_subset_all=<shape>.
  5. Шаг D. Применяет df.dropna(axis=1, how='all'). Выводит drop_cols= и следом через пробел имена оставшихся столбцов. Если удалённых столбцов нет — выводит только drop_cols= и пустую строку (то есть drop_cols=\n).

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

Ввод и вывод

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

Формат ввода

n
id0 region0 amount0 tag0
id1 region1 amount1 tag1
...

Токен NA означает пропуск в соответствующем столбце.

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

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

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

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

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

Проверяется тестами (1)
  • Тест 1
    Ввод
    5
    1 Север 100.0 ok
    2 NA 200.0 NA
    3 Юг NA NA
    4 NA NA NA
    5 Восток 500.0 done
    
    Ожидаемый вывод
    isna_sum=0 2 2 3
    drop_any=(2, 4)
    drop_subset_all=(4, 4)
    drop_cols=id region amount tag
    
Решение
Как проверяется решение

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

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