You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pandas绘制按性别分组的班级人数分组柱状图

实现步骤

你要做的核心是把原始的长表结构,转换成和你参考的示例一致的宽表结构:行索引对应横轴的性别分组,列对应分组内的A、B班,值为对应人数,之后直接复用plot.bar逻辑即可。

完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt

# 构造你给出的原始数据集
raw_df = pd.DataFrame({
    'gender': ['male', 'female', 'male', 'female', 'male', 'female'],
    'class': ['A', 'A', 'B', 'B', 'B', 'A']
})

# 统计每个性别下A、B班的人数,转为符合绘图要求的宽表
# groupby按性别+班级分组计数,unstack把班级从行维度转为列名,fill_value=0避免空值报错
count_df = raw_df.groupby(['gender', 'class']).size().unstack(fill_value=0)

# 绘制分组柱状图,rot=0表示x轴标签不旋转
ax = count_df.plot.bar(rot=0)
# 可选:补充图表标注优化可读性
ax.set_title('各性别班级人数分布')
ax.set_xlabel('性别')
ax.set_ylabel('人数')
# 显示图表
plt.show()

转换后的数据结构说明

聚合后的count_df结构如下,和你参考的示例数据结构完全对齐:

class   A  B
gender      
female  2  1
male    1  2

其中行索引gender就是横轴的分组项,列A、B就是每个分组下的两个柱子,值就是柱子对应的人数,直接调用plot.bar即可得到你要的按性别分组的双柱状图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:30:01