python - 来自 Pandas Dataframe 的多个 Seaborn 热图
问题描述
我有一个看起来像这样的 Pandas 数据框:
store_id days times rating
100 monday '1:00pm - 3:00pm' 0
100 monday '3:00pm - 6:00pm' 1
100 monday '6:00pm - 9:00pm' 2
...
store n
那里有大约 60 家商店,评分范围从 0 到 2。我想创建一个 6x5 网格 Seaborn 的热图,每个商店有一个热图。我希望 x 轴days
为 y 轴为times
.
我试过这个:
f, axes = plt.subplots(5,6)
i=0
for store in df['store_id']:
sns.heatmap(data=df[df['store_id']==store]['rating'], ax=axes[i])
i+=1
这会创建 5x6 网格,但会产生错误(“条件与输入之间的形状不一致...”)。最好的方法是什么?
解决方案
对于热图,您需要转置/旋转您的数据,以便days
成为列(x 轴)并times
成为索引:
f, axes = plt.subplots(5,6)
# flatten axes for looping
axes = axes.ravel()
# use groupby to extract data faster
for ax, (store, data) in zip(axes, df.groupby('store_id')):
pivot = data.pivot_table(index='times', columns='days', values='rating')
sns.heatmap(data=pivot, ax=ax)
推荐阅读
- python - 使用python创建地图
- swift - 在 SwiftUI 视图中一起分配属性值?
- python - Slack 不展开图像链接以显示预览图像
- object-detection-api - 使用对象检测 API 微调具有不同类数的模型
- html - W3 CSS 和正文滚动锁定
- sqlite - 如何从 UIPath 对 SQLite DB 进行 CRUD 更新
- flutter - 新状态不调用 Flutter BlocBuilder
- amp-html - OpenMP 实现问题
- sql-server - Crystal Reports 中来自 SQL Server 2019 的图像未显示
- java - 使用 Java Apache POI 从 docx 文件中更改特定单词的字体样式