Функция fillna() в pandas: заполнение пропусков

df.fillna(значение) заменяет пропуски NaN на заданное значение: константу, среднее/медиану колонки или соседнее значение (ffill — предыдущим, bfill — следующим). Обработка пропусков — обязательный шаг предобработки, а выбор способа заполнения напрямую влияет на метрики и модели.

Синтаксис

df['col'].fillna(0) | df['col'].fillna(df['col'].median()) | df.ffill()

Примеры использования

Пример 1: Заполнить пропуски медианой колонки

df['price'] = df['price'].fillna(df['price'].median())

Результат:

(NaN в price заменены медианой, устойчивой к выбросам)

Пример 2: Протянуть последнее известное значение (ffill)

df['rate'] = df['rate'].ffill()

Результат:

(каждый NaN получил предыдущее непустое значение)
Порешать Python-задачи в тренажёре →

Типичная ошибка

Заполнять средним опасно на скошенных данных (выручка, цена) — выбросы тянут среднее, лучше медиана. 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 или отдельная категория «неизвестно».

Задачи в тренажёре по теме

Вопросы с собеседований по теме

Смежные темы Python

Pandas: основы

Другие функции pandas

groupby · merge · pivot_table · apply · value_counts · drop_duplicates

Открыть Python-тренажёр (556 задач) →