pandas.DataFrame.interpolate
- DataFrame.interpolate(method='linear', *, axis=0, limit=None, inplace=False, limit_direction=None, limit_area=None, downcast=<no_default>, **kwargs)[исходный код]
-
Заполняет значения NaN с помощью метода интерполяции.
Обратите внимание, что для DataFrame/Series с MultiIndex поддерживается только
method='linear'.- Параметры:
-
- method:str, default ‘linear’
-
Метод интерполяции. Возможные варианты:
‘linear’: игнорирует индекс и рассматривает значения как равноотстоящие. Это единственный метод, поддерживаемый для MultiIndex.
‘time’: работает с данными с дневной и более высокой частотой, интерполируя заданную длину интервала.
‘index’, ‘values’: использует фактические числовые значения индекса.
‘pad’: заполняет значения NaN существующими значениями.
‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘barycentric’, ‘polynomial’: передаются в scipy.interpolate.interp1d, тогда как ‘spline’ передаётся в scipy.interpolate.UnivariateSpline. Эти методы используют числовые значения индекса. Для методов ‘polynomial’ и ‘spline’ также необходимо указать order (int), например
df.interpolate(method='polynomial', order=5). Обратите внимание, что метод slinear в Pandas соответствует сплайну первого порядка SciPy, а не сплайну первого порядка Pandas.‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’, ‘akima’, ‘cubicspline’: обёртки над одноимёнными методами интерполяции SciPy. См. раздел Примечания.
‘from_derivatives’: соответствует scipy.interpolate.BPoly.from_derivatives.
- axis:{{0 or ‘index’, 1 or ‘columns’, None}}, default None
-
Ось, вдоль которой выполняется интерполяция. Для Series этот параметр не используется и по умолчанию равен 0.
- limit:int, optional
-
Максимальное количество последовательных значений NaN для заполнения. Должно быть больше 0.
- inplace:bool, default False
-
По возможности изменяет данные на месте.
- limit_direction:{{‘forward’, ‘backward’, ‘both’}}, Optional
-
Последовательные значения NaN будут заполнены в указанном направлении.
- Если указан limit:
-
Если ‘method’ равен ‘pad’ или ‘ffill’, значение ‘limit_direction’ должно быть ‘forward’.
Если ‘method’ равен ‘backfill’ или ‘bfill’, значение ‘limit_direction’ должно быть ‘backwards’.
- Если ‘limit’ не указан:
-
Если ‘method’ равен ‘backfill’ или ‘bfill’, по умолчанию используется ‘backward’.
В противном случае по умолчанию используется ‘forward’.
- Вызывает ValueError, если limit_direction равен ‘forward’ или ‘both’ и
-
method равен ‘backfill’ или ‘bfill’.
- Вызывает ValueError, если limit_direction равен ‘backward’ или ‘both’ и
-
method равен ‘pad’ или ‘ffill’.
- limit_area:{{None, ‘inside’, ‘outside’}}, default None
-
Если указан limit, последовательные значения NaN будут заполняться с учётом этого ограничения.
None: без ограничений на заполнение.‘inside’: заполняет только значения NaN, окружённые допустимыми значениями (интерполяция).
‘outside’: заполняет только значения NaN за пределами допустимых значений (экстраполяция).
- downcast:optional, ‘infer’ or None, defaults to None
-
При возможности понижает типы данных.
Устарело начиная с версии 2.1.0.
- ``**kwargs``:optional
-
Именованные аргументы, передаваемые функции интерполяции.
- Возвращает:
-
- Series или DataFrame или None
-
Возвращает объект того же типа, что и исходный, с интерполяцией некоторых или всех значений
NaNлибо None, еслиinplace=True.
См. также
fillna-
Заполнение пропущенных значений различными методами.
scipy.interpolate.Akima1DInterpolator-
Кусочно-кубические полиномы (интерполятор Akima).
scipy.interpolate.BPoly.from_derivatives-
Кусочный полином в базисе Бернштейна.
scipy.interpolate.interp1d-
Интерполяция одномерной функции.
scipy.interpolate.KroghInterpolator-
Интерполяция полиномом (интерполятор Krogh).
scipy.interpolate.PchipInterpolator-
Монотонная кубическая интерполяция PCHIP в одном измерении.
scipy.interpolate.CubicSpline-
Интерполятор данных на основе кубических сплайнов.
Примечания
Методы ‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’ и ‘akima’ являются обёртками над соответствующими реализациями SciPy с похожими названиями. Они используют фактические числовые значения индекса. Дополнительные сведения об их поведении см. в документации SciPy.
Примеры
Заполнение
NaNвSeriesс помощью линейной интерполяции.>>> s = pd.Series([0, 1, np.nan, 3]) >>> s 0 0.0 1 1.0 2 NaN 3 3.0 dtype: float64 >>> s.interpolate() 0 0.0 1 1.0 2 2.0 3 3.0 dtype: float64
Заполнение
NaNв Series с помощью полиномиальной интерполяции или сплайнов: для методов ‘polynomial’ и ‘spline’ также необходимо указатьorder(int).>>> s = pd.Series([0, 2, np.nan, 8]) >>> s.interpolate(method='polynomial', order=2) 0 0.000000 1 2.000000 2 4.666667 3 8.000000 dtype: float64
Заполнение DataFrame вперёд (то есть вниз) вдоль каждого столбца с помощью линейной интерполяции.
Обратите внимание, что последнее значение в столбце ‘a’ интерполируется иначе, поскольку после него нет значения, которое можно было бы использовать для интерполяции. Обратите внимание, что первое значение в столбце ‘b’ остаётся
NaN, поскольку перед ним нет значения, которое можно было бы использовать для интерполяции.>>> df = pd.DataFrame([(0.0, np.nan, -1.0, 1.0), ... (np.nan, 2.0, np.nan, np.nan), ... (2.0, 3.0, np.nan, 9.0), ... (np.nan, 4.0, -4.0, 16.0)], ... columns=list('abcd')) >>> df a b c d 0 0.0 NaN -1.0 1.0 1 NaN 2.0 NaN NaN 2 2.0 3.0 NaN 9.0 3 NaN 4.0 -4.0 16.0 >>> df.interpolate(method='linear', limit_direction='forward', axis=0) a b c d 0 0.0 NaN -1.0 1.0 1 1.0 2.0 -2.0 5.0 2 2.0 3.0 -3.0 9.0 3 2.0 4.0 -4.0 16.0Использование полиномиальной интерполяции.
>>> df['d'].interpolate(method='polynomial', order=2) 0 1.0 1 4.0 2 9.0 3 16.0 Name: d, dtype: float64
© 2008–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.DataFrame.interpolate.html