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

如何用Seaborn绘制以年份为X轴、AveragePrice年度总和为Y轴的柱状图?

解决Seaborn柱状图按年份求和的问题

嘿,你这是踩了Seaborn barplot参数匹配的小坑啦!直接把原数据的avo_sales.year和分组求和的结果传进去会出错,因为原数据的year列是每条记录的年份(长度很长),而分组求和后只有对应每个年份的一个数值(长度很短),两者长度不匹配,Seaborn没法正确对应X轴和Y轴的数据。

给你两种靠谱的解决思路:

思路一:先手动聚合数据再绘图

先对原数据按年份分组求和,生成一个结构简洁的新DataFrame,再用这个新数据绘图:

# 先分组聚合,用reset_index把year从索引转成列
yearly_avg_price_sum = avo_sales.groupby(['year'])['AveragePrice'].sum().reset_index()

# 用新的DataFrame绘图
import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(8, 5))
ax = sns.barplot(data=yearly_avg_price_sum, x='year', y='AveragePrice')
ax.set_title('Total AveragePrice by Year')
ax.set_ylabel('Total AveragePrice')
plt.show()

这样新的DataFrame里每一行对应一个年份和它的总AveragePrice,Seaborn能完美匹配X/Y轴的数据。

思路二:让Seaborn自动帮你聚合

其实Seaborn的barplot自带统计功能,你可以直接指定estimator参数为sum,让它自动按X轴的年份分组求和:

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(8, 5))
ax = sns.barplot(data=avo_sales, x='year', y='AveragePrice', estimator=sum)
ax.set_title('Total AveragePrice by Year')
ax.set_ylabel('Total AveragePrice')
plt.show()

这种方法更简洁,不需要手动处理数据,适合只需要快速绘图的场景。

两种方法都能解决你的问题,选哪种就看你有没有后续需要用到聚合后数据的需求啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:52:47