pandas - 如何将多索引转换为热图
问题描述
Pandas/Python 的新手,我设法制作了一个如下所示的索引;
MultiIndex([( 1, 1, 4324),
( 1, 2, 8000),
( 1, 3, 8545),
( 1, 4, 8544),
( 1, 5, 7542),
(12, 30, 7854),
(12, 31, 7511)],
names=['month', 'day', 'count'], length=366)
我正在努力找出如何将第一个数字存储到一个列表中(1-12 个),将第二个数字存储到另一个列表中(1-31 值),将第三个数字存储到另一个单独的列表中(分数 0-9000)
我正在尝试构建一个轴上的 Month x Day 的热图,并使用 count 作为值并且失败了!我假设我必须将月、日和计数分开到单独的列表中才能制作热图?
data1 = pd.read_csv("a2data/Data1.csv")
data2 = pd.read_csv("a2data/Data2.csv")
merged_df = pd.concat([data1, data2])
merged_df.set_index(['month', 'day'], inplace=True)
merged_df.sort_index(inplace=True)
merged_df2=merged_df.groupby(['month', 'day']).count.mean().reset_index()
merged_df2.set_index(['month', 'day', 'count'], inplace=True)
#struggling在这里分离月,日和计数以制作热图
解决方案
您是否在寻找:
# let start here
merged_df2=merged_df.groupby(['month', 'day']).count.mean()
# use sns
import seaborn as sns
sns.heatmap(merged_df2.unstack('day'))
输出:
或者您可以使用plt
:
merged_df2=merged_df.groupby(['month', 'day']).count.mean().unstack('day')
plt.imshow(merged_df2)
plt.xticks(np.arange(merged_df2.shape[1]), merged_df2.columns)
plt.yticks(np.arange(merged_df2.shape[0]), merged_df2.index)
plt.show()
这使:
推荐阅读
- jsf - 尝试使用 JSF、Primefaces 3.5 和 Glassfish 3.1.2.2 呈现视图 ShoppingCart.xhtml 时出现 java.lang.NullPointerException
- asp.net-mvc - 数据关联 - 类不检索关联类的数据
- bit - 当移位操作中有 NOT (~) 时会发生什么
- javascript - 如何在javascript映射函数中创建累积变量
- mysql - 出现错误 3780;创建外键约束时
- logrotate - Logrotate 丢失原始日志数据
- audio - “模型逐帧生成视频”是什么意思?
- php - 如何将 1 个(或几个)文件从父文件夹复制到所有子文件夹
- node.js - 模块“http”没有默认导出。在使用打字稿和节点时
- mysql - GKE OFBiz pod 未连接到 Google Cloud SQL 数据库