pandas.core.resample.Resampler.interpolate
- Resampler.interpolate(method='linear', axis=0, limit=None, inplace=False, limit_direction='forward', limit_area=None, downcast=None, **kwargs)[source]
-
Интерполяция значений по различным методам.
Заполнение пропущенных значений (NaN) с помощью метода интерполяции.
Обратите внимание, что для DataFrame/Series с MultiIndex поддерживается только
method='linear'.- Параметры
-
- method:строка, по умолчанию ‘linear’
-
Техника интерполяции. Один из:
‘linear’: Игнорирует индекс и обрабатывает значения как равномерно распределённые. Это единственный метод, поддерживаемый для MultiIndex.
‘time’: Работает с данными с ежедневной и более высокой разрешающей способностью для интерполяции заданной длины интервала.
‘index’, ‘values’: использует фактические числовые значения индекса.
‘pad’: Заполнение NaN значениями из существующих.
‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘spline’, ‘barycentric’, ‘polynomial’: Передаётся в scipy.interpolate.interp1d. Эти методы используют числовые значения индекса. И ‘polynomial’, и ‘spline’ требуют также указать order (целое число), например
df.interpolate(method='polynomial', order=5).‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’, ‘akima’, ‘cubicspline’: Обёртки вокруг методов интерполяции SciPy с аналогичными названиями. Смотрите Примечания.
‘from_derivatives’: Ссылается на scipy.interpolate.BPoly.from_derivatives, который заменяет метод интерполяции ‘piecewise_polynomial’ в scipy 0.18.
- axis:{{0 или ‘index’, 1 или ‘columns’, None}}, по умолчанию None
-
Ось, вдоль которой выполнять интерполяцию. Для Series этот параметр не используется и по умолчанию равен 0.
- limit:целое число, необязательно
-
Максимальное количество последовательных NaN значений для заполнения. Должно быть больше 0.
- inplace:булево, по умолчанию 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’
Изменено в версии 1.1.0: вызывает 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
-
Привести типы данных к более узким, если это возможно.
- ``**kwargs``:необязательно
-
Ключевые аргументы для передачи интерполирующей функции.
- Возвращает
-
- Series или DataFrame или None
-
Возвращает объект того же типа, что и вызывающий, интерполированный в некоторых или всех
NaNзначениях, или None, еслиinplace=True.
См. также
fillna-
Заполнение пропущенных значений различными методами.
scipy.interpolate.Akima1DInterpolator-
Кубические сплайны с учётом монотонности (интерполятор Akima).
scipy.interpolate.BPoly.from_derivatives-
Кусочно-полиномиальная функция в базисе Бернштейна.
scipy.interpolate.interp1d-
Интерполяция одномерной функции.
scipy.interpolate.KroghInterpolator-
Интерполяция полиномом (интерполятор Крога).
scipy.interpolate.PchipInterpolator-
Монотонная кубическая интерполяция PCHIP.
scipy.interpolate.CubicSpline-
Интерполяция кубическим сплайном.
Примечания
Методы ‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’ и ‘akima’ являются обёртками вокруг соответствующих реализаций SciPy с аналогичными названиями. Они используют фактические числовые значения индекса. Дополнительную информацию о их поведении см. в документации SciPy.
Примеры
Заполнение пропущенных значений в
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
Заполнение пропущенных значений в Series методом заполнения, но заполняя не более двух последовательных
NaNза один раз.>>> s = pd.Series([np.nan, "single_one", np.nan, ... "fill_two_more", np.nan, np.nan, np.nan, ... 4.71, np.nan]) >>> s 0 NaN 1 single_one 2 NaN 3 fill_two_more 4 NaN 5 NaN 6 NaN 7 4.71 8 NaN dtype: object >>> s.interpolate(method='pad', limit=2) 0 NaN 1 single_one 2 single_one 3 fill_two_more 4 fill_two_more 5 fill_two_more 6 NaN 7 4.71 8 4.71 dtype: object
Заполнение пропущенных значений в Series полиномиальной интерполяцией или сплайнами: методы 'polynomial' и 'spline' требуют также указать
order(целое число).>>> 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–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.core.resample.Resampler.interpolate.html