如何用Python高效抽取特定Team Leader下属Agent的BPO呼叫审核样本及编写批量抽样函数
高效抽取特定Team Leader下属Agent的呼叫审核样本(Python实现)
核心思路
针对你手动逐个处理Agent的冗余代码问题,我们可以利用pandas的分组功能+Agent-Team Leader映射表,一次性完成所有Agent的样本抽取,并按Team Leader归类,彻底消除重复代码。
前提准备
首先需要维护一份Agent与Team Leader的映射关系,可以是字典(手动定义)或从Excel/CSV文件读取,示例如下:
# Agent-Team Leader映射表,可根据实际情况扩展 agent_tl_map = { "Mausam Kumari": "Ajay", "Vivek K": "Ajay", # 补充剩余198名Agent的映射关系 }
实现函数
下面是封装好的抽取函数,支持自定义每个Agent的样本数量,自动处理样本不足的情况:
import pandas as pd def extract_audit_samples(call_records_df, agent_tl_map, samples_per_agent=2): # 按Agent分组,每组抽取指定数量样本(样本不足时取全部) sampled_df = call_records_df.groupby("Emp_name").apply( lambda x: x.sample(n=min(samples_per_agent, len(x)), random_state=42) ).reset_index(drop=True) # 给样本关联对应的Team Leader sampled_df["Team_Leader"] = sampled_df["Emp_name"].map(agent_tl_map) # 按Team Leader分组,返回以TL名为键的样本字典 tl_samples = {tl: group for tl, group in sampled_df.groupby("Team_Leader")} return tl_samples
使用示例
假设你的所有呼叫记录存储在df_all_calls中,调用函数后即可直接获取每个Team Leader的审核样本:
# 生成所有Team Leader的样本集合 tl_audit_samples = extract_audit_samples(df_all_calls, agent_tl_map) # 获取Ajay下属的所有Agent审核样本 df_Ajay_samples = tl_audit_samples["Ajay"] # 查看样本内容 print(df_Ajay_samples)
关键优势
- 避免重复代码:无需为每个Agent编写单独的
try-except块,一次性处理200名Agent - 可维护性强:Agent与TL的映射统一管理,新增/修改Agent信息只需更新映射表
- 异常处理:自动处理Agent呼叫记录不足2条的情况,不会抛出错误
- 可追溯性:
random_state参数保证每次抽取的样本一致,适合审核场景的合规需求
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

