python - 如何找到两个不同表之间的关联关系并生成热图?
问题描述
有两个带有一些值的表。
表格1
A B C
1
2
3
表 2
D E F
1
2
3
其中 1,2,3 是行
我想在python中找到这两个表之间的关联关系
结果相关表
D E F
A
B
C
解决方案
在两组列之间生成相关矩阵
您可以使用 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)
如果您需要更具体的示例,请尝试此处
推荐阅读
- javascript - 我想写一个可以生成随机地址的脚本
- iphone - 可以在浏览器中访问原深感摄像头吗?
- vue-router - 如何仅更改当前路由 vue-router 中的特定查询参数?
- nginx - Nginx 反向代理和延迟
- network-interface - C++ 理解 boost asio 多播接收器
- excel - VBA 用户窗体应该使用哪种显示模式来显示数据、控制它并确认它没问题?
- python - Pandas - 在数据框中创建滚动百分比
- javascript - 为什么一个图像交换会影响另一个图像?
- python - 使用来自 PyMongo 游标/迭代器的数据加载 Pandas DataFrame 太慢
- django - 我正在尝试在我的 Django 模板上输出过滤列表