🫧 泡泡库 软件下载中心
实时数据

累计下载 1,021 次

在库软件 13 款

异常值该删还是该留

数据基础 更新于 2026-09-17 #异常值#数据清洗#统计

拿到一份数据,画完箱线图或直方图,总会看到几个孤零零的点落在主体分布之外。这时最容易犯的错误,是直接把它们删掉,然后当作数据已经干净了。删之前先问一句:这个值到底是记录错了,还是它本来就该长这样。

先分清异常值的两种来源

异常值大致来自两类原因,处理方式完全不同。

  • 数据产生环节的错误:录入时多打一个零、单位混用(米和厘米写在一起)、传感器瞬时故障、时间戳错位导致两条记录拼到一起。这类值在原数据里找不到合理解释,属于脏数据。
  • 真实存在的极端情况:高收入人群的收入、极端天气下的用电量、大促当天的订单量。它们稀少,但确实发生了,删掉就等于抹掉了业务里最重要的一小段事实。

判断方法很朴素:回到原始记录去看。比如有一份订单数据,某笔金额比均值高出两个数量级,就去查这笔订单的创建时间、商品明细、支付流水。能对上,就是真实极端值;对不上,或者压根查不到这条记录,多半是错误。

用统计规则只能筛出候选

常见的 3σ 法则、IQR 四分位距,作用是把「值得看一眼的点」挑出来,而不是直接判定它们该删。

  • 3σ 假设数据近似正态分布。偏态严重的收入、流量、金额数据直接套用,会把大量正常的高值误判成异常。
  • IQR 对偏态更稳健,通常以 Q1−1.5×IQR 和 Q3+1.5×IQR 为界。但「1.5」只是经验系数,换成 3 也常见,取决于你对极端的容忍度。
  • 这两种方法都只用了单变量信息。一个值在单列里看着离谱,放到多列关系里可能完全正常。

所以正确用法是:先用规则缩小范围,再逐条人工或按业务逻辑复核。把统计输出当成线索清单,而不是删除指令。

三种处理方式,对应三种情形

复核之后,通常落到下面三种做法之一。

  • 修正:能定位到具体错误原因时优先修正,而不是删除。单位错了就换算,小数点错位就移动,时间戳错位就拆回两条记录。修正保留了样本量,也保留了这条记录里的其他正确字段。
  • 删除:只有当这条记录整体不可信、且无法修复时才删。删除要留痕,记录删了多少条、依据是什么,方便后续复查。如果异常值占比很高,更要警惕,那往往说明数据采集环节出了问题,而不是数据本身脏。
  • 保留并标记:真实极端值应当保留,同时新增一列标记,比如 is_outlier 。这样在建模或做汇总时,可以按需选择是否纳入,而不是在清洗阶段就把选择权丢掉。

一个可复用的处理流程

把上面的判断整理成固定顺序,每次遇到异常值都按这个流程走一遍。

  • 第一步,用箱线图、直方图或分位数把候选异常值找出来,先看清楚分布形状。
  • 第二步,对每个候选值回溯原始记录和采集链路,判断是错误还是真实极端。
  • 第三步,错误能修就修,修不了再考虑删;真实极端值保留并加标记。
  • 第四步,记录本次处理的口径和影响范围,写进数据说明里。
  • 第五步,如果同一类异常反复出现,回头改采集或录入环节,从源头减少。

删与留取决于你接下来要做什么

同一批异常值,在不同任务里的处理可以不一样。

如果目标是描述整体水平,比如算平均客单价,极端值会明显拉高均值,此时可以同时给出剔除前后的两个结果,并说明差异。如果目标是识别风险或异常行为,那些极端值恰恰是要找的对象,删掉就本末倒置了。如果目标是训练模型,可以保留全部数据但做稳健处理,比如对连续变量做截尾或变换,而不是直接删行。

判断标准始终是:这个值是否真实、是否与当前问题相关。真实且相关的,留下;失真或无关的,处理掉。把这两点想清楚,异常值就不再是一个需要凭感觉决定的麻烦。

看完想直接上手?

软件下载即用,遇到问题加客服 QQ 475831049 直接问。