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

如何将pandas月度涨跌幅数据转换为年索引月列格式并绘制热力图

解决方案

1. 转换为年份为索引、月份为列的格式

你已计算得到的月度涨跌幅数据为DatetimeIndex索引的序列,直接提取索引的年份、月份维度后做宽表转换即可,示例代码如下:

# 假设你已计算得到的月度涨跌幅结果存储在变量 monthly_pct 中
# 提取年份、月份维度后unstack转宽表
pivot_df = monthly_pct.groupby([monthly_pct.index.year, monthly_pct.index.month]).first().unstack()
# 优化列名和索引名
pivot_df.columns = [f"{m}月" for m in pivot_df.columns]
pivot_df.index.name = "年份"
# 可选:删除全空的2009年数据(仅12月为NaN)
pivot_df = pivot_df.dropna(how="all")

转换后pivot_df就是你需要的以年份为行索引、月份为列的格式。

2. 绘制对应热力图

搭配seaborn库可以快速实现你需要的涨跌幅热力图效果,示例代码如下:

import matplotlib.pyplot as plt
import seaborn as sns

# 解决中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 设置画布尺寸
plt.figure(figsize=(12, 6))
# 绘制热力图,红黄绿配色对应涨跌,显示每个单元格数值
sns.heatmap(
    pivot_df,
    annot=True, # 显示单元格数值
    cmap="RdYlGn", # 红-黄-绿配色,适配涨跌场景
    center=0, # 0值对应配色中心
    fmt=".2f", # 数值保留两位小数
    cbar_kws={"label": "月度涨跌幅(%)"}
)
# 设置轴标签和标题
plt.title("历年月度涨跌幅热力图")
plt.xlabel("月份")
plt.ylabel("年份")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:21:01