中盾观察
首页 / 数据方法 / 正文

数据清洗入门:一份从脏到净的实用清单

栏目:数据方法 | 约1354字 | 2026-10-08

拿到一份原始数据,第一反应往往是直接跑图看走势。但真实情况是,多数公开数据在可用之前,要经过一轮甚至几轮清理。某电商平台2023年一份订单表,120万行里约有3.7万行收货地址为空,占比刚过3%。这个比例不算高,可如果直接按省份统计销量,这3.7万行会被整体丢弃,广东、浙江这类订单密集省份的排名可能被轻微拉偏。清洗的第一步不是动手改,而是先数一遍:空值多少、重复多少、格式不统一的有多少。

缺失值是最常见的入口问题。处理方式无非三类:删、补、留。删的前提是缺失比例低且随机,比如用户年龄字段缺失2%,直接剔除对整体分布影响有限。补则要小心,用均值填收入,会把高收入人群的差异抹平,后续做分组对比时容易失真。更稳妥的做法是保留缺失标记,单独设一个“未知”类别。某份城市空气质量数据里,PM2.5缺失集中在凌晨时段,如果简单用全天均值填补,反而掩盖了夜间监测设备维护的规律。观察缺失的分布,比急着填数更有价值。

异常值需要区分两种:一种是录入错误,一种是真实极端。比如某门店日销售额字段里出现一笔999999元,而该店历史日均只有8000元,这大概率是小数点错位。另一种情况是促销日销售额确实冲到5万元,属于真实波动,删掉反而丢失信息。判断依据可以看分位数:把数据按大小排列,超过99.5%分位且偏离中位数十倍以上的值,先标记出来,再结合业务背景逐条确认。这一步急不得,一刀切删除会直接影响后续走势的形态。

重复记录往往比想象中隐蔽。两份表合并时,用户ID相同但注册时间差几秒,系统可能判定为两条独立记录。某次合并两份渠道数据,去重前是43万条,按手机号加时间窗口去重后剩下38.2万条,多出来的4.8万条集中在同一批推广活动。处理重复不能只看单一字段,要组合业务主键。常见做法是先按主键排序,保留最新一条,同时记录被合并的条数,方便回头核对。

格式统一是容易被跳过的一步。日期字段里“2024/1/5”“2024-01-05”“1月5日”混在一起,直接排序会乱。数值字段里“1,200”和“1200”在文本格式下不相等,做求和时会漏算。建议在清洗阶段统一成ISO日期格式和纯数字格式,再进入分析环节。这一步花的时间通常只占整个流程的15%左右,但能避免后续80%的对齐错误。把格式问题前置,预测模型的输入稳定性会明显提升。

清洗完的数据需要留一份变更日志。改了多少行、删了多少行、填补了多少行,逐项记录。某次处理一份5万行的销售数据,最终保留4.6万行,删除的4000行里,3200行是重复记录,800行是金额为负的退款单。如果没有日志,两周后回头看,很难解释为什么总数对不上。日志不需要复杂,一张表三列:操作类型、影响行数、操作时间,足够。

一份可执行的清洗清单可以按这个顺序走:先备份原始文件,再统计各字段缺失率,接着标记异常值并逐条确认,然后按业务主键去重,最后统一日期和数值格式。每一步做完都存一个中间版本,不要在原文件上反复覆盖。数据清洗没有一步到位的方案,更多是反复观察、逐步收敛的过程。走势是否可信,往往在清洗阶段就已经决定了七成。

最后提醒一点:清洗的目标不是让数据变漂亮,而是让后续的判断有据可依。遇到拿不准的字段,宁可保留原始值并加备注,也不要为了图省事直接覆盖。数据工作里,可追溯比看起来干净更重要。