Мне удалось успешно сделать именно то, что я хочу для вменения нулевых значений с использованием среднего. Теперь я хочу сделать то же самое для медианы, вот тот же код, который я успешно использовал для среднего значения, только что измененного с помощью «медианы» вместо «среднего»:
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 (самое низкое значение в столбце)
Почему это не работает? Это работало так, как нужно для подлости. Что можно сделать, чтобы это исправить?
Спасибо!