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

调用pandas Series.corr()求皮尔逊相关系数报float无shape属性原因

报错原因及解决方案

核心报错原因

你提取的df['a']和df['b']两列的数据类型均为object而非数值类型(int/float),这是报错的根本诱因:

  • scipy.stats.pearsonr处理输入时会自动对内容为合法数字的object类型序列做隐式类型转换,因此可以正常输出结果
  • pandas的Series.corr方法内部的数值校验逻辑不会自动转换object类型,计算过程中会把object类型的元素识别为单个float标量,调用shape属性时就触发了'float' object has no attribute 'shape'的报错

索引影响说明

Country作为索引不会导致该错误,pandas的corr计算仅会依据索引对齐两个序列的取值,只要两个序列的索引对应、取值可转换为数值,索引类型不会影响计算结果。

解决方案

先将两列数据显式转换为数值类型,再调用corr方法即可:

# 转换为数值类型,无法转换的内容会被置为NaN
col1 = pd.to_numeric(df['a'], errors='coerce')
col2 = pd.to_numeric(df['b'], errors='coerce')
# 计算皮尔逊相关系数,自动忽略NaN值
corr = col1.corr(col2, method="pearson")

内容的提问来源于stack exchange,提问作者Matthew Tomsho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:24:05