Получить доступ

Как работать с пропущенными значениями в данных?

JuniorPython и pandaspandas
Ещё спрашивают так:
  • Можно ли заполнить пропуски средним?
Коротко

Сначала понять, почему значение пропущено: технический сбой, «не применимо» (нет второго адреса), пользователь не захотел указывать. Пропуск часто несёт информацию. Варианты: исключить строки (если пропусков мало и они случайны), заполнить (медианой, отдельной категорией, прошлым значением для временных рядов), оставить пропуск и добавить флаг «было пропущено».

  • Заполнение средним сжимает дисперсию и искажает связи
  • NULL в SQL и NaN в pandas ведут себя по-разному в агрегатах и сравнениях
  • Доля пропусков по времени — индикатор поломки сбора данных

А ещё Многие модели бустинга умеют работать с пропусками сами

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Механизмы пропусков:

  • полностью случайные — сбой записи без связи с данными;
  • зависящие от других признаков — старые клиенты чаще без email;
  • зависящие от самого значения — люди с высоким доходом чаще не указывают доход. Здесь любое простое заполнение вносит смещение.

Инструменты pandas: isna().mean() — доля пропусков по столбцам, fillna, ffill для рядов, dropna(subset=…), отдельная категория "unknown" для строк.

NULL против NaN: в SQL AVG игнорирует NULL, COUNT(col) их не считает, NULL = NULL — не истина. В pandas mean пропускает NaN по умолчанию, а sum пустого столбца — 0. Расхождения отчётов часто отсюда.

Что хотят услышать

  • Причины пропусков и почему это важно.
  • Способы обработки и их цена.
  • Различие NULL в SQL и NaN в pandas.

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем