插值法填补缺失值
函数DataFrame.interpolate()
参数method:默认linear
- ‘linear’:忽略索引并将值视为等间距
- index’, ‘values’:使用索引的实际数值
- ‘pad’:用现有的数据填写NaN
- ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘spline’, ‘barycentric’, ‘polynomial’:
'polynomial'和'spline'都要求指定一个order(int)
参数limit:int,要填充的NaN值的最大个数,必须大于0
参数limit_direction:{‘forward’, ‘backward’, ‘both’}, default ‘forward’,如果指定了limit,则按此方向填充连续的NaN。
1、Series通过linear方法填充NaN
- s = pd.Series([0, 2, np.nan, np.nan,8])
- print(s)
- s.interpolate(method='linear')
复制代码
2、根据现有数据填充NaN
- s = pd.Series([0, 2, np.nan, np.nan,8,np.nan])
- print(s)
- s.interpolate(method='pad',limit=1)
复制代码
3、使用多项式方法填充
- s = pd.Series([0, 2, np.nan, np.nan,8,np.nan])
- print(s)
- s.interpolate(method='polynomial',order=2)
复制代码
4、指点方向填充数值
- 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'))
- print(df)
- df.interpolate(methmod='linear',limit_direction='backward',axis=0)
复制代码
5、对某一列作填充数值操作
- print(df['d'])
- df['d'].interpolate(method='polynomial',order=2)
复制代码
|