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

pandas的df.corr(method='spearman')仅识别sex列无法生成全特征相关矩阵求助

问题排查与解决步骤

pandas的corr()方法默认仅会计算数值类型列的相关系数,出现仅返回sex列结果的核心原因是其余16列均为非数值类型,或包含大量无法识别为数值的异常内容,可按以下步骤处理:

第一步:确认各列数据类型

运行代码输出所有列的类型,排查非数值列:

print(df_normalized.dtypes)

如果除sex外的其余列显示为object/string类型,即可确认是数据类型问题。

第二步:排查列内异常值

预期为数值的列被识别为非数值,一般是存在空格、特殊字符、字符串格式的空值等异常内容,可运行代码定位异常:

# 替换为你要检查的列名,输出该列所有无法转换为数值的行
col_to_check = "目标列名"
invalid_rows = df_normalized[~df_normalized[col_to_check].apply(lambda x: str(x).replace('.','',1).isdigit())]
print(invalid_rows)

第三步:批量转换为数值类型

将所有需要计算相关性的列强制转换为数值类型,无法转换的内容会自动设为NaN:

import pandas as pd
# 批量转换所有列,不需要转换的列可手动过滤
for col in df_normalized.columns:
    df_normalized[col] = pd.to_numeric(df_normalized[col], errors='coerce')

第四步:重新计算相关系数

转换完成后再次运行计算代码即可得到完整的17×17相关矩阵:

spearman_corr_matrix = df_normalized.corr(method='spearman')
print(spearman_corr_matrix)

注意事项

  • 如果转换后列的NaN占比超过30%,建议先通过填充、删除等方式处理缺失值再计算相关性,避免结果偏差
  • 若sex列为分类字符串(如男/女),需要先做数值编码(如0/1映射)后再参与相关性计算

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 04:36:00