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] -
Интерполировать значения по разным методам.
Введено в версии 0.18.1.
Обратите внимание, что только
method='linear'поддерживается для DataFrame/Series с MultiIndex.Параметры: -
method : str, default ‘linear’ -
Метод интерполяции. Один из:
- ‘linear’: Игнорирует индекс и обрабатывает значения как равномерно распределенные. Это единственный метод, поддерживаемый для MultiIndexes.
- ‘time’: Работает с данными с дневной и более высокой разрешающей способностью, чтобы интерполировать заданную длину интервала.
- ‘index’, ‘values’: использовать фактические числовые значения индекса.
- ‘pad’: Заполнить пропуски (NaN) существующими значениями.
- ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘spline’, ‘barycentric’, ‘polynomial’: Передаётся в
scipy.interpolate.interp1d. Оба ‘polynomial’ и ‘spline’ требуют, чтобы вы также указалиorder(целое число), напримерdf.interpolate(method='polynomial', order=4). Они используют числовые значения индекса. - ‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’, ‘akima’: Обертки над методами интерполяции SciPy с аналогичными именами. Смотрите
Notes. - ‘from_derivatives’: Ссылается на
scipy.interpolate.BPoly.from_derivatives, который заменяет метод интерполяции ‘piecewise_polynomial’ в scipy 0.18. Обратно совместим со SciPy < 0.18.
Введено в версии 0.18.1: Добавлена поддержка метода ‘akima’. Добавлен метод интерполяции ‘from_derivatives’, который заменяет ‘piecewise_polynomial’ в SciPy 0.18; обратно совместим со SciPy < 0.18.
-
axis : {0 or ‘index’, 1 or ‘columns’, None}, default None -
Ось, по которой выполняется интерполяция.
-
limit : int, optional -
Максимальное количество последовательных пропусков (NaN) для заполнения. Должно быть больше 0.
-
inplace : bool, default False -
Обновить данные на месте, если это возможно.
-
limit_direction : {‘forward’, ‘backward’, ‘both’}, default ‘forward’ -
Если задан предел, последовательные пропуски (NaN) будут заполняться в этом направлении.
-
limit_area : {None, ‘inside’, ‘outside’}, default None -
Если задан предел, последовательные пропуски (NaN) будут заполняться с этим ограничением.
-
None: Без ограничений заполнения. - ‘inside’: Заполнить только пропуски (NaN), окружённые допустимыми значениями (интерполировать).
- ‘outside’: Заполнить только пропуски (NaN) вне допустимых значений (экстраполировать).
Введено в версии 0.21.0.
-
-
downcast : optional, ‘infer’ or None, defaults to None -
Сведение типов данных, если это возможно.
- **kwargs
-
Ключевые аргументы для передачи функции интерполяции.
Возвращает: - Series или DataFrame
-
Возвращает тип объекта, аналогичный вызывающему, интерполированный в некоторых или во всех
NaNзначениях.
См. также
-
fillna - Заполнение пропущенных значений разными методами.
-
scipy.interpolate.Akima1DInterpolator - Кубические сплайны (интерполятор Akima).
-
scipy.interpolate.BPoly.from_derivatives - Кусочно-полиномиальные в базисе Бернштейна.
-
scipy.interpolate.interp1d - Интерполяция функции 1-й размерности.
-
scipy.interpolate.KroghInterpolator - Интерполяция полиномом (интерполятор Krogh).
-
scipy.interpolate.PchipInterpolator - Монотонная кубическая интерполяция PCHIP 1-й размерности.
-
scipy.interpolate.CubicSpline - Интерполяция кубическим сплайном.
Примечания
Методы ‘krogh’, ‘piecewise_polynomial’, ‘spline’, ‘pchip’ и ‘akima’ являются обертками над соответствующими реализациями SciPy с аналогичными именами. Они используют фактические числовые значения индекса. Более подробную информацию о их поведении см. в документации 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 с помощью метода заполнения значениями вперед (pad), но не более чем двух последовательных
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
Заполнение пропусков (NaN) в 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–2012, 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/0.24.2/reference/api/pandas.core.resample.Resampler.interpolate.html