Sklearn或Pandas,通过简单的线性回归估算缺失值

时间:2018-10-22 16:29:50

标签: python pandas scikit-learn data-mining

我有数据,时间序列数据,我想估算缺失的数据。我不能使用该列的均值,因为我认为这对时间序列数据不利。 所以我想用简单的线性回归来估算

Day, Price
 1 , NaN
 2, NaN
 3, 1800
 4, 1900
 5, NaN
 6, NaN
 7, 2000
 8, 2200

如何执行此操作?

我更喜欢用熊猫来做, 但是如果没有其他方法可以使用sklearn来做到这一点:)

1 个答案:

答案 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