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

如何基于含重复模式的DataFrame按月小时聚合中位数绘制热力图

实现方法

1. 数据预处理

先把字符串格式的日期列转为pandas时间类型,提取月份作为分组维度:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 按原始数据的月/日/年格式解析日期
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y')
# 提取月份字段
df['month'] = df['date'].dt.month

2. 聚合计算中位数

按小时、月份两个维度分组,计算每组value的中位数,再转为热力图需要的二维宽表结构:

# 分组聚合后转换结构:行索引为小时,列索引为月份,值为对应中位数
heatmap_data = df.groupby(['hour', 'month'])['value'].median().unstack()

若存在月份和小时的组合无数据,可在unstack()后追加.fillna(0)补全缺失值,避免热力图出现空白。

3. 绘制热力图

基于聚合完成的二维表直接绘图,按要求设置坐标轴标签即可:

plt.figure(figsize=(12, 8))
sns.heatmap(heatmap_data, cmap='viridis')
plt.xlabel('月份')
plt.ylabel('日内小时序号')
plt.title('各月逐小时value中位数热力图')
plt.show()

注意事项

  • 若需要调整坐标轴排序,可在聚合后通过reindex方法手动指定月份、小时的排列顺序。
  • 热力图配色可通过修改cmap参数自定义,常用可选值包括coolwarm、YlGnBu、RdYlGn等。
  • 如果需要在热力格中显示具体数值,可在sns.heatmap中传入参数annot=True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:33:17