运行Pandas代码计算correlation matrix为何输出结果为空
问题原因
你调用pd.read_csv时指定了dtype='unicode'参数,导致所有读取的列都被识别为字符串类型,而Pandas的corr()方法默认仅对数值型字段计算相关系数,字符串字段会被直接跳过,因此最终输出的相关系数矩阵为空。
解决方法
- 方法一:读取数据时移除
dtype='unicode'配置,让Pandas自动推断列的数据类型,修改后的读取代码如下:
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt data = pd.read_csv(r"C:\Users\amgup\Downloads\Model_Wells\combined.csv", sep=',', usecols=['ACOUSTICIMPEDANCE1', 'CALI', 'DT','GR','NPHI','RHOB','LLD','PIGN','SP','VCL']) cor=data.corr() print(cor)
- 方法二:如果原始数据中存在干扰字符导致自动识别为字符串,可以读取后手动将列转为数值类型,非数值内容会被转为空值NaN:
# 原读取代码不变,新增类型转换逻辑 data = data.apply(pd.to_numeric, errors='coerce') cor=data.corr() print(cor)
- 验证方法:类型处理完成后可以执行
print(data.dtypes)查看各列数据类型,确认需要计算的列均为int/float类型后再调用corr()方法即可得到正常的相关系数矩阵。
内容的提问来源于stack exchange,提问作者Vaishnavi Gupta
相关产品推荐
相关产品推荐

