Python Pandas按TYPE分组绘制月度均值堆叠柱状图实现方法
问题原因
你现有代码的核心问题是未按TYPE字段分组计算月度均值,且计算结果没有转换为符合堆叠柱状图要求的宽表结构,因此无法正确绘图。
调整后的实现代码
import pandas as pd import matplotlib.pyplot as plt # 1. 预处理:日期格式转换+按日期升序排序 df['DATE'] = pd.to_datetime(df['DATE']) df = df.sort_values('DATE', ascending=True) # 2. 按月份+TYPE分组,计算VALUE的月度均值 df_monthly = df.groupby([pd.Grouper(key='DATE', freq='M'), 'TYPE'])['VALUE'].mean().reset_index() # 3. 转换为宽表:索引为月份,列名为TYPE,值为对应均值 df_pivot = df_monthly.pivot(index='DATE', columns='TYPE', values='VALUE').fillna(0) # 4. 绘制堆叠柱状图 df_pivot.plot(kind='bar', stacked=True, figsize=(10,6)) # 可选:优化x轴日期显示格式,避免显示全时间戳 plt.xticks(ticks=range(len(df_pivot.index)), labels=[x.strftime('%Y-%m') for x in df_pivot.index], rotation=45) plt.tight_layout() plt.show()
代码说明
- 先完成日期格式转换和日期排序,满足按日期升序处理的要求
- 分组计算时同时按月度时间粒度和
TYPE字段分组,得到每个月每个类型的均值 - 通过
pivot方法转换为宽表结构后,每一列对应一个TYPE的月度均值,直接调用绘图方法即可生成堆叠柱状图 - 补充了x轴日期格式化的可选代码,优化图表可读性
内容的提问来源于stack exchange,提问作者Pada1
相关产品推荐
相关产品推荐

