【发布时间】:2019-08-01 22:40:29
【问题描述】:
我有一个名为 price 的功能,其中包含一些缺失值。我还有另一列“点”,它没有缺失值,但与价格高度相关。我想用基于点的平均价格来填充价格的缺失值。例如,如果记录的点值为 16,则价格的缺失值应由所有点值为 16 的记录的平均价格填充。我正在使用 Pandas。我尝试了 scikit learn 库,但它没有这样的功能。请帮忙
【问题讨论】:
我有一个名为 price 的功能,其中包含一些缺失值。我还有另一列“点”,它没有缺失值,但与价格高度相关。我想用基于点的平均价格来填充价格的缺失值。例如,如果记录的点值为 16,则价格的缺失值应由所有点值为 16 的记录的平均价格填充。我正在使用 Pandas。我尝试了 scikit learn 库,但它没有这样的功能。请帮忙
【问题讨论】:
这是一个可能对您有所帮助的示例。它使用线性回归从点预测价格,仅基于非缺失数据。
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)))
【讨论】: