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

如何将Pandas数据转换为7×24数组并基于plt.imshow()绘制热力图

从DataFrame统计到热力图生成步骤

1. 统计同一天同一小时的访问次数

通过Pandas的分组功能,直接从原始数据生成带访问次数的DataFrame:

import pandas as pd

# 原始访问数据
visits = [
   (1,13),
   (2,1),
   (1,13),
   (1,13),
   (2,18),
   (5,3),
   (6,1),
   (5,3),
   (1,2),
   (2,16),
   (2,16),
   (2,18),
   (4,7)
]
visits_df = pd.DataFrame(visits, columns=['day','hour'])

# 分组统计访问次数
count_df = visits_df.groupby(['day', 'hour']).size().reset_index(name='count')

groupby(['day','hour'])将数据按日期和小时分组,size()统计每组的记录数(即访问次数),reset_index()把分组索引转为普通列,name='count'指定计数列的名称,最终得到的count_df和你预期的expected_df结构完全一致。

2. 生成7×24的热力图数组

创建一个7行(对应一周7天)、24列(对应一天24小时)的全0数组,再将统计结果填充到对应位置:

import numpy as np

# 初始化7×24的全0数组
heatmap_array = np.zeros((7, 24), dtype=int)

# 遍历统计结果填充数组
for _, row in count_df.iterrows():
    # 数组索引从0开始,日期和小时需减1转换为索引
    day_idx = row['day'] - 1
    hour_idx = row['hour'] - 1
    heatmap_array[day_idx, hour_idx] = row['count']

3. 使用plt.imshow绘制热力图

用Matplotlib绘制热力图,并添加必要的标签提升可读性:

import matplotlib.pyplot as plt

# 绘制热力图,选择合适的配色方案
plt.imshow(heatmap_array, cmap='YlOrRd', aspect='auto')

# 添加颜色条和轴标签
plt.colorbar(label='访问次数')
plt.yticks(ticks=np.arange(7), labels=['Day1', 'Day2', 'Day3', 'Day4', 'Day5', 'Day6', 'Day7'])
plt.xticks(ticks=np.arange(24), labels=[str(h+1) for h in range(24)])
plt.xlabel('小时')
plt.ylabel('星期')
plt.title('每日各时段访问热力图')

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:15:44