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

Jupyter Notebook中df.corr()因字符串列无法计算数值相关性报错求助

解决df.corr()因字符串列报错的问题

问题原因

df.corr()默认计算Pearson相关系数,仅支持数值型数据,但部分pandas版本不会自动过滤非数值列,当DataFrame中存在字符串、分类等非数值类型列时,就会抛出ValueError: could not convert string to float错误。

解决方案

方法1:手动筛选数值型列

使用select_dtypes()方法先提取所有数值类型的列,再计算相关性:

import seaborn as sns
import pandas as pd

df = sns.load_dataset("tips")
# 筛选数值列
numeric_cols = df.select_dtypes(include=['number'])
# 计算相关矩阵
corr_matrix = numeric_cols.corr()
print(corr_matrix)

方法2:使用numeric_only参数(pandas 1.0.0+支持)

直接在corr()方法中指定numeric_only=True,让函数自动忽略非数值列:

import seaborn as sns
import pandas as pd

df = sns.load_dataset("tips")
corr_matrix = df.corr(numeric_only=True)
print(corr_matrix)

额外说明

如果需要分析分类变量与数值变量的相关性,可以先对分类变量做编码处理(比如独热编码),再计算全量相关性:

encoded_df = pd.get_dummies(df)
corr_matrix = encoded_df.corr()
print(corr_matrix)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:22:17