数据清洗入门:从杂乱到可用的第一步
拿到一份原始数据,第一件事往往不是跑模型,而是盯着表格发愁。某电商后台导出的订单表,1000行里手机号字段有87行是空值,下单时间出现“2024-13-45”这种日期,还有3行金额是负数。这些不是极端案例,而是日常。数据清洗要解决的就是这类问题:把不可用的记录变成可用的、可比较的、可计算的。
先看缺失值。缺失分两种:真缺失和假缺失。真缺失是用户没填,假缺失是系统没传过来。区分方法很简单,看字段的分布。比如年龄字段缺失率30%,而性别字段缺失率只有2%,那年龄的缺失可能跟用户不愿透露有关,性别缺失更可能是接口问题。处理方式也不同:年龄可以按分组中位数填充,性别缺失如果占比极低,直接删掉那几行更省事。关键是记录每一步删了多少、补了多少,别让清洗变成二次污染。
异常值更考验判断。某连锁门店的日销售额,平时在8000到12000之间波动,突然有一天显示480000。先别急着删。查一下当天的记录,发现是系统把三家店的汇总数重复计入了。这是录入错误,应该修正而不是删除。另一种情况:某用户单日点击次数达到2000次,远超正常范围,但后台日志显示是爬虫在跑。这种异常值如果混进用户行为分析,会直接带偏走势。处理异常值没有统一公式,但有一个原则:先理解它怎么来的,再决定留还是删。
格式混乱是最容易被低估的环节。同一张表里,日期有“2024/1/5”“2024-01-05”“01-05-2024”三种写法,直接排序会乱。金额字段有的带“¥”符号,有的带千分位逗号,有的用“元”字结尾。这些不统一,后续的求和、对比、预测都做不了。一个实用习惯是:清洗前先对每个字段做一次“值分布扫描”,把出现频率最高的20个值列出来,格式问题基本一眼就能看到。
清洗流程可以拆成三步:检查、处理、验证。检查阶段只做一件事——量化问题。统计每个字段的缺失率、唯一值数量、最大值最小值、格式种类。比如一张10万行的用户表,手机号字段唯一值只有6.8万个,说明有重复或无效号码。处理阶段按字段类型走不同策略:数值字段看分布,分类字段看频次,文本字段看长度和特殊字符。验证阶段最简单也最容易被跳过——随机抽20行,人工看一眼,确认清洗后的数据符合常识。
有个细节值得单独说:清洗规则要写下来。比如“金额为负数的记录删除”“日期格式统一为YYYY-MM-DD”“手机号缺失的用00000000000填充”。写成文档,下次遇到同类数据直接复用。更关键的是,当别人问“为什么这个月的用户数比上个月少了两万”,你能翻出规则说:因为上个月有1.2万条重复记录被去掉了,还有8000条手机号无效的被标记了。没有规则记录,清洗就成了黑箱。
数据清洗不产生直接结论,但它决定了结论可不可靠。一份清洗得当的数据,走势会变得清晰,预测的误差也会收窄。反过来,跳过清洗直接分析,往往是在噪声上找规律。观察那些反复出现的数据问题,把它们变成固定的检查项,比每次从头救火要省力得多。入门阶段不需要复杂工具,一张Excel、几行Python,把缺失、异常、格式这三关过了,大部分日常分析就够用了。