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

使用df.corr()计算数据集相关性异常:Jupyter显(_)、Spyder显NaN

录取数据集相关性计算异常的解决方法

可能原因

  • 数据集中存在非数值类型列,或数值列被误识别为字符串类型
  • 部分列缺失值过多,导致相关性计算无法正常进行
  • 存在方差为0的列(所有值相同),这类列无法计算有效相关性

解决步骤

1. 检查数据基础信息

先确认数据结构、缺失值和数值特征的分布:

import pandas as pd

df = pd.read_csv("Admission_data.csv")
# 查看各列数据类型和非空值数量
print(df.info())
# 统计各列缺失值数量
print(df.isnull().sum())
# 查看数值列的统计描述(确认是否有方差为0的列)
print(df.describe())

2. 修复数值列格式错误

如果发现存在object类型的数值列,尝试强制转换为数值类型(无法转换的会设为NaN):

for col in df.columns:
    try:
        df[col] = pd.to_numeric(df[col], errors='coerce')
    except Exception:
        continue

3. 处理缺失值

根据缺失值情况选择填充或删除:

# 用数值列的均值填充缺失值
df = df.fillna(df.mean(numeric_only=True))
# 若某列缺失值占比过高,直接删除(示例:缺失值超过50%)
df = df.drop(df.columns[df.isnull().sum()/len(df) > 0.5], axis=1)

4. 删除方差为0的列

这类列所有值相同,无法计算有效相关性:

# 筛选出方差大于0的数值列
valid_cols = df.columns[df.var(numeric_only=True) > 0]
df = df[valid_cols]

5. 重新计算相关性

完成上述处理后,重新运行相关性计算:

correlations = df.corr(numeric_only=True)
print(correlations)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:40:25