You need to enable JavaScript to run this app. 如何基于UCI Adult数据集计算不同种族的收入占比分布
优惠活动
大模型
产品
解决方案
定价
更多

如何基于UCI Adult数据集计算不同种族的收入占比分布

基于Adult数据集的种族维度收入占比统计方法

使用UCI机器学习仓库的Adult数据集开展分析的过程中,核心目标是计算race列各分类对应的>50k/<50k两类收入群体的占比,实现基于种族维度的收入比例合理呈现。

最初使用seaborn编写计数统计绘图代码,代码逻辑如下:

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

该代码生成的收入与种族计数统计图存在明显偏差:

  • 仅统计分组绝对样本量,未消除不同种族的总样本规模差异
  • 白人群体样本量远大于其他种族,图中仅能体现白人群体收入>50k的绝对人数更多,无法反映种族内部的收入结构比例差异
  • 小样本种族的比例特征会被掩盖:实际计算显示亚裔太平洋岛民的收入>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

其中income=0对应收入<50k,income=1对应收入>50k。

目标统计与可视化实现

最终通过行归一化交叉表统计方法,消除样本量差异的干扰,准确计算每个种族内的收入占比,实现代码如下:

# 按种族为行,行归一化计算每个种族内部各收入类别的占比
pivot = pd.crosstab(adults_full.race, adults_full.income, normalize="index")
# 按高收入占比升序排序,优化可视化展示顺序
pivot.sort_values(by = 1, inplace = True)
# 绘制堆叠占比条形图
pivot.plot.bar()

该方法生成的不同种族收入比例分布图,完全消除了不同种族总样本量差异的影响,可直观对比各类种族内部的收入结构差异,准确呈现亚裔太平洋岛民与白人群体高收入占比相近的真实特征,避免绝对计数带来的认知偏差。


内容的提问来源于stack exchange,提问作者Fabrice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 05:15:03