如何将多索引转换为热图

How to convert Multi-Index into a Heatmap

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)

我正在尝试构建一个轴上为月 x 日的热图,并使用计数作为值,但失败得很厉害!我假设我必须将月、日和计数分成单独的列表来制作热图?

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)

#在这里努力将月份、日期和计数分开以制作热图

您在寻找:

# 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()

给出: