我已经成功地完成了我想要的使用平均值输入空值的工作。现在我想对中位数做同样的事情,这里是我成功使用的相同代码,用于刚刚用“中位数”而不是“平均值”更改的平均值:
from pyspark.ml.feature import Imputer
imputer = Imputer(inputCols=df2.columns, outputCols=["{}_imputed".format(c) for c in df2.columns]
Median_Imputer = imputer.setStrategy("median").fit(df2).transform(df2).show()
Median_Imputer
因此,这会打印输出(不会给出错误),但输出是错误的,它实际上不会计算中值,而是输出该列中的最低值,以替换NaN,如图所示:
Name DateTime Age Name_imputed DateTime_imputed Age_imputed
NaN 15.0 3.5 0.5 15.0 3.5
15.0 45.0 18.0 15.0 45.0 18.0
0.5 3.5 NaN 0.5 3.5 3.5
如您所见,姓名栏应插补7.75而不是0.5,因为有2个值,中位数只是它们的平均值,而年龄栏应插补10.75而不是3.5(栏中的最低值)
为什么这不起作用?它在需要的时候起作用。如何解决这个问题
谢谢大家!
目前没有回答
相关问题 更多 >
编程相关推荐