如何使用Python计算客服(Agent)的平均响应延迟?
用Python计算客服平均响应延迟
先明确需求和数据:
给定对话时序数据:
| 时间 | 参与者 |
|---|---|
| 2023-01-17 15:13:23 | 客户 |
| 2023-01-17 15:14:00 | 客户 |
| 2023-01-17 15:16:16 | 客户 |
| 2023-01-17 15:16:18 | 客服 |
| 2023-01-17 15:16:28 | 客户 |
| 2023-01-17 15:16:34 | 客服 |
| 2023-01-17 15:17:23 | 客户 |
| 2023-01-17 15:18:07 | 客服 |
计算逻辑:忽略连续的客户消息,只取客户最后一条消息到客服首次回复的时间差,最后求这些时间差的平均值。示例中有效延迟为2秒、6秒、44秒,平均17.3秒。
实现步骤
用pandas处理这类时序数据最便捷,步骤如下:
- 导入依赖并构造数据
- 转换时间格式为datetime类型
- 遍历数据提取有效响应时间差
- 计算平均值
完整代码
import pandas as pd # 构造对话数据 data = [ ["2023-01-17 15:13:23", "客户"], ["2023-01-17 15:14:00", "客户"], ["2023-01-17 15:16:16", "客户"], ["2023-01-17 15:16:18", "客服"], ["2023-01-17 15:16:28", "客户"], ["2023-01-17 15:16:34", "客服"], ["2023-01-17 15:17:23", "客户"], ["2023-01-17 15:18:07", "客服"], ] df = pd.DataFrame(data, columns=["时间", "参与者"]) # 转换时间列为datetime类型,方便计算时间差 df["时间"] = pd.to_datetime(df["时间"]) response_delays = [] last_customer_time = None # 遍历每条消息,筛选有效响应延迟 for _, row in df.iterrows(): if row["参与者"] == "客户": # 连续客户消息只保留最后一条的时间 last_customer_time = row["时间"] else: # 遇到客服回复时,若有未匹配的客户消息则计算时间差 if last_customer_time is not None: delay = (row["时间"] - last_customer_time).total_seconds() response_delays.append(delay) # 重置标记,避免同一客户消息被重复匹配 last_customer_time = None # 计算并输出平均响应延迟 if response_delays: avg_delay = sum(response_delays) / len(response_delays) print(f"客服平均响应延迟:{avg_delay:.1f}秒") else: print("没有有效响应数据")
代码说明
- 连续的客户消息只会保留最后一条的时间,避免重复计算无效延迟
- 每匹配到一次客服回复,就将对应时间差存入列表并重置客户消息标记,确保一个客户消息只对应一次首次回复
- 最后计算列表中时间差的平均值,保留一位小数
运行代码后会输出:客服平均响应延迟:17.3秒,与示例结果一致。
内容的提问来源于stack exchange,提问作者Hey_jude
相关产品推荐
相关产品推荐

