ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【干货】数据清洗全攻略:处理缺失值、异常值的7种方法

【干货】数据清洗全攻略:处理缺失值、异常值的7种方法

如果你问一个数据分析师,工作中最耗时、最头疼的部分是什么?答案大概率不是建模,不是调参,而是数据清洗。

这不是夸张。在真实的业务场景里,我们花在清洗数据上的时间,往往占到整个项目周期的60%到80%。这是因为原始数据从来不会乖乖躺好等着你用。缺失值、异常值、重复数据、格式混乱,这些问题不解决,后面的分析和建模也没办法进行。

而所有这些问题里,缺失值和异常值又是最难缠的两个。处理不好,模型精度掉得莫名其妙,业务报表给出错误结论,甚至导致决策方向跑偏。

这篇文章,我想和你聊聊处理这两个问题的7个实用方法。不是教科书式的搬运,而是我自己在项目里反复用过、踩过坑、最后沉淀下来的实战经验。

一、先区分问题数据类型

拿到一份脏数据,别急着上手处理。先问自己:这些问题数据,到底属于哪一类?

缺失值相对好理解,就是该有的数据没了。表格里空着,或者显示为NaN、None,甚至有人用“-”、“/”这种占位符糊弄过去。原因很多,比如用户没填、采集系统故障、传输过程中丢包等。

异常值就复杂一些。它指的是明显偏离正常范围的数据点。但这里面有个关键区别:

真实的异常:本身就是业务的一部分。比如电商大促时的百万级订单,金融领域的超高净值交易。这些数据虽然异常,但背后有真实的业务逻辑,不能简单删除。

错误的异常:纯粹是录入错误或系统故障。比如年龄填了200岁,销售额是负数。这些是干扰项,必须处理。

区分清楚这两类,后面的处理才有方向。

二、缺失值处理核心原则

处理缺失值的核心原则其实就是能填不删。直接删除是最省事的办法,但也最容易丢掉有价值的信息。

(一)方法1:直接删除

这个方法适用的情况其实很有限:

  • ●数据量足够大,缺失的比例极低,比如5%以下,删除后不影响整体分布。
  • ●某一列的缺失比例太高,比如超过80%,且本身不是核心字段,直接删列更省事。
  • ●某条数据缺得太多,比如10个字段空了8个,留着也没分析价值。

但需要小心的是如果你的样本量本身就不大,比如总共只有几百条数据,删除操作要非常谨慎。一旦删多了,后续分析的统计意义就会打折扣。动手前,备份永远是第一位的。

(二)方法2:填充

大多数情况下,我们会选择用合理的值把空缺补上。怎么填,取决于数据类型和数据分布。

  • ●均值填充:适用于没有极端值的连续数据。比如用户身高、常规商品的日销量。但如果数据里有极端值,比如有几个用户身高2.2米,均值就会被带偏。
  • ●中位数填充:适用于存在极端值的连续数据。比如用户收入、房产价格。中位数对极端值不敏感,填出来的值更稳健。
  • ●众数填充:适用于分类数据。比如用户性别、所在城市、会员等级。缺了就填出现次数最多的那个类别。
  • ●常数填充:有时候空值本身就有业务含义。比如历史消费金额为空,很可能意味着这是一个新用户或未消费用户,填0就符合业务逻辑。
  • (三)方法3:插值与模型预测

    如果数据有时序规律,比如每天的销售额、每小时的气温,线性插值往往效果不错,周一100,周三200,周二大概率在150左右。

    更复杂的情况,可以考虑用模型预测缺失值。比如用户的年收入缺失,但你有他的年龄、职业、学历、所在城市等信息,完全可以用KNN或随机森林,把这些完整字段作为输入,把缺失值算出来。这个方法精度高,但成本也高,适合核心数据字段。

三、异常值处理实用方法

(一)方法4:3σ原则

这个方法有个前提是数据必须服从正态分布。在均值±3倍标准差的范围内,覆盖了99.7%的数据,落在这个区间外的,可以视为异常。

比如学生的考试成绩、工厂生产零件的尺寸,这些数据天然符合正态分布,用3σ原则很合适。但收入、房价这类偏态分布的数据,就别用这个方法了,因为偏态分布的数据不满足正态分布假设,用3σ原则会把尾部正常的业务高点误判为异常。

(二)方法5:箱线图法

这是我个人最常用的方法,因为它不依赖任何数据分布假设。

箱线图通过四分位数来划定边界:下四分位数(Q1)、上四分位数(Q3),两者之差叫四分位距(IQR)。凡是小于Q1-1.5×IQR,或大于Q3+1.5×IQR的点,就被判定为异常值。

这个方法的好处是,它能直观地展示数据的分布情况,而且不受极端值的影响,判断标准很稳定。无论是做探索性分析,还是正式建模前的数据清洗,箱线图都是很可靠的工具。

(三)方法6:截尾与缩尾

当你确定某些异常值是录入错误,但又不想因为删除而损失数据量时,可以考虑这两种处理方式。

  • ●截尾:直接删除异常值。适合明确是错误数据、且占比很小的情况。
  • ●缩尾:把异常值替换为正常范围的边界值。比如把超过上限的销售额,统一改成上限值。这样既保留了数据量,又控制了极端值的影响。在金融风控、信用评分这类对数据完整性要求高的场景里,这个方法很常用。

    (四)方法7:分箱处理

    有些异常值,你不但不能删,还得把它们单独拎出来重点分析。

    比如电商分析里,那些超级大客户虽然人数少,但贡献了很大比例的销售额。把他们单独分成一组,分析他们的消费习惯、偏好品类,往往能得出很有价值的业务洞察。这种做法,比简单粗暴地处理掉异常值,要聪明得多。

    四、数据清洗方法选择总结

    数据清洗没有标准答案,但有经验可以借鉴:

    缺失值:看比例。缺得少直接删;缺得中等用填充,连续数据看分布,分类数据用众数;缺得多又很重要,考虑插值或模型预测。

    异常值:看性质。通用检测首选箱线图;正态分布可用3σ原则;建模需要保留数据量,用截尾或缩尾;业务分析需要深度洞察,用分箱处理。

    数据清洗这件事,看起来琐碎,但恰恰是这些琐碎的工作,决定了后续分析的底线在哪里。处理得越扎实,后面的路就走得越稳。

    光靠零散技巧做数据清洗,效率低还易踩坑,想系统化掌握数据分析全流程,提升职场竞争力,不妨了解CDA数据分析师认证。CDA是行业公认的专业数据人才认证,深耕数据清洗、建模分析等核心技能,更是求职加薪、职场进阶的硬核背书。

返回列表