Pandas 熊猫分组召回
我有一个如下所示的数据帧Pandas 熊猫分组召回,pandas,pandas-groupby,Pandas,Pandas Groupby,我有一个如下所示的数据帧 Category Actual Predicted 1 1 1 1 0 1 1 0 0 1 0 0 2 1 1 2 1 0 2 0 0 2
Category Actual Predicted
1 1 1
1 0 1
1 0 0
1 0 0
2 1 1
2 1 0
2 0 0
2 0 1
3 1 1
3 0 1
3 0 0
3 0 1
根据以上内容,我想计算每一类别1、2和3的召回率,如下所示
Category Actual Predicted
1 1 1
1 0 1
1 0 0
1 0 0
2 1 1
2 1 0
2 0 0
2 0 1
3 1 1
3 0 1
3 0 0
3 0 1
预期产出:
Category Recall_for Recall
1 0 66.7
1 1 100
2 0 50
2 1 50
3 0 33.3
3 1 100
说明:
对于category=1,Actual=1,有1种情况是true(与预测匹配),所以recall=1/1*100=100
对于category=1,Actual=0,有3种情况,只有2种情况是真的(与预测相匹配),所以recall=2/3*100=66.7,依此类推。比较两列,设置新列,然后聚合平均值(true
s处理方式与1
)并在必要时计算最后的倍数和舍入值:
s = df['Predicted'].eq(df['Actual'])
df = (df.assign(Recall=s)
.groupby(['Category','Actual'])['Recall']
.mean()
.mul(100)
.round(1)
.reset_index()
.rename(columns={'Actual':'Recall_for'}))
print (df)
Category Recall_for Recall
0 1 0 66.7
1 1 1 100.0
2 2 0 50.0
3 2 1 50.0
4 3 0 33.3
5 3 1 100.0