s = pd.Series([100, np.nan, 400])
s.interpolate()
Результат:
0 100.0 1 250.0 2 400.0 dtype: float64
s = pd.Series([10, np.nan, 40],
index=pd.to_datetime(['2026-01-01','2026-01-03','2026-01-04']))
s.interpolate(method='time')
Результат:
2026-01-01 10.0 2026-01-03 30.0 2026-01-04 40.0 dtype: float64Порешать Python-задачи в тренажёре →
Полезно для сглаживания дыр во временных рядах: пропущенные дни в выручке, показания сенсоров, курсы. На собеседовании проверяют, понимаешь ли разницу между interpolate, fillna(ffill) и заливкой средним.
fillna подставляет одно значение (константу, среднее, соседнее через ffill/bfill), а interpolate вычисляет плавный переход между известными точками. Для монотонных или трендовых рядов это точнее и не создаёт «ступенек». Для категорий и явного бизнес-дефолта, наоборот, лучше fillna.
Линейной интерполяции нужна точка слева и справа; для ведущих NaN левой опоры нет, поэтому они остаются. Чтобы заполнить их экстраполяцией назад, задай limit_direction='backward' или 'both'. Параметр limit ограничивает, сколько подряд идущих NaN заполнять.
Поставь datetime-индекс и вызови method='time'. Тогда pandas взвесит соседние значения по реальному расстоянию между датами, а не считая строки равноудалёнными. Это важно, когда пропуски в ряду неравномерны по дням.
Pandas: временные ряды · Pandas: основы
groupby · merge · pivot_table · apply · value_counts · drop_duplicates
Открыть Python-тренажёр (556 задач) →