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

如何使用Pandas的crosstab计算均值并绘制带图例的并列柱状图

解决方案

pd.crosstab 默认统计分组频数,要计算指定列的均值,只需传入values指定待聚合的score列,再用aggfunc指定聚合规则为均值即可,无需依赖groupby,具体实现分两种场景:

场景1:仅按lunch分组,输出N、Y对应的score均值柱

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("my file path")
# 生成crosstab计算分组均值
cross_tab = pd.crosstab(
    index=df["lunch"],
    columns="平均得分",
    values=df["score"],
    aggfunc="mean"
)
# 绘图,自动带图例
cross_tab.plot(kind="bar", figsize=(7, 2))
plt.ylabel("平均得分")
plt.show()

场景2:双维度分组生成交叉表,输出并列柱(如按setting+lunch分组)

符合你提到的「基于两列生成交叉表、并列柱状图」需求,每个setting对应lunch=N、lunch=Y两个并列柱:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("my file path")
cross_tab = pd.crosstab(
    index=df["setting"], # 行对应X轴的setting维度
    columns=df["lunch"], # 列对应分组维度,每个取值生成一个并列柱
    values=df["score"], # 指定要聚合的得分列
    aggfunc="mean" # 聚合规则为求均值
)
cross_tab.plot(kind="bar", figsize=(8, 3))
plt.ylabel("平均得分")
plt.show()

参数说明

  • index:交叉表的行,对应柱状图X轴的分类维度
  • columns:交叉表的列,对应柱状图的分组维度,每个不同取值生成一个独立柱子
  • values:指定要做聚合计算的字段,这里对应score列
  • aggfunc:聚合函数,填mean即为求均值,也可替换为sum/max等其他聚合规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:00:02