在 Seaborn 中将相关矩阵绘制为热图时,是不是可以删除重复的列/行?
Posted
技术标签:
【中文标题】在 Seaborn 中将相关矩阵绘制为热图时,是不是可以删除重复的列/行?【英文标题】:Is it possible to remove repeated columns/rows when plotting correlation matrix as heatmap in Seaborn?在 Seaborn 中将相关矩阵绘制为热图时,是否可以删除重复的列/行? 【发布时间】:2020-02-19 10:11:40 【问题描述】:给定下一个数据帧
my_df.head()
cruce1 cruce2 cruce3 cruce4 cruce5 cruce6 cruce7 cruce8 cruce9 cruce10 ... factor75 factor80 factor85 factor90 factor95 factor100 factor105 factor110 factor115 factor120
Date
1993-10-28 0.0049 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 161.75 172.45 196.86 200.33 219.21 222.67 243.23 235.77 249.48 231.56
1993-10-29 0.0002 0.0051 NaN NaN NaN NaN NaN NaN NaN NaN ... 169.13 172.64 211.90 205.58 218.63 223.16 250.21 245.71 256.47 245.63
1993-11-01 0.0041 0.0043 0.0092 NaN NaN NaN NaN NaN NaN NaN ... 165.37 170.35 215.84 198.81 216.43 222.32 246.18 247.09 253.57 254.07
1993-11-02 -0.0019 0.0022 0.0024 0.0073 NaN NaN NaN NaN NaN NaN ... 175.01 180.37 219.77 210.89 210.06 236.31 249.19 260.01 252.05 259.16
1993-11-03 0.0023 0.0004 0.0045 0.0047 0.0096 NaN NaN NaN NaN NaN ... 183.84 177.68 210.58 207.35 207.67 228.06 235.10 254.71 251.55 258.43
使用此列:
my_df.head()
Index(['cruce1', 'cruce2', 'cruce3', 'cruce4', 'cruce5', 'cruce6', 'cruce7',
'cruce8', 'cruce9', 'cruce10', 'cruce11', 'cruce12', 'cruce13',
'cruce14', 'cruce15', 'cruce16', 'cruce17', 'cruce18', 'cruce19',
'cruce20', 'factor1', 'factor5', 'factor10', 'factor15', 'factor20',
'factor25', 'factor30', 'factor35', 'factor40', 'factor45', 'factor50',
'factor55', 'factor60', 'factor65', 'factor70', 'factor75', 'factor80',
'factor85', 'factor90', 'factor95', 'factor100', 'factor105',
'factor110', 'factor115', 'factor120'],
dtype='object')
我制作了相关矩阵的热图
corr = my_df.diff().corr()
mask = np.zeros_like(corr)
mask[np.triu_indices_from(mask)] = True
sns.heatmap(corr, mask=mask, linewidths=0.1, vmax=1.0,
square=False, cmap=colormap, linecolor='white')
下一个结果:
热图 1:
但我只想保留热图中的不同列:
热图 2:
有可能吗?而且,如果是的话,是否可以通过使生成的正方形填充空白空间来完成?
【问题讨论】:
【参考方案1】:我解决了。
我不得不改变
corr = my_df.diff().corr()
收件人:
corr = df.diff().corr().filter(regex = 'cruce', axis=1).filter(regex = 'factor', axis=0)
线
filter(regex = 'cruce', axis=1)
用于从轴 1(逐行)中删除所有包含 'cruce' 的列,而行
filter(regex = 'factor', axis=0)
从轴 0 中删除所有包含“因子”的列(按列)。
更多内容在pandas doc
然后,移除掩码设置:
sns.heatmap(corr, linewidths=0.1, vmax=1.0, square=False, cmap=colormap, linecolor='white')
我们得到下一个结果: Solution
【讨论】:
您可以通过为以下部分.filter(regex = 'cruce', axis=1).filter(regex = 'factor', axis=0)
提供解释或至少提供文档链接来大大改进您的答案。
完成。现在,有了更好的解释。以上是关于在 Seaborn 中将相关矩阵绘制为热图时,是不是可以删除重复的列/行?的主要内容,如果未能解决你的问题,请参考以下文章