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

Pandas使用groupby分组求和后如何绘制用途对应总消费金额柱状图?

  • 你当前代码中的udp1()是非法调用,DataFrame实例不是可执行函数,直接输入udp1即可预览统计结果。
  • 分组求和后如果未将索引重置为普通列,绘图时可能出现x轴取值异常的问题,建议调整分组写法简化后续操作。

正确实现步骤

1. 生成分组统计DataFrame

优先用as_index=False参数,直接将分组字段PURPOSE转为普通列,避免后续索引处理问题:

# 按用途分组统计总消费金额,直接生成带PURPOSE列的DataFrame
udp1 = udp.groupby("PURPOSE", as_index=False)["MONEYSPENT"].sum()

如果你要保留原有写法,也可以后续手动重置索引:

# 原有写法基础上重置索引,把PURPOSE从索引转为普通列
udp1 = udp.groupby("PURPOSE")["MONEYSPENT"].sum().reset_index()

2. 绘制柱状图

依赖matplotlib实现绘图,pandas内置的plot方法可以直接调用:

import matplotlib.pyplot as plt

# 绘制柱状图,指定x、y轴字段
udp1.plot(kind="bar", x="PURPOSE", y="MONEYSPENT", title="不同用途总消费金额对比")

# 调整x轴标签旋转角度,避免文字重叠
plt.xticks(rotation=45, ha="right")
# 自定义y轴标签
plt.ylabel("总消费金额")
# 紧凑布局,避免标签被截断
plt.tight_layout()
# 展示图表
plt.show()

如果是未重置索引的分组结果(即PURPOSE为索引的情况),可以简化写法直接绘图:

# 针对PURPOSE为索引的udp1
udp1.plot(kind="bar", y="MONEYSPENT", title="不同用途总消费金额对比")
plt.xticks(rotation=45, ha="right")
plt.ylabel("总消费金额")
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:54:01