周五下午要交季度报表,从业务系统导出的表里日期一列混着三种格式,客户名称前后带空格,还有几十行重复记录。这种时候先别急着做透视表,数据加工这一步躲不过去,源头不干净,后面全白干。
四个环节,一个都省不了
- 清洗:去重、补缺失值、统一格式、处理异常值
- 转换:类型转换、单位统一、脱敏、字段拆分合并
- 整合:多张表按主键对齐,跨系统的数据拼到一起
- 衍生:根据原始字段算出毛利率、客单价这类指标
做过的都懂,清洗一般能占到整个项目一半以上的工作量,说数据工作大半时间在加工并不夸张。
清洗的具体动作
日期一列混着 2025/1/3、2025-01-03 和 3 Jan 三种写法,Excel 里用分列功能或 Power Query 的更改类型统一,数据库里用 STR_TO_DATE 这类函数转。缺失值怎么补有讲究:占比小直接删行,数值列常用均值或中位数填,时间序列用前值填充,缺失本身有含义时干脆加一列做标记,别硬填。涉及客户的手机号、证件号,导出前把中间几位打上星号再给别人。导出的表里要是有合并单元格,先拆掉再处理,不然后面每一步都别扭。
工具按数据量和场景挑
几千行的表格,Excel 的 Power Query 点鼠标就能完成清洗,操作步骤还能重放,下次刷新数据一键复用。数据在数据库里就直接写 SQL,几百行语句搞定去重和转换,效率高还能存成定时任务。数据量大、要周期性跑的,用 Python 的 pandas:read_csv 读进来,drop_duplicates 去重,fillna 补空,groupby 配合 agg 算衍生指标,十几行代码写完挂到服务器上定时执行。Kettle 这类 ETL 工具适合跨库搬运的固定流程。
三个坑提前避开
加工前备份一份原始数据,改崩了能回退。加工脚本要写成可重跑的,同一份数据跑两遍结果不变,定时任务才敢挂上去。最要命的是指标定义:活跃用户按 7 天算还是 30 天算,退货算不算销售额,先跟业务方对齐再动手,否则交上去必然返工。
数据加工不出彩,但它决定下限,图表再漂亮,源头数据是脏的,结论照样立不住。