首页 > 解决方案 > 如何找到两个不同表之间的关联关系并生成热图?

问题描述

有两个带有一些值的表。

表格1

   A  B  C
1           
2           
3           

表 2

   D  E  F
1           
2           
3           

其中 1,2,3 是行

我想在python中找到这两个表之间的关联关系

结果相关表

   D  E  F
A           
B           
C

标签: pythonpython-3.xmachine-learning

解决方案


在两组列之间生成相关矩阵

您可以使用 pandas DataFrame.corrwith 方法。

例如:

df_1 = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['A','B','C'])
df_2 = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['D','E','F'])
corr_matrix = df_1.corrwith(other=df_2, axis=1) # You're using columns hence axis=1

编辑:对不起,我误读了文档,这就是解决方案不适合您的原因。我对其进行了更多研究,并且该解决方案将起作用(尽管成本稍高)。事实上,这篇文章是重复的。

应用到上述问题,你得到:

pd.concat([df_1, df_2], axis=1, keys=['df_1', 'df_2']).corr().loc['df_2', df_1']

请注意,您正在创建一个多级数据框,然后在 df_1 的所有列与自身和 df_2 的列之间执行关联,以及 df_2 与自身和 df_1 的所有列之间执行关联,然后仅对 df_2 的列进行子集使用 df_1 (这是您最初想要的)。这很昂贵,并且可能无法很好地扩展,但是如果您有两个小的 DataFrame,这应该可以工作。

从相关矩阵生成热图

有数以百万计的中等帖子带有简单的片段如何做到这一点。一种更简单的方法是使用 seaborn:

import seaborn as sns
sns.heatmap(corr_matrix)

如果您需要更具体的示例,请尝试此处


推荐阅读