【发布时间】:2018-04-30 13:40:44
【问题描述】:
我正在尝试遍历 Pyspark 数据帧的所有列,计算 IQR 以过滤上层异常值,并重新分配相同的数据帧。有 200 多列。这是可行的,但是随着循环的前进,它会变得越来越慢。我怀疑问题可能出在重新分配数据帧(dfBufferOutlier=dfBufferOutlier.filter(col(i)
nameList=dfBuffer.schema.names[1:]
dfBufferOutlier=dfBuffer
for i in nameList:
cuenta=dfBufferOutlier.filter(col(i)>0).count()
if cuenta>0:
Q1, Q2, Q3 = dfBufferOutlier.filter(col(i)>0).approxQuantile(col=i,probabilities=[0.25,0.5,0.75],relativeError=0.005)
IQR=(Q3-Q1)
top_limit=Q3+1.5*IQR
dfBufferOutlier=dfBufferOutlier.filter(col(i)<top_limit)
肯定有另一种方法可以改善这一点,但不知道如何......请帮忙?
【问题讨论】:
标签: loops apache-spark dataframe filter pyspark