如何用Python按年份统计订单总数并绘制柱状图?
解决方案:按年份统计订单总数并绘制柱状图
核心思路
你需要先通过分组统计得到每年的订单数量,再用柱状图可视化结果。以下是具体实现步骤和代码:
完整代码示例
import pandas as pd import matplotlib.pyplot as plt # 读取数据 mydata = pd.read_csv('/sales_data.csv') # 按年份分组,统计订单总数(若ORDERNUMBER无重复,用size()更高效) yearly_order_count = mydata.groupby('YEAR_ID')['ORDERNUMBER'].nunique().reset_index(name='订单总数') # 绘制柱状图 plt.bar(yearly_order_count['YEAR_ID'], yearly_order_count['订单总数'], color='#3498db') # 添加图表元素,提升可读性 plt.xlabel('年份') plt.ylabel('订单总数') plt.title('各年度订单数量统计') # 可选:给每个柱子添加数值标签 for idx, val in enumerate(yearly_order_count['订单总数']): plt.text(yearly_order_count['YEAR_ID'].iloc[idx], val + 10, str(val), ha='center') # 显示图表 plt.show()
关键代码说明
分组统计逻辑
groupby('YEAR_ID'):按年份对数据分组['ORDERNUMBER'].nunique():统计每组中唯一订单编号的数量(避免重复订单被多次计数);如果你的数据里每个ORDERNUMBER对应唯一订单,直接用mydata.groupby('YEAR_ID').size().reset_index(name='订单总数')更高效
绘图优化
- 用
plt.bar()生成柱状图(区别于你原代码的直方图hist(),直方图用于展示数值分布,柱状图才适合展示分类数据的统计结果) - 添加数值标签可以让读者直接看到每个年份的具体订单数,无需估算
- 用
内容的提问来源于stack exchange,提问作者Nathan D
相关产品推荐
相关产品推荐

