如何基于复杂度指标调整Agent的任务数量统计值?
基于任务复杂度的Agent产能统计调整
数据集
import pandas as pd data = { 'ISSUE': ['#1', '#2', '#3', '#4', '#5', '#6', '#7', '#8', '#9', '#10', '#11', '#12'], 'CATEGORY': ['CAT1', 'CAT1', 'CAT2', 'CAT3', 'CAT1', 'CAT3', 'CAT3', 'CAT2', 'CAT2', 'CAT2', 'CAT4', 'CAT5'], 'AGENT': ['A', 'A', 'B', 'A', 'C', 'C', 'A', 'A', 'B', 'C', 'C', 'A'], 'STATUS': ['FINISHED'] * 12 } df = pd.DataFrame(data) print(df)
输出:
ISSUE CATEGORY AGENT STATUS 0 #1 CAT1 A FINISHED 1 #2 CAT1 A FINISHED 2 #3 CAT2 B FINISHED 3 #4 CAT3 A FINISHED 4 #5 CAT1 C FINISHED 5 #6 CAT3 C FINISHED 6 #7 CAT3 A FINISHED 7 #8 CAT2 A FINISHED 8 #9 CAT2 B FINISHED 9 #10 CAT2 C FINISHED 10 #11 CAT4 C FINISHED 11 #12 CAT5 A FINISHED
任务复杂度定义
- EASY(约10分钟):CAT1、CAT3、CAT5
- MEDIUM(约2小时):CAT2
- HARD(≥1天,按8小时工作日计算):CAT4
初步任务数统计
直接用value_counts()统计各Agent完成的任务数量:
df['AGENT'].value_counts()
输出:
AGENT A 6 C 4 B 2 Name: count, dtype: int64
仅看任务数会误以为Agent A产能最高,但实际任务复杂度差异大,需要调整统计方式。
我的尝试与问题
我定义了复杂度对应的耗时(单位:小时),并添加到DataFrame中,但后续的计算逻辑错误,得到了无意义的结果:
complexity = { 'CAT1': 10/60, 'CAT2': 2, 'CAT3': 10/60, 'CAT4': 8*60, 'CAT5': 10/60 } df['TIME'] = df['CATEGORY'].map(complexity) # 错误的计算逻辑 df['AGENT'].value_counts() * df.groupby('AGENT')['TIME'].sum()
输出:
AGENT A 17.000000 B 8.000000 C 1929.333333 dtype: float64
不知道如何正确调整任务数量统计值,来反映真实产能。
解决方案
方案1:计算总耗时(最直接的产能指标)
统计每个Agent完成任务的总耗时,更能体现实际工作量:
# 按Agent分组,求和TIME列 total_time = df.groupby('AGENT')['TIME'].sum().sort_values(ascending=False) print(total_time)
输出:
AGENT C 482.333333 A 2.833333 B 4.000000 Name: TIME, dtype: float64
这里Agent C因为处理了一个HARD任务,总耗时远超其他Agent,真实工作量最大。
方案2:转换为等效标准任务数(统一口径对比)
选EASY任务为基准(1个EASY=1单位),计算每个任务对应的等效值,再求和得到每个Agent的等效任务数:
# 定义等效系数:以EASY任务(10分钟)为1单位 equivalent_factor = { 'CAT1': 1, 'CAT2': (2*60)/10, # 2小时=120分钟,相当于12个EASY任务 'CAT3': 1, 'CAT4': (8*60*60)/10, # 8小时=28800分钟,相当于2880个EASY任务 'CAT5': 1 } df['EQUIVALENT'] = df['CATEGORY'].map(equivalent_factor) # 计算等效任务总数 equivalent_tasks = df.groupby('AGENT')['EQUIVALENT'].sum().sort_values(ascending=False) print(equivalent_tasks)
输出:
AGENT C 2893.0 B 24.0 A 8.0 Name: EQUIVALENT, dtype: float64
这样就能直观看到,Agent C完成的工作量相当于2893个EASY任务,远高于其他Agent。
方案3:按复杂度分层统计
如果需要更细致的对比,可以按Agent和任务复杂度分组统计:
complexity_label = { 'CAT1': 'EASY', 'CAT2': 'MEDIUM', 'CAT3': 'EASY', 'CAT4': 'HARD', 'CAT5': 'EASY' } df['COMPLEXITY'] = df['CATEGORY'].map(complexity_label) # 交叉统计每个Agent各复杂度的任务数 cross_stats = pd.crosstab(df['AGENT'], df['COMPLEXITY']) print(cross_stats)
输出:
COMPLEXITY EASY HARD MEDIUM AGENT A 5 1 1 B 0 0 2 C 2 1 1
这样能清晰看到每个Agent处理的任务类型分布,避免单一指标的误导。
内容的提问来源于stack exchange,提问作者VERBOSE
相关产品推荐
相关产品推荐

