You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中使用IQR移除floor_area_sqm_imputed列的异常值?

PySpark 基于IQR移除指定列异常值

针对你需要移除floor_area_sqm_imputed列异常值的需求,直接用以下步骤实现:

  1. 计算目标列的四分位数与IQR
    使用PySpark的approxQuantile方法获取列的25%(Q1)和75%(Q3)分位数,再计算IQR(Q3-Q1):

    from pyspark.sql import functions as F
    
    # 计算Q1、Q3,第三个参数0.0为精确计算,大数据量可设0.01平衡效率
    q1, q3 = df.approxQuantile("floor_area_sqm_imputed", [0.25, 0.75], 0.0)
    iqr = q3 - q1
    
    # 计算异常值边界:Q1-1.5*IQR 到 Q3+1.5*IQR
    lower_bound = q1 - 1.5 * iqr
    upper_bound = q3 + 1.5 * iqr
    
  2. 过滤移除异常值
    通过过滤条件保留在边界内的行,直接得到移除异常值后的DataFrame:

    filtered_df = df.filter(
        (F.col("floor_area_sqm_imputed") >= lower_bound) &
        (F.col("floor_area_sqm_imputed") <= upper_bound)
    )
    

说明

  • approxQuantile的第三个参数是相对误差,设为0.0会计算精确分位数,数据量较大时建议设为0.01,在精度和效率间取得平衡。
  • 示例数据中的44.0如果落在边界外,会被自动过滤掉。

内容的提问来源于stack exchange,提问作者Wee Liang Kelven Lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:10:28