首页 > 解决方案 > 如何根据另一个特征计算一个特征类别的比例分布

问题描述

我正在使用 UCI 存储库中的成人数据集,我希望计算种族列中每个不同类别的收入 >50k 或 <50k 的比例。

所以基本上我所追求的是基于种族的收入比例的适当表示。如果您只考虑每场比赛的人数,这是有偏差的:

ax = sns.countplot(x=adults_full['income'], hue=adults_full['race'], palette="pastel")
ax.set_xticklabels(['<50k', '>50k'])
ax.set_title('Income vs Race')

在此处输入图像描述

在这里,它表明大多数白人的收入超过 5 万,只是因为数据集中的人更多。

实际上,按比例,“亚太岛民”的收入比例与“白人”相比 > 50k,但在这里几乎没有代表,我不知道该怎么做(我是菜鸟)

print(adults_full['race'].value_counts())
adults_full[['race', 'income']].value_counts()

White                 38903
Asian-Pac-Islander     1303

race                income
White               0         28696
                    1         10207
Asian-Pac-Islander  0           934
                    1           369

其中 0 为 <50k,1 为 >50k

更新:

感谢下面的评论,我能够使用以下方法获得我的结果:

pivot = pd.crosstab(adults_full.race, adults_full.income, normalize='index')
pivot.sort_values(by = 1, inplace = True)
pivot.plot.bar()

在此处输入图像描述

标签: pythonpandasdistribution

解决方案


推荐阅读