Pandas相关矩阵仅显示整数类型列问题咨询(机器学习新手)
问题分析与解决方法
pandas 的 corr() 方法默认只对数值型列(int、float 这类)计算相关性,字符串、日期、分类类型的列会被自动跳过。你生成相关矩阵只看到 int 列,大概率是下面两种情况之一:
1. 其他列不是数值型
先运行这段代码查看所有列的数据类型:
print(df.dtypes)
如果输出里其他列是 object(字符串)、datetime64(日期)或者 category(分类),那这些列本来就不会被纳入相关矩阵计算,属于正常现象。
2. 其他数值列有问题
如果明明有 float 这类数值列却没出现在矩阵里,检查下这些列的缺失值情况:
print(df.isnull().sum())
corr() 会自动排除全是缺失值的列;如果某列缺失值太多,也可能导致它没被纳入计算(默认按成对方式排除缺失行,但全空列直接跳过)。
对应解决动作
- 要是你本来就只想用 int 列算相关矩阵,那当前结果没问题;
- 要是想包含更多数值列,先把非数值但实际是数字的列转成数值类型,比如字符串格式的数字转 int:
df['col_name'] = df['col_name'].astype(int) - 确认类型正确后,直接调用
corr()就能生成包含所有数值列的相关矩阵:corr_matrix = df.corr()
内容的提问来源于stack exchange,提问作者vijaya lakshmi
相关产品推荐
相关产品推荐

