35 个文件、14.58% 数据是空的,我让 TRAE Work 十分钟收拾干净了

本文参与掘金「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 的价值有三点:

  1. 流程固定:体检→清洗→复核→产出四步顺序锁死,复核环节不会被跳过------上一版报告缺数据没发现,正是漏掉了这一步
  2. 产物分级落地 :原始文件只读不动,体检报告、合并长表、质量清单进 intermediate/,标准表和聚合表进 output/,任何数字都能回溯到对应目录
  3. 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")。

四步流程

  1. 体检:只读检查,输出体检报告(行数一致性、缺失占比、重复、换行符/编码/空格占位问题),不修改任何数据;
  2. 清洗 :合并、宽转长、空值/空格→NA、数值转类型、去重、清理换行符,中间文件写入 intermediate/
  3. 复核 :按完整性阈值扫描(如缺失 >6h 判定不完整),不达标标记排除,输出质量清单(写入 intermediate/),不参与后续统计;
  4. 产出 :标准表写入 output/,聚合透视表(均值/占比/TOP10),可选生成 report.html(排名+柱状图+走势+清洗前后对比)。

产物目录raw/ 原始文件(只读,永不改动)→ intermediate/ 中间文件(体检报告、合并长表、质量清单)→ output/ 最终文件(标准表、聚合表、可选 report.html)。

使用方式:把第 1~4 步指令依次发给 AI(TRAE Work 或其他助手均可),每步确认结果后再继续;或直接作为自定义技能导入,一条指令触发全流程------"用「表格数据四步整理法」处理 raw/ 目录,缺失阈值 6h,生成 HTML 报告。"


写在最后

数据整理的核心问题从来不是"会不会做",而是"做得稳不稳、快不快、能不能说清楚"。四步法的价值在于把这三件事拆开解决:体检保证"看得清",清洗保证"理得顺",复核保证"算得准",产出保证"交得出"。方法本身不依赖具体业务------销售流水、门店报表、问卷导出、财务明细,只要是多文件、多口径的表格整理需求,均可按 Skill 定义直接复用。

相关推荐
西安小哥2 小时前
AI 知识库与智能检索:高阶面试实战指南
ai编程
console.log('npc')3 小时前
OptMem 使用教程
人工智能·ai编程·记忆
dogstarhuang4 小时前
手把手用 Doubao-Seed-Evolving 写一个网站监控脚本:完整代码与两处踩坑
python·ai编程·掘金技术征文
李剑一4 小时前
AI到底是在降本增效还是「降本增笑」?员工成本降下去了,AI反而成为最大的成本来源了!
aigc·ai编程
GuWenyue4 小时前
大模型幻觉无解?7步搭建Milvus+LangChain电子书RAG,私有小说精准问答零编造
人工智能·langchain·ai编程
Postkarte不想说话5 小时前
Hugging Face模型转为GGUF格式
ai编程
学者猫头鹰5 小时前
基于Spring AI 1.1.x 私有知识库RAG系统
ai编程
Coffeeee5 小时前
天天 AI Coding 的你,如果出去面试,你的竞争力是什么?
人工智能·程序员·ai编程