首页 > 解决方案 > Python:绘制数据框中每个组的百分比

问题描述

好吧,我有一个像这样的数据框:

在此处输入图像描述

'ca' 是一个范围从 0 到 4 的分类变量。我想绘制与每个 'ca' 值对应的患者的密度(百分比),并将它们与目标值分组。

我有一个可行的方法,但我认为必须有更优雅的解决方案。首先,我将所有数据按“ca”和“target”分组:

df_ca = df_cat.groupby(['ca','target']).count()

df_ca

在此处输入图像描述

然后,我将每个 'ca' 值的 'age' 列中的所有值相加,并将当前计数除以它以获得百分比值并删除所有其他列:

df_ca.iloc[0:2] /= df_ca.iloc[0:2].age.sum()
df_ca.iloc[2:4] /= df_ca.iloc[2:4].age.sum()
df_ca.iloc[4:6] /= df_ca.iloc[4:6].age.sum()
df_ca.iloc[6:8] /= df_ca.iloc[6:8].age.sum()
df_ca.iloc[8:10] /= df_ca.iloc[8:10].age.sum()
df_ca = df_ca.reset_index(level='target')
df_ca = df_ca[['age','target']]
df_ca.rename(columns={'age':'Ca_density'},inplace=True)
df_ca

在此处输入图像描述

之后,我要做的就是绘制到最终数据框:

在此处输入图像描述

我认为这有点混乱,我不确定如何才能更轻松地做到这一点。

标签: pythonpandasdataframedata-scienceseaborn

解决方案


推荐阅读