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

使用Pandas计算泰坦尼克数据集列相关性时遇ValueError问题

解决泰坦尼克数据集计算相关性时的ValueError错误

错误原因

df.corr()仅支持数值型列的相关性计算,泰坦尼克数据集里包含Name、Sex、Embarked等字符串类型列,这类列无法直接转换为浮点数参与运算,因此触发报错。


解决方法

方法1:仅保留数值型列计算相关性

直接筛选数据集中的数值类型列,跳过无法参与计算的字符串列:

import pandas as pd
df = pd.read_csv('Datasets/train.csv')
# 筛选出整数、浮点数类型的列
numeric_df = df.select_dtypes(include=['int64', 'float64'])
# 计算相关性矩阵
corr_matrix = numeric_df.corr()
print(corr_matrix)

方法2:编码分类字符串列后再计算

如果需要纳入分类变量(如Sex、Embarked)的相关性,可先对字符串分类列做编码处理:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

df = pd.read_csv('Datasets/train.csv')
encoded_df = df.copy()

# 对二元分类列Sex做标签编码(0/1)
le = LabelEncoder()
encoded_df['Sex'] = le.fit_transform(encoded_df['Sex'])

# 对多分类列Embarked做独热编码(drop_first避免多重共线性)
encoded_df = pd.get_dummies(encoded_df, columns=['Embarked'], drop_first=True)

# 丢弃无意义的高基数字符串列(Name、Ticket、Cabin)
encoded_df = encoded_df.drop(['Name', 'Ticket', 'Cabin'], axis=1)

# 计算相关性矩阵
corr_matrix = encoded_df.corr()
print(corr_matrix)

注意事项

  • Name、Ticket这类高基数字符串列通常对相关性分析无价值,建议直接丢弃
  • 不同编码方式会影响相关性结果:标签编码适合有序分类变量,独热编码适合无序多分类变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 01:09:52