Spec-Zone.ru › pandas 2

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API