本文参与掘金「TRAE Work 实战帮」征文活动
先说我干了什么
我是做数据开发和分析的。上月底,业务那边甩过来 35 个 CSV,说是"全国城市空气质量的公开监测数据,你帮我们出个月报分析"。
这种需求我接了没有一百次也有八十次。文件拿到手,老规矩,先 head 看一眼------好家伙,一个文件 378 列,375 个城市横着排,日期、小时、指标竖着堆。再看数据量,一个月 465 万行。空值?我随手数了一下,14.58%,六十八万个格子是空的,还有的是纯空格糊弄人。有几天的文件行数都不对,7 月 24 号只有 289 行,正常应该是 360 行------那天差不多 5 个小时的监测数据整个没了。
放以前,这活儿我这么干:写个 pandas 脚本,合并、清洗、聚合,跑完还得自己检查哪天的数据不对劲,光检查就得来回折腾。上个月我就栽过一次------有个字段缺数据没处理干净,均值被拉偏,报告交上去被业务的人问"这数字怎么跟统计局对不上",我解释了半天,脸都丢光了。
这次我换了路子。全程用 TRAE Work 对话搞定,从文件到手到报告出来,十来分钟。
怎么干的:四轮对话
第一轮:先让它体检,别急着动手
我的第一句话是:
先别清洗。检查 raw/ 目录下 35 个 CSV:行数列数一不一致?缺失值有多少、集中在哪?有没有重复行、特殊字符?输出体检报告。
这步我坚持必须有。数据都不了解就开洗,跟蒙眼开车没区别。TRAE Work 跑完,报告长这样:
| 体检项 | 结果 |
|---|---|
| 文件结构 | 35 个 CSV,每个 378 列宽表(375 城市 × 15 指标 × 24 小时) |
| 行数异常 | 7/6、7/7、7/20 少 15 行;7/22 只有 302 行;7/24 只有 289 行 |
| 缺失单元格 | 684,815 个,占 14.58%,一部分还是纯空格占位 |
| 换行符 | 行尾混着 \r,Excel 一打开就错行 |
跟我自己扫了一遍的印象一致,但人家几十秒就把数据量化和汇总了。这里有个细节:我特意强调"只报告、别改",它还真就没自作主张动数据。
第二轮:规则一次说清
体检完了,下指令:
清洗规则:1)35 个文件合并成一张表;2)宽表转长表,留 date/hour/metric/city/value 五列;3)空值和纯空格都标成 NA;4)数值列转数字;5)按 date+hour+metric+city 去重;6)行尾 \r 清掉。
TRAE Work 生成了脚本直接跑,核心代码就一小段:
sql
# TRAE Work 生成的核心片段(宽转长 + 缺失标准化)
for _, row in raw.iterrows():
for city in cities:
v = str(row[city]).strip()
rows.append({
'date': row['date'], 'hour': row['hour'], 'metric': row['type'],
'city': city, 'value': float(v) if v and v != 'nan' else None
})
35 个文件合成一张 465.9 万行的长表,字段干净,类型统一。这段代码我自己写也就几分钟,但写完还要调试边界情况------空字符串、nan、空格、\r 尾缀,这些坑它一次全踩平了。
第三轮:质量复核,专治上次翻车
合并完先别急着算数,我补了一句:
检查哪些"城市×日期"有效小时数不足 18(缺失超过 6 小时),标成"数据不完整",单独列出来,统计时排除。
这就是我上个月丢人的那个坑,这次提前堵上。它复查出来 8 条记录不达标,主要集中在 7/22 和 7/24 两天,处理方式是"标记、保留、统计时排除、报告里写明"。这样哪怕数据缺了,报告里也是清清楚楚的,别人问起来我有依据,而不是"我也不知道怎么就少了"。
第四轮:直接要成品
最后一句:
基于清洗后的数据出月报:1)按城市聚合 7 月日均 AQI,TOP10 最差和最好;2)全国优良天数占比;3)北京逐日走势图;4)附清洗前后对比说明;5)输出成 HTML 报告。
它直接给了一份能浏览器打开的完整报告,排名、柱状图、走势、数据质量说明都在里面,不用我再装任何工具。
结果:3 小时变 10 分钟
交付的东西:
clean_long.csv:465.9 万行标准长表,直接能进 BI 工具clean_daily_aqi.csv:11,682 行「城市×日」聚合表,带 AQI 等级和完整性标记report.html:可视化月报
报告里的几个真实结论:
- 7 月全国整体不错,优良天数占比 99%,但还有 65 条"城市×日"记录过了污染线(AQI>100)
- 最差的是和田地区,日均 AQI 169,中度污染;喀什 101 第二------南疆沙尘的影响一眼就能看出来
- 最好的是黔南州、临沧,日均才 17
- 北京 7 月日均 39,优良率 100%
- 8 月前四天全国均值比 7 月还低一点
换以前,我手工顶多给个"全国平均 AQI 是多少",这次排名、污染日分布、城市对比全有了。业务那边要的"为什么这个月和上个月不一样",也有数据能解释了。
清洗前长这样------378 列宽表,红格全是缺的:

清洗后是这种标准长表,等级自动标好:

完整月报长这样:

数据来源是公开的监测数据整理站:

