前言最近做项目需要统计分析哪些不合规按照项目情况分析治理其实经常是Excel填一下然后填个时间之类的也没有做一个平台数据库存储自动筛选生成报表这样每次都要对Excel进行统计分析然后才生成报表为了提升效率写个代码自动分析生成报表数据其实也可以自动生成报表图只是代码写的比较多。准备分析一般业界使用python处理报表并不是性能强而是各种数据统计库比较齐全代码编写少所以还是使用python吧毕竟AI训练使用的github上python代码居多使用最广泛的语言。做个报表而已又不是什么关键大并发的业务AI完全自动生成就行有问题调试一下完美的vibe coding场景。笔者使用opencodeGLM模型。demo先安装pandas的包AI推荐使用pandas笔者以前很少使用python这个包没用过安装pip3 install默认从国外官网仓库使用国内镜像加速准备阶段# 设置全局镜像源以清华大学源为例pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepip3 config set global.trusted-host pypi.tuna.tsinghua.edu.cnpip3 install pandasAI使用的命令是pip但是实际上应该使用pip3因为Python迭代到3版本为了跟Python2版本区分加了3的大版本然后通过AI提示写代码其实也可以写skills通过opencode写代码cli非常nice。但是我既然skills都了然了目标非常明确直接需求让AI写代码片段不就好了自己拼接一下避免写伪代码毕竟笔者的场景就使用那么几回。简单统计列名其实就是表格的第一行命名。从语法看类似SQLimport pandas as pd def deal_xlsx(filename): # 读取Excel贼简单比Java代码简洁太多了读取文件后是一个DataFrame还可以对这个进行筛选不影响原表格数据 res_26 pd.read_excel(filename, sheet_namesheet1).query(列计划 2026年计划) # group count 聚合函数也可以使用去重函数计数 nunique() # 统计结果是Series可以for遍历 # res_count res_26.groupby(列分类组)[列1].nunique() res_count res_26.groupby(列分类组)[列1].count() print(res_count) def aggregate_xlsx(filename_1, filename_2): # print() if __name__ __main__: deal_xlsx(/Users/huahua/Downloads/demo.xlsx)先筛选分组统计计数吧其实Excel也很方便但是Excel打印数据不方便笔者本地未安装Excel用系统自带的演示自带Excel其实使用还好但是不方便使用微软的一系列能力然后运行这个简单Conda可以安装非Python的代码包比如CPython一般而言pip3即可pip3 install openpyxl再次运行这样就筛选了26年计划的分组统计如果需要其他维度的更多统计可以进行迭代这个分组且可以查询出具体的内容比如我需要统计结束日期大于今天的分组和统计# 先转时间 res_26[列日期开始] pd.to_datetime(res_26[列日期开始], errorscoerce) res_26[列日期结束] pd.to_datetime(res_26[列日期结束], errorscoerce) now datetime.now() for key,val in res_count.items(): not_exec_num res_26.query(列分类组 key and 列日期结束 now)[列1].nunique() print(key, val, not_exec_num)执行一下完美可以根据实际情况进行处理让AI生成代码片段自己组装逻辑其实也可以使用嵌套的方式筛选# 读取Excel贼简单比Java代码简洁太多了读取文件后是一个DataFrame还可以对这个进行筛选不影响原表格数据 res_26 pd.read_excel(filename, sheet_namesheet1)#.query(列计划 2026年计划) res_26 res_26[res_26[列计划] 2026年计划]嵌套的条件可以支持多条件判断结果一样。如果需要打印某一列可以使用列名取数tolist()函数打印打印的风格代码随意组装。多维度统计其实上面的统计只有一个分组的聚合函数如果需要多维度的聚合pd_data pd.read_excel(filename, sheet1) result pd_data.groupby(聚合分组的字段).agg( A聚合函数的结果标签(聚合函数字段A, 函数名比如count), B聚合函数的结果标签(聚合函数字段B, 函数名比如min), ).reset_index() print(result)多字段聚合处理类似SQL的group by having当然可以支持多聚合函数。多表格合并看一个重要的逻辑如果需要多表格合并则需要mergedef aggregate_xlsx(filename_1, filename_2): #读取2个Excel res_l pd.read_excel(filename_1, sheet_namesheet1) res_r pd.read_excel(filename_2, sheet_namesheet1) # 合并一般为内连接或者左连接SQL语法以左连接为例 res pd.merge(res_l, res_r, on列1, howleft) res.to_excel(xxx.xlsx, indexFalse) print(res)然后发起调用这样得到的就是最终合并的结果xlsx其实就是SQL的join总结其实如果笔者自己搜索引擎查询也可以实现查看选型然后查看pandas api说明根据笔者的需求实现统计功能毕竟比Excel的统计效率高太多了以后每次可以用统计内容稍微改一下代码可以长期使用当然也可以通过opencode的skills实现从0到完成但是其实也是写代码。Python真少代码包已经封装超级完善尤其是工具的调用随然也可以面向对象但是比Java代码少了不知道多少倍尤其适用AI的实现代码少github开源多而且3.14.x之前还是gil多线程并发就相对麻烦很多。