pandas.Series.interpolate#
-
Series.интерполировать(method='linear', *, axis=0, limit=None, inplace=False, limit_direction=None, limit_area=None, downcast=
, **kwargs)[источник]# Заполнить значения NaN с помощью метода интерполяции.
Обратите внимание, что только
method='linear'поддерживается для DataFrame/Series с MultiIndex.- Параметры:
- методstr, по умолчанию 'linear'
Метод интерполяции для использования. Один из:
‘linear’: Игнорировать индекс и рассматривать значения как равноудаленные. Это единственный метод, поддерживаемый для MultiIndexes.
'time': Работает с данными дневного и более высокого разрешения для интерполяции заданной длины интервала.
'index', 'values': использовать фактические числовые значения индекса.
'pad': Заполнить NaN существующими значениями.
'nearest', 'zero', 'slinear', 'quadratic', 'cubic', 'barycentric', 'polynomial': Передаётся в scipy.interpolate.interp1d, тогда как 'spline' передается в scipy.interpolate.UnivariateSpline. Эти методы используют численные значения индекса. И 'polynomial', и 'spline' требуют, чтобы вы также указали порядок (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.
- ось{{0 или ‘index’, 1 или ‘columns’, None}}, по умолчанию None
Ось для интерполяции. Для Series этот параметр не используется и по умолчанию равен 0.
- limitint, необязательный
Максимальное количество последовательных NaN для заполнения. Должно быть больше 0.
- inplacebool, по умолчанию False
Обновите данные на месте, если возможно.
- limit_direction{{‘forward’, ‘backward’, ‘both’}}, Optional
Последовательные значения 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' и
метод - 'backfill' или 'bfill'.
- вызывает ValueError, если limit_direction является 'backward' или 'both' и
метод 'pad' или 'ffill'.
- limit_area{{None, 'inside', 'outside'}}, по умолчанию None
Если указан limit, последовательные значения NaN будут заполнены с этим ограничением.
None: Нет ограничений на заполнение.‘inside’: Заполнять только NaN, окруженные допустимыми значениями (интерполяция).
‘outside’: Заполнять только NaN за пределами допустимых значений (экстраполяция).
- downcastнеобязательно, 'infer' или None, по умолчанию None
Понизить типы данных, если возможно.
Устарело с версии 2.1.0.
- ``**kwargs``необязательный
Аргументы ключевых слов для передачи интерполирующей функции.
- Возвращает:
- Series или DataFrame или None
Возвращает тот же тип объекта, что и вызывающий, интерполированный в некоторых или всех
NaNзначения или None, еслиinplace=True.
Смотрите также
fillnaЗаполнение пропущенных значений с использованием различных методов.
scipy.interpolate.Akima1DInterpolatorКусочно-кубические полиномы (интерполятор Акимы).
scipy.interpolate.BPoly.from_derivativesКусочно-полиномиальная функция в базисе Бернштейна.
scipy.interpolate.interp1dИнтерполяция одномерной функции.
scipy.interpolate.KroghInterpolatorИнтерполяция полинома (интерполятор Крога).
scipy.interpolate.PchipInterpolatorPCHIP 1-d монотонная кубическая интерполяция.
scipy.interpolate.CubicSplineКубический сплайн-интерполятор данных.
Примечания
Методы 'krogh', 'piecewise_polynomial', 'spline', 'pchip' и 'akima' являются обёртками вокруг соответствующих реализаций 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 с помощью полиномиальной интерполяции или сплайнов: Оба метода 'polynomial' и 'spline' требуют, чтобы вы также указалиorder(int).>>> 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