如何根据类别填充缺失值

时间:2019-07-31 12:42:02

标签: python-3.x scikit-learn

我有一个称为价格的功能,其中包含一些缺失值。我还有另一列“积分”,它没有缺失的价值,但与价格高度相关。我想用基于积分的平均价格来填补价格的缺失值。例如,如果记录的点值为16,则应该用所有点值为16的记录的平均价格来填充价格的缺失值。我正在使用Pandas。我尝试了scikit学习库,但它没有此类功能。请帮助

1 个答案:

答案 0 :(得分:0)

这是一个可能对您有所帮助的示例。仅基于非缺失数据,它使用线性回归从各个点预测价格。

import numpy as np
from sklearn.linear_model import LinearRegression
myData=pd.DataFrame({'price':[10,20,30,40,50,None,70], 'points':[12,18,22,42,53,62,89]})
model = LinearRegression()
y = myData[~myData['price'].isnull()]['price']
x = np.array(myData[~myData['price'].isnull()]['points']).reshape((-1, 1))
model.fit(x,y)
myData['price'][myData['price'].isnull()] = model.predict(np.array(myData[myData['price'].isnull()]['points']).reshape((-1, 1)))