如何快速找出DataFrame中与Price变量相关性最高的两个变量?
解决方法
一、直接通过数值筛选找出目标变量
不用依赖热力图,直接从相关矩阵中提取Price列的相关性数据,排序后即可快速定位相关性最高的两个变量:
import pandas as pd # 计算所有变量的相关矩阵 corr_matrix = df_csv.corr() # 提取Price与其他变量的相关性,排除自身(相关系数为1),按相关性绝对值降序排序 price_correlations = corr_matrix['Price'].drop('Price').abs().sort_values(ascending=False) # 获取相关性最高的两个变量 top_two = price_correlations.head(2) print("与Price相关性最高的两个变量:") print(top_two)
注:用abs()是因为正负相关仅代表方向,绝对值大小才代表相关性的强度,若你只关注正相关,去掉abs()即可。
二、优化热力图,聚焦Price相关部分
如果仍想通过可视化查看,可对热力图做针对性优化,避免信息密集:
1. 仅绘制Price与其他变量的相关性热力图
只展示Price列的相关数据,排序后更直观:
import seaborn as sns import matplotlib.pyplot as plt # 提取Price相关数据并排序 price_corr_df = corr_matrix[['Price']].drop('Price').sort_values(by='Price', ascending=False) # 设置画布尺寸,适配23个变量 plt.figure(figsize=(8, 12)) # 绘制热力图,保留标注并设置格式 sns.heatmap(price_corr_df, annot=True, cmap='coolwarm', fmt='.2f') plt.title('Variables Correlated with Price') plt.show()
2. 优化全量热力图的可读性
若需要查看所有变量的相关性,可通过调整参数提升清晰度:
import numpy as np import seaborn as sns import matplotlib.pyplot as plt plt.figure(figsize=(16, 16)) # 增大画布 # 只显示下三角(避免重复信息),缩小标注字体 sns.heatmap(corr_matrix, annot=True, mask=np.triu(np.ones_like(corr_matrix, dtype=bool)), annot_kws={"size": 8}, cmap='coolwarm', fmt='.2f') plt.show()
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

