Интерполировать, а затем экстраполировать граничные значения - PullRequest
0 голосов
/ 11 января 2020

Следующая программа не интерполирует значение в 0,7

import pandas as pd
import numpy as np

s = pd.Series([np.nan, 2, 4,np.nan, 8, np.nan], [0,1,2,4,5,7])
interp = s.interpolate(method='akima', order=2)
print(s)
print(interp)

0    NaN
1    2.0
2    4.0
4    NaN
5    8.0
7    NaN
dtype: float64
0         NaN
1    2.000000
2    4.000000
4    6.888889
5    8.000000
7         NaN
dtype: float64

Как получить значения в 0 и 7? Экстраполяция

1 Ответ

1 голос
/ 11 января 2020

Ну, это зависит, потому что каждый метод интерполяции работает по-своему.
Если вы в порядке с использованием методов spline / pchip / linear, то вы можете использовать:

my_method='pchip' #or 'linear' or 'spline'
interp = s.interpolate(method=my_method, order=2, limit=2, limit_direction='both')

Это те методы, которые, я знаю, могут работать в вашем случае, но, возможно, может быть и другое.

Параметр limit указан как:

Максимальное количество последовательных NaN для заполнения. Должно быть больше 0.

И limit_direction задается как:

Если указан предел, последовательные NaN будут заполняться в этом направлении.

Больше информации в pandas .Series.interpolate docs

...