我需要检查插值的“索引”方法和插值的“线性”方法之间的区别
我创建了一个缺失值的随机大熊猫序列,然后用线性方法和索引方法检查了插值结果
,但是它们都返回相同的结果。那么,它应该返回相同的结果吗?如果是,在什么情况下我可以看到不同的结果?
s = pd.Series([21,13,np.nan,152,np.nan,46,98])
s.interpolate(method = 'index')
s.interpolate(method = 'linear')
我得到以下结果:
s.interpolate(method = 'index')
0 21.0
1 13.0
2 82.5
3 152.0
4 99.0
5 46.0
6 98.0
dtype: float64
s.interpolate(method = 'linear')
0 21.0
1 13.0
2 82.5
3 152.0
4 99.0
5 46.0
6 98.0
dtype: float64
答案 0 :(得分:2)
当您的index
为range
或具有相同的空位指数和线性将产生相同的结果时,请尝试使用以下示例
s = pd.Series([21,13,np.nan,152,np.nan,46,98],index=[0,1,3,4,7,9,10])
s.interpolate(method = 'index')
Out[536]:
0 21.000000
1 13.000000
3 105.666667
4 152.000000
7 88.400000
9 46.000000
10 98.000000
dtype: float64
s.interpolate(method = 'linear')
Out[537]:
0 21.0
1 13.0
3 82.5
4 152.0
7 99.0
9 46.0
10 98.0
dtype: float64
答案 1 :(得分:2)
linear
和index
方法都将对Series进行线性插值;区别在于哪些值被视为自变量:
method = 'index'
使用数字索引值(如果您的Series未指定索引,则默认为0、1、2,...,n-1)method = 'linear'
将“系列”的元素等距处理(不考虑索引中指定的任何值);这当然等同于使用序列0、1、2,...,n-1作为自变量范围因此,对于索引为默认值(或任何其他算术级数,例如0、2、4、6,...)的任何Series,这两个选项都将产生相同的结果。