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

pandas如何对年月数据排序以实现时间序列可视化?

问题排查与解决方案

你代码的核心问题是排序字段顺序和分组字段顺序不匹配,具体错误点如下:

  • 你对数据集排序时用的字段顺序是['Year','Month'],先按年份升序、同一年再按月份升序排列,但后续groupby分组时用的字段顺序是['Month','Year'],会优先按月份维度聚合,导致所有年份的1月数据排最前、之后是所有年份的2月,完全打乱了时间递增的顺序,这就是绘图结果x轴顺序混乱的核心原因。
  • 附加问题:分组后得到的是月份+年份的多层索引,直接绘图的x轴标签会显示为元组格式,可读性较差。

修正代码

#plot data
fig, ax = plt.subplots(figsize=(25,17))

plt.ylabel('No of tweets', fontsize=12)
plt.title('Number of tweets', fontsize = 20)
# 调整groupby顺序和排序逻辑一致,加sort=False避免groupby默认重排打乱顺序
data.sort_values(by = ['Year','Month'], ascending=[True,True])\
    .groupby(['Year','Month'], sort=False).count()['text']\
    .plot(ax=ax)

# 可选优化:提前生成年月字符串让x轴标签更可读,替换上面的统计逻辑即可
# data['year_month'] = data.apply(lambda x: f"{x['Year']}-{x['Month']:02d}", axis=1)
# data.sort_values(by=['Year','Month']).groupby('year_month', sort=False).count()['text'].plot(ax=ax)

plt.xlabel('Month-Year', fontsize=12)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:39:05