做产品、运维或客服的同学,是不是经常要处理几十上百条用户反馈?尤其是10MB左右的Excel文件,手动统计数据、计算指标,不仅耗时还容易出错。
今天给大家分享一个实用Python脚本,专门解决用户反馈Excel的分析需求,无需复杂操作,一键完成两大核心任务:计算平均token消耗 + 统计高频问题类型,新手也能直接上手!
先搞懂:这个脚本能帮你解决什么?
日常处理用户反馈Excel时,我们最关心两个问题:一是每次反馈的平均token消耗(尤其是对接AI反馈场景),二是用户最常反馈的问题类型(方便定位核心需求/故障)。
这个脚本就是为这两个需求量身打造的,核心优势:
1.适配10MB常见Excel(.xlsx/.xls),读取速度快(1-2秒完成);
2.自动适配多种列名(中英文、下划线都能识别),不用手动修改Excel;
3.自动清洗脏数据(空值、无效文本、空格都能过滤);
4.支持结果保存,可直接导出CSV用于汇报;
5.轻量级、自包含,修改文件路径就能直接运行。
一、脚本总体结构(极简看懂)
不用纠结复杂代码,脚本整体就3个部分,逻辑清晰到小白也能懂:
1.导入依赖:用到3个核心工具——pandas(处理Excel数据)、sys(处理异常)、collections.Counter(统计频数);
2.主函数:analyze_feedback(file_path, top_n),核心功能都在这里(读文件、算数据、输结果);
3.入口:指定Excel文件路径,调用主函数就能运行。
简单说:你只需要告诉脚本“Excel在哪里”,它就会自动完成所有分析,不用写额外代码。
二、核心功能拆解(附关键代码)
下面重点讲两个核心任务的实现逻辑,关键代码都标好了,可直接复制修改。
1. 读取Excel文件(基础一步)
首先要让脚本“读得懂”Excel,关键代码就1行:
python df = pd.read_excel(file_path, engine='openpyxl') |
补充两个实用细节,避免踩坑:
1.1如果你的Excel是旧版.xls格式,把engine改成xlrd(需要提前安装xlrd库);
1.2脚本自带异常捕获:如果文件不存在、路径写错,会自动提示并退出,不会报错卡死。
2. 计算平均token消耗(自动适配列名)
很多时候,不同Excel的token列名不一样(比如“token_usage”“token消耗”“token数量”),脚本不用手动修改,自动匹配常见列名。
第一步:列名自动适配
python token_candidates = ['token_usage', 'token消耗', 'token数量', 'tokens', 'token_used', 'token_count'] |
脚本会遍历这个列表,只要Excel中有其中一个列名,就会自动识别为token消耗列;如果都找不到,会提示你“没有匹配的列”,并列出所有可用列名,避免瞎找。
第二步:数据清洗+计算
Excel中难免有脏数据(比如“无效值”“N/A”),脚本会自动过滤,保证计算准确:
python # 把非数值转为空值,删除空值后计算平均值 df[token_col] = pd.to_numeric(df[token_col], errors='coerce') valid_tokens = df[token_col].dropna() average_token = valid_tokens.mean() |
举个例子:如果token列有150、200、“无效值”、180,脚本会自动忽略“无效值”,计算(150+200+180)/3 ≈ 176.67,不用手动删除脏数据。
3. 统计高频问题类型(输出占比,直接用)
和token列一样,脚本也能自动匹配问题类型列,统计每个类型的出现次数和占比,还能指定输出前N个高频类型。
列名适配(和token逻辑一致)
python issue_candidates = ['issue_type', '问题类型', 'category', '分类', 'type', '问题分类'] |
数据清洗+频数统计
python # 删除空值、空格,统计每个类型的次数 issues = df[issue_col].dropna().astype(str) issues = issues[issues.str.strip() != ''] counter = Counter(issues) # 取前N个高频类型(top_n可自定义) top_issues = counter.most_common(top_n) |
输出格式(直接用于汇报)
脚本会自动按排名输出,包含“问题类型+出现次数+占比”,比如:
1. 登录失败:2次(50%)
2. 页面卡顿:1次(25%)
3. 数据不同步:1次(25%)
4. 可选功能:结果保存为CSV
分析完成后,脚本会询问你“是否保存结果”,保存的内容包含:平均token消耗、高频问题类型及次数/占比,用encoding='utf-8-sig'保证中文正常显示,导出后可直接复制到汇报文档。
三、关键设计:为什么这个脚本好用?
很多同学自己写脚本会踩坑,这个脚本提前规避了常见问题,设计很贴心:
设计点 | 核心作用(避免踩坑) |
候选列名列表 | 适配业务中列名不统一的问题,不用手动修改Excel列名 |
pd.to_numeric(errors='coerce') | 防止脏数据导致脚本报错,自动过滤非数值内容 |
过滤空字符串/空格 | 避免把“空格”统计成一个问题类型,保证数据准确 |
Counter统计 | 灵活取前N个高频类型,还能自定义合并同类问题 |
交互式保存 | 避免自动覆盖文件,给用户选择权,更安全 |
四、运行示例(一看就会)
假设你的Excel数据长这样(简单4行,包含脏数据):
token_usage | 问题类型 |
150 | 登录失败 |
200 | 页面卡顿 |
无效值 | 登录失败 |
180 | 数据不同步 |
运行脚本后,输出结果如下(清晰直观):
1.平均token消耗:176.67(已过滤无效值)
2.高频问题类型(前3个):
2.1登录失败:2次(50.00%)
2.2页面卡顿:1次(25.00%)
2.3数据不同步:1次(25.00%)
五、根据实际文件调整(3步搞定)
每个人的Excel列名、需求可能不一样,只需简单3步调整,就能适配你的文件:
1.修改列名候选列表:如果你的token列叫“Token Used”,问题类型列叫“Category”,直接加入对应列表即可;
2.调整高频个数:想输出前20个高频问题,调用函数时写analyze_feedback(file, top_n=20);
3.自定义需求:
3.1合并同类问题:比如把“登录异常”“登录超时”都归为“登录失败”,添加代码issues = issues.replace({'登录异常':'登录失败', '登录超时':'登录失败'});
3.2用中位数代替均值:如果token数据偏差大(比如有极端值999999),把valid_tokens.mean()改成valid_tokens.median()。
六、避坑提醒(必看)
1.列名匹配大小写敏感:如果Excel列名是“Token_Usage”(首字母大写),候选列表里是“token_usage”,会匹配失败;建议把候选列表改成小写,再用df.columns.str.lower()统一匹配;
2.文件大小限制:10MB以内完全没问题,超过50MB建议用dask.dataframe分块读取;
3.异常值处理:如果token列有极端值,先运行valid_tokens.describe()查看数据分布,避免平均值失真。
最后总结
这个脚本不是复杂的项目,而是一个“拿来就用”的轻量级工具——不用懂复杂的Python语法,不用手动处理数据,修改文件路径就能一键完成用户反馈Excel的核心分析。
不管你是产品经理(统计用户反馈重点)、运维(定位高频故障),还是客服(整理用户诉求),这个脚本都能帮你节省大量时间,把精力放在更核心的工作上。
需要完整脚本的同学,可直接复制文中代码,按自己的Excel调整即可,运行无压力~