我有一个带有 date
的数据框列是 timestamp
.一天中每小时有多个数据点,例如 2014-1-1 13:10, 2014-1-1 13:20
等。我想对特定日期同一小时的数据点进行分组,然后使用 seaborn 创建热图并绘制不同的列。
我曾尝试使用 groupby
但我不确定如何指定我想要 hour
和 day
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)
)
输出:更新 :对于这几周,我们可以使用类似的方法
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}')
输出:关于python - 如何从时间戳创建每小时/天的seaborn热图,每小时有多个数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64382010/