df.fillna(значение) заменяет пропуски NaN на заданное значение: константу, среднее/медиану колонки или соседнее значение (ffill — предыдущим, bfill — следующим). Обработка пропусков — обязательный шаг предобработки, а выбор способа заполнения напрямую влияет на метрики и модели.
Заполнять средним опасно на скошенных данных (выручка, цена) — выбросы тянут среднее, лучше медиана. ffill/bfill корректны только на отсортированных временных рядах, иначе «протянешь» не то значение. И помни: пустая строка '' или 0 — это НЕ NaN, fillna их не тронет; сначала приведи к NaN через replace или NULLIF-логику. inplace=True устарел — присваивай результат обратно.
Где спрашивают на собеседовании
fillna — база предобработки, вопрос про пропуски есть почти в каждом ML/аналитическом собесе. Ценят понимание, чем заполнять (0 / медиана / ffill) в зависимости от природы данных и почему среднее хуже медианы на скошенных распределениях.
FAQ: частые вопросы про fillna
Чем fillna отличается от dropna?
fillna заполняет пропуски значением (сохраняет строки), dropna удаляет строки или столбцы с NaN. Выбор зависит от того, можно ли терять данные и есть ли осмысленное значение для заполнения.
Что такое ffill и bfill?
ffill (forward fill) заполняет NaN предыдущим непустым значением, bfill — следующим. Работают на отсортированных рядах, например для протягивания последней известной цены или курса.
Чем заполнять пропуски — средним или медианой?
На симметричных данных подойдёт среднее, на скошенных (выручка, цена, время) — медиана, так как она устойчива к выбросам. Иногда осмысленнее 0 или отдельная категория «неизвестно».