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