Как работать с пропущенными значениями в данных?
- Можно ли заполнить пропуски средним?
Сначала понять, почему значение пропущено: технический сбой, «не применимо» (нет второго адреса), пользователь не захотел указывать. Пропуск часто несёт информацию. Варианты: исключить строки (если пропусков мало и они случайны), заполнить (медианой, отдельной категорией, прошлым значением для временных рядов), оставить пропуск и добавить флаг «было пропущено».
- Заполнение средним сжимает дисперсию и искажает связи
- NULL в SQL и NaN в pandas ведут себя по-разному в агрегатах и сравнениях
- Доля пропусков по времени — индикатор поломки сбора данных
А ещё Многие модели бустинга умеют работать с пропусками сами
Подробно
Механизмы пропусков:
- полностью случайные — сбой записи без связи с данными;
- зависящие от других признаков — старые клиенты чаще без 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.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Всегда заполнять пропуски средним по колонке: так не теряются строки и не меняется распределение признака
- ✗Всегда удалять строки с пропусками
- ✓Понять причину пропуска; исключить, заполнить или оставить с флагом — пропуск несёт информацию
- ✗NULL в SQL и NaN в pandas ведут себя одинаково при сравнениях
Разбор темы
- Признаки, утечки и честная валидация
Как строить признаки, находить утечку данных, выбирать схему кросс-валидации и читать кривые обучения.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.