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

如何用Python绘制需从原始数据计算统计量的分年龄情绪分组柱状图

解决方案

你可以借助pandas完成数据统计,再结合matplotlib绘图,无需提前在CSV中预生成统计列,具体步骤如下:

1. 安装依赖

如果还没安装对应的库,执行以下命令安装:
pip install pandas matplotlib

2. 读取并统计数据

使用pandas的交叉表功能可以直接按「年龄+情绪」两个维度自动统计对应人数:

import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV文件,替换为你自己的文件路径
df = pd.read_csv("survey.csv")

# 生成年龄为行、情绪类型为列的人数统计结果
count_df = pd.crosstab(index=df["Age"], columns=df["Mood level"])

# 可选:补全0-100全量年龄,无受访者的年龄对应人数填充为0
count_df = count_df.reindex(range(0, 101), fill_value=0)

# 重命名列,方便后续图例显示
count_df = count_df.rename(columns={
    0: "开心",
    1: "一般",
    2: "难过"
})

3. 绘制分组柱状图

直接基于统计完成的DataFrame绘图即可,自动实现每个年龄对应3根柱子的效果:

# 设置画布尺寸
plt.figure(figsize=(18, 6))

# 绘制分组柱状图
count_df.plot(kind="bar", width=0.7, ax=plt.gca())

# 优化图表显示
plt.xlabel("年龄", fontsize=12)
plt.ylabel("人数", fontsize=12)
plt.title("各年龄人群情绪分布统计", fontsize=14)
# 调整X轴刻度,每5岁显示一个,避免标签重叠
plt.xticks(ticks=range(0, 101, 5), labels=range(0, 101, 5), rotation=0)
plt.legend(title="情绪类型")
# 自动调整布局避免内容被截断
plt.tight_layout()

plt.show()

如果不需要展示无受访者的年龄,删除reindex那一行代码即可,X轴会自动仅显示有数据的年龄。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:04