首页 > 解决方案 > 基于分组依据汇总(计算比率)总和与总计数的最佳方式(运行时)

问题描述

我正在尝试确定已批准的申请(由标志“1”标识,如果不是,则为“0”)与每个人的总申请(Cust_ID)的比率。我通过下面的代码实现了这个逻辑,但计算 160 万条记录需要大约 10 分钟。是否有更快的执行相同操作的方法?

# Finding ratio of approved out of total applications
df_approved_ratio = df.groupby('Cust_ID').apply(lambda x:x['STATUS_Approved'].sum()/len(x))

标签: pandaspython-3.6calculation

解决方案


我认为需要汇总mean

df = pd.DataFrame({'STATUS_Approved':[0,1,0,0,1,1],
                   'Cust_ID':list('aaabbb')})

print (df)
   STATUS_Approved Cust_ID
0                0       a
1                1       a
2                0       a
3                0       b
4                1       b
5                1       b

df_approved_ratio = df.groupby('Cust_ID')['STATUS_Approved'].mean()
print (df_approved_ratio)
Cust_ID
a    0.333333
b    0.666667
Name: STATUS_Approved, dtype: float64

print (df.groupby('Cust_ID').apply(lambda x:x['STATUS_Approved'].sum()/len(x)))
Cust_ID
a    0.333333
b    0.666667
Name: STATUS_Approved, dtype: float64

推荐阅读