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

数据清洗入门:两种做法对比

栏目:数据方法 | 约1101字 | 2026-09-17

打开一份从业务系统导出的销售表,常会看到几种扎眼的情况:日期列里混着“2024/1/5”和“2024-01-05”两种写法,金额列有3行是空白,还有一行写着“-999”。这些不是数据本身在讲故事,而是记录、导出、合并环节留下的痕迹。清洗要做的,就是把这些痕迹处理到不影响后续判断的程度。

一个具体的对比场景:某区域连锁门店1月共导出4872条交易记录,其中缺失值集中在“会员编号”列,共214条;异常值出现在“单笔金额”列,有7条超过5万元,而日常客单价中位数只有68元。第一种做法是手工清洗:在表格软件里筛选空白、逐条核对、手动补齐或删除。第二种做法是写一段脚本,用规则批量处理。两者面对的是同一份数据,路径却不同。

手工清洗的优势是门槛低、所见即所得。刚接触数据的人,用筛选功能把214条缺失会员编号的记录挑出来,再对照原始小票补录,这个过程本身就是在熟悉字段含义。但代价也很直接:4872条记录里,手工处理一遍大约需要40分钟到1小时;如果下个月再来一份同样结构的表,这些操作要重新做一遍。更麻烦的是,不同人手工处理同一份数据,留下的结果可能不一样,比如有人选择删除缺失行,有人选择填“未知”。

脚本清洗把规则写死在代码里,跑一遍通常几秒钟。同样的214条缺失记录,可以统一标记为“未登记会员”,7条异常金额则根据阈值规则单独输出到一个待核查文件。好处是可复现:下个月的数据进来,同一段脚本再跑一次,处理逻辑不变。代价是前期要花时间写和调试,而且规则一旦写错,错误会被批量放大。比如把“单笔金额>50000”误写成“>5000”,就会误伤一批正常订单。

两种做法并非互相替代。一个比较务实的观察是:字段少、一次性分析、数据量在几千行以内,手工清洗更快;字段多、需要按月重复、数据量过万,脚本清洗的边际成本更低。中间还有一条路,先用脚本做初步筛查,把缺失和异常记录导出成小表,再人工判断。这样既保留了批量处理的效率,也留出了逐条确认的空间。

不管走哪条路,清洗前先做一次字段盘点很有必要。逐列看三件事:缺失比例、取值范围、格式是否统一。4872条记录中,如果某一列缺失超过30%,直接删除可能损失太多信息;如果缺失低于5%,标记或删除的影响都有限。异常值也一样,先看它是录入错误还是真实的大额交易,再决定处理方式。这些判断没有标准答案,但记录下来,下次遇到类似数据就有参照。

清洗后的数据不会自动变成结论。它只是让后续的走势观察和预测尝试少一些干扰。对刚入门的人来说,与其追求一步到位的完美清洗,不如从一张具体的表开始,把处理过的字段、用过的规则、删掉的行数记在一份说明里。这份说明本身,就是下一次清洗的起点。