分组占比
背景:
求每个用户做题的通过率:先算出用户总的做题数量,再算出用户通过的做题数量。
pandas的groupby用法
## 总的数量
count_df = df.groupby('user_id')["if_pass"].count()
test_df = pd.DataFrame(count_df)
test_df = test_df.reset_index()
test_df = test_df.rename(columns={'if_pass':'all_num'}) ##生成数据框
## 通过数量
sum_df = df.groupby('user_id')["if_pass"].sum()
test_df_pass = pd.DataFrame(sum_df)
test_df_pass = test_df_pass.reset_index()
test_df_pass = test_df_pass.rename(columns={'if_pass':'pass_num'})
## 合并,相除得到分组咋办
test_df_all = pd.merge(test_df,test_df_pass,how='left',on=['user_id','user_id'])
test_df_all['pass_rate'] = test_df_all['pass_num']/test_df_all['all_num']
每个值占该列的比例:
df['Prices'] = df['Prices']/df['Prices'].sum()