使用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
相关产品推荐
相关产品推荐

