我有数据,时间序列数据,我想估算缺失的数据。我不能使用该列的均值,因为我认为这对时间序列数据不利。 所以我想用简单的线性回归来估算
Day, Price
1 , NaN
2, NaN
3, 1800
4, 1900
5, NaN
6, NaN
7, 2000
8, 2200
如何执行此操作?
我更喜欢用熊猫来做, 但是如果没有其他方法可以使用sklearn来做到这一点:)
答案 0 :(得分:2)
您可以使用interpolate
进行此操作:
df['Price'].interpolate(method='linear', inplace=True)
结果:
Price Date
0 NaN 1
1 NaN 2
2 1800.000000 3
3 1900.000000 4
4 1933.333333 5
5 1966.666667 6
6 2000.000000 7
7 2200.000000 8
如您所见,这只会沿向前方向填充缺失值。如果还要填充前两个值,请使用参数limit_direction="both"
:
df['Price'].interpolate(method='linear', inplace=True, limit_direction="both")
有不同的插值方法,例如二次或样条曲线,有关更多信息,请参阅文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.interpolate.html