【发布时间】:2021-03-29 15:21:07
【问题描述】:
我想知道如何用平均值替换异常值。我有数据框,我可以找到异常值并过滤行,现在我想用平均值替换它。我该怎么做?
df 是这样的:
a b
1 27 0
2 10 1
3 80 2
4 21 3
5 46 4
6 100 5
找到 IQR 后,我得到了异常值:
Upper = 75
lower = 12
outliers = df.filter((df['a'] > upper) | (df['a'] < lower))
2 10 1
3 80 2
6 100 5
现在我找到了平均值:
from pyspark.sql.functions import mean as _mean, col
mean= df.select(_mean(col('a')).alias('mean')).collect()
mean = mean[0]['mean']
mean : 31.333
现在我不明白如何通过将平均值舍入为 31 并将其替换为 pyspark 中的异常值。
【问题讨论】:
标签: dataframe apache-spark pyspark apache-spark-sql outliers