有没有办法根据 rows/columns 绘制数据框的热图?

Is there a way to plot a heatmap for a dataframe based on rows/columns?

我想问一下是否有人在 Pandas DataFrame 上做过热图,但在每个单独的列上(使用相同的颜色渐变显示 'low' 到 'high')。它更像是 Excel 中每列的条件格式(请参阅包含的图像)。我试过 sns.heatmap,但它给出了整体情况。我有一个如下所示的 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0.1, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])

我想做这样的东西。

使用 seaborn.heatmap 的一个技巧是将 min-max normalization 应用于 DataFrame 的每一列,以便将每一列的值重新缩放到范围 [0, 1].

重新缩放的值用于映射颜色,但您使用原始值注释热图(即传递 annot=df)。

import seaborn as sns 
import pandas as pd 

df = pd.DataFrame(np.random.randint(0, 100, size = 30).reshape(5,6),
columns= ['A','B','C','D','E','F'], index = ['aa','bb', 'cc', 'dd', 'ee'])

norm_df = (df - df.min(0)) / (df.max(0) - df.min(0))

sns.heatmap(norm_df, annot=df, cmap="YlGn", cbar=False, lw=0.01)

输出