做运营、数据分析的小伙伴,一定遇到过这样的需求:统计一段时间内的投诉量变化,看看哪天投诉最多、哪个时间段投诉集中,为优化服务找方向。
但面对一堆杂乱的投诉数据(每条投诉一条记录,日期五花八门),手动统计不仅耗时,还容易出错。今天就给大家科普一个简单高效的方法——用Python的pandas库,快速搞定投诉量趋势统计,不用复杂编程基础,跟着做就能上手!
先给大家说个核心结论:统计投诉量趋势,本质就是「把杂乱的日期标准化,再按天/周/月汇总计数」,全程就靠两个核心工具,看完你就懂了。
一、先搞懂2个核心工具,不用死记硬背
我们不用深究复杂的技术原理,就记住两个“神器”,知道它们各自做什么就够了,小白也能快速上手。
1. 神器1:pd.to_datetime()——给日期“统一格式”
我们拿到的投诉数据,日期格式可能乱七八糟:有的是「2024-01-15」,有的是「2024/01/15」,还有的带时间「2024-01-15 10:30」。
这些杂乱的日期,电脑识别不了,没法统计。而这个工具的作用,就是把所有日期“统一打扮”成电脑能看懂的格式(比如统一变成「2024-01-15」),相当于给所有日期办了一张“身份证”。
✨ 关键提醒:不用管复杂参数,默认使用就好,遇到识别不了的日期,它会自动标记,不会影响整体统计。
2. 神器2:resample()——按需求“汇总计数”
日期统一后,我们就可以按自己的需求,把投诉量汇总起来了:比如想知道「每天」的投诉量、「每周」的投诉量,甚至「每月」的投诉量,这个工具都能一键搞定。
它就像一个“分类整理箱”,你告诉它按什么标准分类(天/周/月),它就会自动把相同时间段的投诉归到一起,然后数清楚每个时间段有多少条投诉。
给大家整理了最常用的“分类标准”,记好这几个字母就够了:
1.「D」= 按天统计(最常用,比如看每天投诉波动)
2.「W」= 按周统计(适合看长期趋势,避免单日波动干扰)
3.「M」= 按月统计(适合月度复盘、汇报使用)
3. 完整流程:3步搞定投诉量趋势
不用记复杂步骤,跟着这个流程走,不管多少数据都能快速处理:
1.导入投诉数据(Excel、CSV都可以);
2.用「pd.to_datetime()」统一日期格式;
3.用「resample()」按天/周/月汇总,统计投诉数量。
是不是很简单?接下来给大家看一个完整的实操例子,跟着敲代码就能出结果。
二、实操演示:5分钟搞定每日投诉量统计
假设我们有一份投诉数据,包含「投诉日期」和「投诉内容」两列(实际工作中,不管多复杂的数据,核心就这两列就够了)。我们以“统计每日投诉量”为例,一步步演示。
第一步:准备工具和数据
先导入需要的工具(pandas负责处理数据,matplotlib负责画趋势图),然后导入我们的投诉数据。这里用简单的模拟数据举例,实际替换成自己的Excel/CSV文件即可。
python import pandas as pd import matplotlib.pyplot as plt # 模拟投诉数据(实际工作中替换成 pd.read_csv("你的文件路径.csv") 即可) data = { 'date': ['2024-01-01', '2024-01-01', '2024-01-02', '2024-01-03', '2024-01-03', '2024-01-03', '2024-01-05', '2024-01-07'], 'content': ['服务差', '延迟发货', '质量差', '服务差', '价格问题', '退换货', '物流慢', '客服态度'] } df = pd.DataFrame(data) |
第二步:统一日期格式
一行代码,就能把杂乱的日期统一成电脑能识别的格式:
python df['date'] = pd.to_datetime(df['date']) |
第三步:按天汇总投诉量
把日期设为索引,然后用「resample('D')」按天统计,「size()」就是计数的意思,一行代码出结果:
python # 把日期设为索引(resample工具的要求) df.set_index('date', inplace=True) # 按天统计投诉量 daily_complaints = df.resample('D').size() |
第四步:查看结果+画趋势图
统计完成后,我们可以打印结果,也可以画一张折线图,直观看到投诉量的变化趋势:
python # 打印每日投诉量 print("每日投诉量:") print(daily_complaints) # 绘制趋势图(自动补齐缺失日期,趋势更直观) plt.figure(figsize=(10, 4)) plt.plot(daily_complaints.index, daily_complaints.values, marker='o', linestyle='-') plt.title('2024年1月每日投诉量趋势') plt.xlabel('日期') plt.ylabel('投诉数量') plt.grid(True) plt.xticks(rotation=45) plt.tight_layout() plt.show() |
最终效果
打印出来的每日投诉量是这样的(自动补齐没有投诉的日期,标记为0,方便观察):
text 每日投诉量: date 2024-01-012 2024-01-021 2024-01-033 2024-01-040 2024-01-051 2024-01-060 2024-01-071 Freq: D, dtype: int64 |
画出来的趋势图,能清晰看到1月3日投诉量最高(3条),1月4日、6日没有投诉,整体波动情况一目了然,汇报的时候直接用,非常方便。
三、进阶技巧:按周/月统计,应对不同需求
如果不想按天统计,想按周、按月汇总,只需要修改「resample()」里的字母即可,非常灵活:
python # 按周统计(周一为一周的开始) weekly_complaints = df.resample('W-MON').size() # 按月统计(适合月度复盘) monthly_complaints = df.resample('M').size() |
四、小白避坑提醒
1.日期格式不用愁:不管原始日期是「2024-01-15」还是「2024/01/15」,「pd.to_datetime()」都能自动识别,不用手动调整;
2.缺失日期自动补:用「resample('D').size()」会自动补齐所有日期,没有投诉的日期标记为0,趋势图更连续;
3.大数据也能扛:哪怕有几万、几十万条投诉数据,这套方法也能快速处理,比手动统计快100倍。
五、总结
其实统计投诉量趋势,根本不用复杂的编程技巧,核心就是「统一日期格式+按时间汇总计数」。
记住「pd.to_datetime()」和「resample()」这两个神器,再记住「D=天、W=周、M=月」,不管是投诉量统计,还是用户访问量、销售额的时间趋势统计,都能一键搞定。
下次再遇到统计时间趋势的需求,直接套用今天的方法,轻松高效完成,还能做出专业的趋势图,汇报、复盘都有面儿~
如果觉得有用,记得收藏转发,给需要的小伙伴哦!