我把这套流程沉淀成了一个 Skill
活儿干完,我把四步流程固化成了一个可复用的 Skill(数据处理技能) ,后续类似的表格整理需求,直接整包调用:
表格数据四步整理法 :体检 → 清洗 → 复核 → 产出。 输入任意目录的原始文件(CSV/Excel/JSON),按步骤输出三级产物:
raw/(原始文件,只读不动)→intermediate/(体检报告、合并长表、质量清单)→output/(标准表、聚合表,可选report.html可视化报告)。 调用方式:把第 1~4 步指令依次发出,每步确认后再继续;或直接作为自定义技能导入,一条指令触发全流程: "用「表格数据四步整理法」处理 raw/ 目录,缺失阈值 6h,生成 HTML 报告。"
这 Skill 的价值有三点:
- 流程固定:体检→清洗→复核→产出四步顺序锁死,复核环节不会被跳过------上一版报告缺数据没发现,正是漏掉了这一步
- 产物分级落地 :原始文件只读不动,体检报告、合并长表、质量清单进
intermediate/,标准表和聚合表进output/,任何数字都能回溯到对应目录 - HTML 可选 :需要给业务方汇报就生成
report.html,内部自用只要 CSV,不产生多余产物
Skill 的完整定义我放在文末附录,可以直接抄走,字段换成你自己的业务数据就能用。
能直接抄的经验
流程就四步:体检 → 清洗 → 复核 → 产出
跳过体检,你都不知道数据烂在哪;跳过复核,你就是三个月前的我。
四条指令模板,每次复制改改就行
体检:
先别清洗。检查 目录 下的文件:行数列数一不一致?缺失值多少、集中在哪?有没有重复行、特殊字符(换行符/编码/空格占位)?输出体检报告。
清洗:
清洗规则:1)N 个文件合并成一张表;2)宽表转长表,留 字段;3)空值和纯空格标成 NA;4)数值列转数字;5)按 字段 去重;6)其他格式要求。
复核:
检查哪些记录 完整性指标 不达标(例如有效小时数不足 18),标成"数据不完整"单独列出,统计时排除。
产出:
基于清洗后的数据出 报告/表格:1)按 维度 聚合,TOP10;2)占比指标;3)图表;4)附清洗前后对比说明;5)输出 HTML/Excel。
几个坑,都是真金白银换的
- 纯空格是"假空值" :直接按空单元格处理会漏掉,一定要明确"空格也算缺失"
\r换行符:Excel 打开直接错行,合并前统一清,不然交付的表客户一打开就是花的- 缺数据的日期会悄悄拉偏均值:必须做完整性复核,超阈值就排除并在报告里注明。写清楚"哪天缺数据、为什么没算",客户反而更信你
- 别一次塞太多要求:四步分四轮说,每轮结果都能验证,出问题好定位
- 先体检后动手:多少人上来就"帮我清洗",结果 AI 把该留的脏标记也当垃圾清了
时间账
| 环节 | 手工写脚本/Excel | TRAE Work | 差距 |
|---|---|---|---|
| 合并 35 个文件 | 40 分钟 | 半分钟 | 约 80 倍 |
| 缺失值处理 | 1 小时 | 1 分钟(含复核) | 约 60 倍 |
| 均值/排名/图表 | 1 个多小时 | 2 分钟 | 约 40 倍 |
| 数据质量说明 | 写不准、不愿写 | 自动生成 | --- |
| 合计 | 约 3 小时 | 约 10 分钟 | 约 18 倍 |
附录:Skill 完整定义
表格数据四步整理法(Skill) ------一个可复用的数据处理技能:拿到一堆"乱七八糟"的文件,按 体检 → 清洗 → 复核 → 产出 四步处理,全程落地原始文件、中间文件、最终文件三级产物,可选生成 HTML 可视化报告。
适用场景:业务方丢来几十个 CSV/Excel(字段不统一、口径混乱);多来源数据需要合并成一张标准表;月度/周度复盘前需要"能直接用的干净数据 + 质量说明"。
输入:原始文件(任意目录下的 CSV/Excel/JSON,本技能不改动它们);处理规则(缺失标记方式、去重字段、完整性阈值,如"有效小时数 ≥ 18")。
四步流程:
- 体检:只读检查,输出体检报告(行数一致性、缺失占比、重复、换行符/编码/空格占位问题),不修改任何数据;
- 清洗 :合并、宽转长、空值/空格→NA、数值转类型、去重、清理换行符,中间文件写入
intermediate/;- 复核 :按完整性阈值扫描(如缺失 >6h 判定不完整),不达标标记排除,输出质量清单(写入
intermediate/),不参与后续统计;- 产出 :标准表写入
output/,聚合透视表(均值/占比/TOP10),可选生成report.html(排名+柱状图+走势+清洗前后对比)。产物目录 :
raw/原始文件(只读,永不改动)→intermediate/中间文件(体检报告、合并长表、质量清单)→output/最终文件(标准表、聚合表、可选 report.html)。使用方式:把第 1~4 步指令依次发给 AI(TRAE Work 或其他助手均可),每步确认结果后再继续;或直接作为自定义技能导入,一条指令触发全流程------"用「表格数据四步整理法」处理 raw/ 目录,缺失阈值 6h,生成 HTML 报告。"
写在最后
数据整理的核心问题从来不是"会不会做",而是"做得稳不稳、快不快、能不能说清楚"。四步法的价值在于把这三件事拆开解决:体检保证"看得清",清洗保证"理得顺",复核保证"算得准",产出保证"交得出"。方法本身不依赖具体业务------销售流水、门店报表、问卷导出、财务明细,只要是多文件、多口径的表格整理需求,均可按 Skill 定义直接复用。