pd.crosstab如何实现分层计算百分比

img


想让表格展示按照Pclass分层显示各性别的生存死亡率,比如Pclass为0时,female的死亡率为3/144=0.0208

通过对数据框进行转换可以实现,参考代码如下:

import pandas as pd 
df=pd.read_csv('titanic_dataset.csv')
ct=pd.crosstab([df.Pclass,df.Survived],df.Sex)
ct=ct.rename_axis([None], axis=1).reset_index() 
mp=pd.pivot(ct,index='Pclass',values=['male','female'],columns='Survived')
mp.columns=mp.columns.droplevel()
mp.columns=['male_d','male_s','female_d','female_s']
mp['male_death_rate']=mp.male_d/mp.male_s
mp['female_death_rate']=mp.female_d/mp.female_s
mp = mp.rename_axis([None], axis=1).reset_index()
print(mp)

运行结果 :

Pclass  male_d  male_s  female_d  female_s  male_death_rate  female_death_rate
0       1      77      45         3        91         1.711111           0.032967 
1       2      91      17         6        70         5.352941           0.085714 
2       3     300      47        72        72         6.382979           1.000000 

如有启发和帮助,请点击采纳按钮。