python - 如何从时间戳创建每小时/天的seaborn热图,每小时有多个数据点

标签 python matplotlib seaborn

我有一个带有 date 的数据框列是 timestamp .一天中每小时有多个数据点,例如 2014-1-1 13:10, 2014-1-1 13:20等。我想对特定日期同一小时的数据点进行分组,然后使用 seaborn 创建热图并绘制不同的列。
我曾尝试使用 groupby但我不确定如何指定我想要 hourday

date             data
2014-1-1 13:10  50
2014-1-1 13:20  51
2014-1-1 13:30  51
2014-1-1 13:40  56
2014-1-1 13:50  67
2014-1-1 14:00  43
2014-1-1 14:10  78
2014-1-1 14:20  45
2014-1-1 14:30  58 
我想按平均值组合数据

最佳答案

您可以使用 dt.strftime('%H')获取小时数,以及 dt.strftime('%Y-%m-%D')dt.normalize()那些日子

sns.heatmap(df.groupby([df.date.dt.normalize(), df.date.dt.strftime('%H:00')])
   ['data'].mean()
   .rename_axis(index=['day','hour'])
   .unstack(level=0)
)
输出:
enter image description here

更新 :对于这几周,我们可以使用类似的方法
s = (df.groupby([df.date.dt.isocalendar().week,
                 df.date.dt.strftime('%Y-%m-%d'), 
                 df.date.dt.strftime('%H:00')])
       ['data'].mean()
       .rename_axis(index=['week','day','hour'])
    )

fig, axes = plt.subplots(2,2, figsize=(10,10))
for w, ax in zip(s.index.unique('week'), axes.ravel()):
    sns.heatmap(s.loc[w].unstack(level='day'), ax=ax)
    ax.set_title(f'Week {w}')
输出:
enter image description here

关于python - 如何从时间戳创建每小时/天的seaborn热图,每小时有多个数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64382010/

相关文章:

python - Seaborn FacetGrid 图例在更改线宽时丢失线型细节

python - Python 中的数据可用性图表

python - 如何找到给定值将被另一个系列达到/交叉的索引?

python - 如何将一个 float 元组写入文件空间,只用一次调用在 python 中写入?

python - 我们应该如何使用 pad_sequences 在 keras 中填充文本序列?

python - 如何使用 seaborn 在同一张图上绘制两个 fiddle 图系列?

python - 如何修复我的 python 代码来绘制图形?

python - 增加 seaborn 中的刻度标签字体大小

Python:将 2 个整数转换为 32 个 float

python - AxesGrid 与 imshow : do plots have to have the same extent?