Spec-Zone.ru › pandas 2

pandas.core.resample.Resampler.interpolate

finalResampler.interpolate(method='linear', *, axis=0, limit=None, inplace=False, limit_direction='forward', limit_area=None, downcast=<no_default>, **kwargs)[исходный код]

Интерполирует значения между целевыми временными метками, используя различные методы.

Сначала исходный индекс повторно индексируется по целевым временным меткам (см. core.resample.Resampler.asfreq()), затем выполняется интерполяция значений NaN с помощью DataFrame.interpolate().

Параметры:
method:str, по умолчанию ‘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}}, по умолчанию None

Ось, вдоль которой выполняется интерполяция. Для Series этот параметр не используется и по умолчанию равен 0.

limit:int, необязательный

Максимальное количество последовательных значений NaN для заполнения. Должно быть больше 0.

inplace:bool, по умолчанию False

По возможности обновляет данные на месте.

limit_direction:{{‘forward’, ‘backward’, ‘both’}}, необязательный

Направление заполнения последовательных значений 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’}}, по умолчанию None

Если задан limit, заполнение последовательных значений NaN выполняется с учетом этого ограничения.

  • None: ограничений на заполнение нет.

  • ‘inside’: заполняются только значения NaN, окруженные допустимыми значениями (интерполяция).

  • ‘outside’: заполняются только значения NaN за пределами допустимых значений (экстраполяция).

downcast:необязательный, ‘infer’ или None, по умолчанию None

Понижает разрядность типов данных, если это возможно.

Устарело начиная с версии 2.1.0.

``**kwargs``:необязательный

Именованные аргументы, передаваемые функции интерполяции.

Возвращает:
DataFrame или Series

Интерполированные значения с указанной частотой.

См. также

core.resample.Resampler.asfreq

Возвращает значения с новой частотой, по сути выполняя повторную индексацию.

DataFrame.interpolate

Заполняет значения NaN с помощью метода интерполяции.

Примечания

Для временных рядов с метками времени высокой частоты или неравномерными интервалами повторная индексация с последующей интерполяцией может привести к потере информации, как показано в последнем примере.

Примеры

>>> start = "2023-03-01T07:00:00"
>>> timesteps = pd.date_range(start, periods=5, freq="s")
>>> series = pd.Series(data=[1, -1, 2, 1, 3], index=timesteps)
>>> series
2023-03-01 07:00:00    1
2023-03-01 07:00:01   -1
2023-03-01 07:00:02    2
2023-03-01 07:00:03    1
2023-03-01 07:00:04    3
Freq: s, dtype: int64

Увеличьте частоту DataFrame до 0.5 Гц, задав период времени 2 с.

>>> series.resample("2s").interpolate("linear")
2023-03-01 07:00:00    1
2023-03-01 07:00:02    2
2023-03-01 07:00:04    3
Freq: 2s, dtype: int64

Уменьшите частоту DataFrame до 2 Гц, задав период времени 500 мс.

>>> series.resample("500ms").interpolate("linear")
2023-03-01 07:00:00.000    1.0
2023-03-01 07:00:00.500    0.0
2023-03-01 07:00:01.000   -1.0
2023-03-01 07:00:01.500    0.5
2023-03-01 07:00:02.000    2.0
2023-03-01 07:00:02.500    1.5
2023-03-01 07:00:03.000    1.0
2023-03-01 07:00:03.500    2.0
2023-03-01 07:00:04.000    3.0
Freq: 500ms, dtype: float64

Внутренняя повторная индексация с помощью asfreq() перед интерполяцией приводит к интерполяции временного ряда на основе повторно индексированных временных меток (опорных точек). Поскольку не все точки данных исходного ряда становятся опорными точками, это может привести к ошибочным результатам интерполяции, как в следующем примере:

>>> series.resample("400ms").interpolate("linear")
2023-03-01 07:00:00.000    1.0
2023-03-01 07:00:00.400    1.2
2023-03-01 07:00:00.800    1.4
2023-03-01 07:00:01.200    1.6
2023-03-01 07:00:01.600    1.8
2023-03-01 07:00:02.000    2.0
2023-03-01 07:00:02.400    2.2
2023-03-01 07:00:02.800    2.4
2023-03-01 07:00:03.200    2.6
2023-03-01 07:00:03.600    2.8
2023-03-01 07:00:04.000    3.0
Freq: 400ms, dtype: float64

Обратите внимание, что ряд ошибочно возрастает между двумя опорными точками 07:00:00 и 07:00:02.

© 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.core.resample.Resampler.interpolate.html

Spec-Zone.ru

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