导语
如果说上次的糖尿病预测 案例偏算法建模,那今天这个场景绝对更贴近普通打工人的日常------处理乱七八糟的Excel报表。
需求很简单,甚至有点无聊:每周五下午,把销售部的3个不同数据源、不同格式的Excel文件合并在一起,做数据清洗和汇总计算,最后生成一份周报发给老板。
这活儿重复性高、毫无技术含量,但占用了周五下午宝贵的摸鱼时间。关键是你还不能不做,因为老板每周都要看。
我们试试用AiPy这种AI驱动的Python执行工具,看能不能把这事儿彻底自动化,让自己每周五下午能提前溜。
一、痛点还原:三个文件,三种脾气
每周收到的数据长这样:
文件A(CRM系统导出) :sales_crm.xlsx
-
用户ID带前缀,比如
CUST_10023、CUST_10024。 -
日期格式是标准的
YYYY-MM-DD。 -
列名是英文:
customer_id,order_date,product_name,amount。 -
大概2000行,数据质量比较好,基本没有缺失值。
文件B(财务部门对账表) :finance_check.csv
-
用户ID是纯数字,比如
10023、10024。 -
日期格式是美式的
MM/DD/YY,比如01/15/26。 -
列名是中文:
客户编号,订单日期,订单金额,支付状态。 -
大概2500行,有一些金额字段是文本格式(带了货币符号
$)。
文件C(售后反馈记录) :after_sale.xlsx
-
用户ID格式和文件A一致(带
CUST_前缀)。 -
日期格式乱七八糟,有的是
2026.01.15,有的是15-Jan-26。 -
列名中英混杂:
customer_id,反馈类型,feedback_date,处理状态。 -
大概800行,缺失值很多,而且表格里有从别处复制粘贴带来的合并单元格残留问题。
这三个文件,三个来源,三种格式,但核心都是围绕同一个用户群体的数据。我们需要做的事很明确:
以用户ID为唯一标识,把三个表的信息合并成一个宽表。清洗日期格式统一为
YYYY-MM-DD。把金额中的货币符号去掉,转为浮点数。缺失值用0或"未知"填充。最后生成一份"销售周报_2026年第XX周.xlsx",包含每个用户的完整信息和本周消费总额。
如果用传统方式,你大概会这样操作:
-
打开一个Python脚本,或者新建一个Jupyter Notebook。
-
用
pd.read_excel()读取A文件,用pd.read_csv()读取B文件。 -
发现B文件的金额字段里有
$符号,得写个replace或正则表达式清洗。 -
发现C文件的日期格式不统一,得写一个复杂的日期解析函数。
-
用
pd.merge()做外连接,指定left_on和right_on。 -
用
pd.to_datetime()统一日期格式。 -
用
fillna(0)和fillna('未知')处理缺失值。 -
用
groupby().sum()计算消费总额。 -
导出为Excel文件。
整个过程,熟练的数据分析师大概需要20到40分钟。如果不熟练或者中间遇到意外(比如某个文件的列名变了),时间翻倍。
二、自动化方案:让AI写脚本并当场运行
这次我们换一个思路:不自己写代码,也不在AI聊天窗口里来回复制粘贴。而是让AI直接理解需求,动态生成适配当前数据格式的脚本并在本地执行。
整个过程记录如下:
第一步:下发任务,一句话的事
在终端里启动会话,然后输入任务描述:
"帮我做一个销售数据的自动化合并报表。具体要求如下:
读取当前目录下的三个文件:CRM导出的'sales_crm.xlsx'、财务对账的'finance_check.csv'、售后反馈的'after_sale.xlsx'。
以用户ID为唯一标识进行外连接合并。注意三个文件里的用户ID格式不完全一致,需要做格式归一化。
所有日期字段统一转换为'YYYY-MM-DD'格式。
金额字段去掉货币符号和千位分隔符,转为数值类型。
缺失值处理:数值型用0填充,文本型用'未知'填充。
最后生成一个新的Excel文件'销售周报_本周.xlsx',并在Sheet1中额外添加一列'本周消费总额'(按用户ID汇总)。
全程自动执行,我不需要手动干预。"
这段描述大概150个字,花了不到一分钟打完。这个需求描述实际上比平时给AI聊天工具的描述更"丰满"一些,因为我把数据格式差异(ID前缀不一致、日期格式不同)明确指出来了,避免AI生成的代码太理想化。
第二步:观察任务拆解与执行
系统接收到指令后,开始在终端输出实时的执行日志:
text
[任务解析] 收到需求,正在拆解子任务...
子任务1:扫描并识别目标文件
子任务2:分别读取三个文件,探查数据结构
子任务3:设计ID归一化映射方案
子任务4:执行外连接合并
子任务5:统一日期格式
子任务6:清洗金额字段
子任务7:填充缺失值
子任务8:计算汇总指标
子任务9:导出Excel
[执行] 正在读取 sales_crm.xlsx...
发现列:customer_id, order_date, product_name, amount
样本数:1,847条
[执行] 正在读取 finance_check.csv...
发现列:客户编号, 订单日期, 订单金额, 支付状态
样本数:2,312条
[注意] 发现'订单金额'字段包含非数字字符'$',将在清洗阶段处理。
[执行] 正在读取 after_sale.xlsx...
发现列:customer_id, 反馈类型, feedback_date, 处理状态
样本数:793条
[注意] 发现'feedback_date'字段存在多种日期格式,将尝试自动解析。
可以看到,AI自动完成了对三个文件的结构探查,并且主动识别了潜在的数据质量问题:金额带货币符号、日期格式不统一。这些如果不提前处理,后续的合并操作肯定会报错。
第三步:关键环节------ID归一化
合并操作最大的坑在于用户ID的格式不一致。文件A和C用的是CUST_10023格式,文件B用的是纯数字10023格式。
AI的解决方案是:
text
[执行] 正在处理用户ID格式归一化...
方案:对文件B的'客户编号'列统一添加'CUST_'前缀,使其与A、C保持一致。
示例转换:10023 -> CUST_10023
转换后验证:无重复,无丢失。
这个处理逻辑非常合理------它选择了"修改少数派"的策略,而不是去剥离A和C的前缀。这样既保留了原始信息的完整性,又避免了可能的误操作。
第四步:自动安装缺失依赖
在准备导出Excel文件时,系统检测到当前环境中缺少openpyxl库(这是pandas写入.xlsx文件所必需的):
text
[执行] 导出Excel文件需要依赖库'openpyxl',当前环境中未安装。
[Auto-fix] 正在尝试安装 openpyxl...
pip install openpyxl 执行成功。
[继续] 正在写入Excel文件...
这种按需自动补全依赖的机制在实际使用中非常实用。你不需要提前把所有可能用到的库都装好,系统会在需要的时候自动申请安装。当然,这个过程需要用户授权(默认是询问后安装),避免在正式生产环境中自动安装未经审核的包。
第五步:格式变动时的自适应能力
真正体现这个方案价值的,是应对"数据源变动"的能力。假设第二周你再执行同样的任务,但财务那边发来的文件改了一下模板------列名从客户编号变成了用户ID。
如果是一个固定的Python脚本,这个时候会直接报KeyError,然后你需要手动去修改脚本里的列名,再重新跑一遍。
但在这个框架下,AI在执行时会捕获异常,重新读取文件头,理解新列名,自动修正映射关系后继续运行。日志里大概是这样的:
text
[警告] 未找到预期的列'客户编号',当前文件列名:['用户ID', '订单日期', '订单金额', '支付状态']
[Auto-fix] 已自动识别'用户ID'为'客户编号'的等价列,继续执行。
这种自适应性让它比固定脚本更"皮实",对于经常有格式变动的小公司数据源来说,省去了频繁修改脚本的维护成本。
三、深入:它到底是如何工作的?
这个工具的核心机制其实并不复杂,一句话概括就是:大模型生成代码 + 本地Python执行器 + 异常反馈闭环。
具体流程是这样的:
-
指令解析:用户输入自然语言需求,经过大模型理解后转化为结构化的任务列表。
-
代码生成:针对每个子任务,AI生成对应的Python代码片段。
-
沙箱执行:在隔离的Python环境中执行生成的代码。
-
结果反馈:执行结果(包括stdout、stderr、返回值和文件变更)被捕获并传回给AI。
-
迭代修正:如果执行过程中出现异常,AI分析错误信息,修改代码,重新执行。这个循环一直持续到任务完成或达到最大尝试次数。
-
产出交付:最终生成的文件保存在本地,用户可以直接使用。
这个"执行-反馈-修正"的闭环,才是它最核心的能力,而不仅仅是"生成一段代码"那么简单。它模拟了一个人类程序员在调试代码时的思考过程:写代码→运行→看报错→改代码→再运行。
四、更进阶的玩法:不止是数据处理
这个叫AiPy的工具,其设计理念是"Code is Agent"------把代码当作可执行、可自愈的智能体。它不局限于处理DataFrame,还能做很多跨界的事:
场景1:控制本地系统操作
你可以直接发指令:"把桌面上那个'季度报告.pdf'打印出来,双面打印,用默认打印机。" 它能调用Python的win32api或subprocess去操作系统级的打印任务。
场景2:自动化网页数据采集
比如:"去国家统计局官网,找到2024年的进出口月度数据表格,下载下来,然后基于这些数据生成一个折线图,保存为PNG。" 它会调用selenium或requests做爬虫,再用matplotlib绘图,全程不需要你开浏览器去点。
场景3:结合多模态的内容生产
甚至有人用它结合大模型API做短视频自动化生产:让AI生图、用PIL和opencv-python把图片做成视频、再配上合成语音,一句话生成一条"AI科普一分钟"的短视频。
五、适用场景与注意事项
当然,这种自动化方案不是万能的。结合我的使用经验,它在以下场景中表现最好:
✅ 适合的场景:
-
探索性数据分析:不确定数据长什么样,需要快速探查和尝试各种分析方向。
-
一次性或低频任务:某个报表可能只用一次,不值得专门写脚本维护。
-
跨领域需求:你懂业务但不懂技术实现(比如想把Excel转成PPT图表)。
-
原型验证:快速验证某个业务想法的可行性,不需要考虑性能优化。
❌ 不太适合的场景:
-
高性能计算:处理亿级数据量时,AI生成的代码效率可能不如手工优化的SQL或PySpark。
-
复杂系统集成:涉及多个微服务、数据库事务、消息队列的场景,AI难以把控全局。
-
生产级定时任务:稳定性和可解释性要求极高,固定脚本+单元测试更可靠。
-
涉及敏感权限的操作:比如操作数据库删除语句、系统文件删除,AI的自动纠错机制可能带来风险。
六、总结与实践建议
通过这个Excel合并的案例,我想传达的核心观点是:
数据分析师的竞争力,正在从"会写代码"向"会定义问题"转移。
当AI可以自动写Python代码处理Excel的时候,人的价值体现在哪里?体现在你能否清晰地定义业务需求、能否识别数据质量问题、能否判断分析结果是否合理------这些是AI暂时还做不好的。
对于CSDN上的开发者朋友,我的具体建议是:
-
从低风险任务开始尝试:比如先让它处理一份不重要的测试数据,观察它的执行过程和产出质量,建立信任感。
-
学会写"好"的提示词:把需求描述得具体一点,把数据格式的坑提前告诉它,能大幅提高一次成功率。
-
永远保留人工复核环节:AI生成的合并报表,先抽查几个数据点确认无误再发给老板。
-
不要放弃学习基础知识:理解了pandas和sklearn的基本原理,才能看懂AI生成的代码、判断它是否有问题。
有兴趣的朋友可以去搜一下AiPy这个框架,GitHub上有完整的使用文档和示例库。从下周开始,试着把周五下午的合并报表任务交给它,然后早点下班。相信我,那种"看着AI替你干活"的体验,比你想象中要爽得多。