python - 使用 for 循环和 group by 计算百分比
问题描述
如果我有以下带有循环的代码,它根据下面给出了输赢类型的比率,如果我想查看相同的数据但按教授分组,我将如何更改代码?
leads = ['Passed','Failed']
max_status = None
max_percent = None
for lead in leads:
df_overall = df[(df['Status']== lead) & (df['size']== '20-34')]
num_overall = len(df_overall)
lead_df = df[(df['size']== '20-34')]
num_total = len(lead_df)
percentage_overall = num_overall / num_total
if max_status is None:
print(lead, percentage_overall)
这给了我如下输出:
Passed .65
Failed .35
我想编辑按教授分组的代码,因为它们也是我数据框中的教授列。
预期输出:
Mr. Johnson Passed .35
Mr. Johnson Failed .65
Ms. Jones Passed .90
Ms. Jones Failed .10
Mr. Boe Passed .80
Mr. Boe Passed .20
谢谢
解决方案
我相信你需要GroupBy.size
:
leads = ['Passed','Failed']
lead_df = df[(df['size']== '20-34')]
#filter by list leads
df_overall = lead_df[lead_df['Status'].isin(lead)]
num_overall1 = df_overall.groupby(['professor','Status']).size()
num_total1 = lead_df.groupby(['professor','Status']).size()
out = num_overall1.div(num_total1).reset_index(name='per')
print (out)
推荐阅读
- python - 从 Microsoft 的 Xbox Api 获取用户的个人资料
- selenium - 带有硒测试容器的junit5无法正常工作
- angular - 错误:必须从注入上下文茉莉单元测试中调用注入()
- google-sheets - 多少个细胞变成了一个细胞?(谷歌表格)
- angular - 我在我的 Angular 应用程序的浏览器中看不到任何路径
- azure - 在存在扩展时重置 Azure VM 规模集上的密码
- r - R中基于时间序列和组的数据分区
- vb.net - 饼图中的标签重叠
- c# - Chrome selenium 更改配置文件和下载目录
- visual-studio-code - 打开时 VS Code 空白屏幕