pandas - 基于分组依据汇总(计算比率)总和与总计数的最佳方式(运行时)
问题描述
我正在尝试确定已批准的申请(由标志“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))
解决方案
我认为需要汇总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
推荐阅读
- javascript - 客户端对服务器的请求
- excel - 算法:找到两个差最小且乘积已知的正整数
- java - Java Lambda 风格
- python-2.7 - python多处理监听器关闭
- javascript - 使用 JavaScript 在网页上按顺序获取类名的一部分?
- c++ - 将带有 unique_ptr 的可变 lambda 传递给 const& std::function
- sql - 我可以将此光标和 while 循环转换为基于集合的解决方案吗?
- javascript - 全局变量没有作为参数传递给我的函数
- ios - 如何访问现有的数据库文件
- angular - 具有分组列的 PrimeNG 表不会排序