Spec-Zone.ru › pandas 0.24

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

Spec-Zone.ru

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