You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

data.corr()未显示部分变量相关性,如何修改代码展示全部?

问题:相关性矩阵部分变量未显示,如何修改代码展示所有变量间的相关性?

我尝试展示数据集变量间的相关性,但部分变量的相关性未显示。使用的代码如下:

data = pd.read_csv('insurance.csv', index_col = 0)
corr = data.corr()
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(corr,cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)
ticks = np.arange(0,len(data.columns),1)
ax.set_xticks(ticks)
plt.xticks(rotation=90)
ax.set_yticks(ticks)
ax.set_xticklabels(data.columns)
ax.set_yticklabels(data.columns)
plt.show()

当前输出仅显示部分变量的相关性,期望输出能完整展示所有变量间的关联(包含全部变量标签与完整热力图效果)。请问如何修改代码实现?


解决方法

1. 检查变量类型,确保所有变量纳入相关性计算

pd.corr()默认仅计算数值型变量的皮尔逊相关系数,若数据中存在类别型变量(如字符串、object类型),这类变量会被自动排除。需要先对其做编码处理:

# 对类别型变量做独热编码(drop_first避免多重共线性)
data_encoded = pd.get_dummies(data, drop_first=True)
# 重新计算全变量相关性
corr = data_encoded.corr()

2. 调整图表尺寸,避免内容截断

默认图表尺寸过小会导致部分变量标签或热力图区域被隐藏,通过figsize放大图表:

# 根据变量数量调整宽高,变量越多数值越大
fig = plt.figure(figsize=(12, 10))

3. 优化标签显示,防止重叠

若变量名较长,可缩小字体并自动调整布局:

plt.xticks(rotation=90, fontsize=9)
ax.set_yticklabels(data_encoded.columns, fontsize=9)
plt.tight_layout()  # 自动适配布局,避免标签被截断

完整修改后的代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

data = pd.read_csv('insurance.csv', index_col=0)
# 处理类别变量(若存在)
data_encoded = pd.get_dummies(data, drop_first=True)
corr = data_encoded.corr()

# 设置合适的图表尺寸
fig = plt.figure(figsize=(12, 10))
ax = fig.add_subplot(111)
cax = ax.matshow(corr, cmap='coolwarm', vmin=-1, vmax=1)
fig.colorbar(cax)

ticks = np.arange(0, len(data_encoded.columns), 1)
ax.set_xticks(ticks)
plt.xticks(rotation=90, fontsize=9)
ax.set_yticks(ticks)
ax.set_yticklabels(data_encoded.columns, fontsize=9)

# 可选:添加相关性数值标注(增强可读性)
for i in range(len(data_encoded.columns)):
    for j in range(len(data_encoded.columns)):
        ax.text(j, i, round(corr.iloc[i, j], 2), ha='center', va='center', color='white')

plt.tight_layout()
plt.show()

关键说明

  • 若数据集全为数值型变量,问题大概率是图表尺寸不足,调整figsize+plt.tight_layout()即可解决。
  • 若存在类别变量,必须先编码才能纳入相关性计算,否则这些变量不会出现在corr矩阵中,自然无法显示在热力图里。

内容的提问来源于stack exchange,提问作者apdesloge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:50:46