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

如何在Pandas中传入指定列计算Pearson相关系数及代码报错排查

问题分析与修正方案

核心错误

你的代码报错的直接原因是错误使用numpy数组的索引方式访问pandas DataFrame的列:a[:,0]和a[:,1]是numpy数组的切片写法,不适用于DataFrame,会触发类型不匹配错误。

修正步骤

  1. 替换错误的列索引方式:
    • 可以用.iloc[:,0]/.iloc[:,1]按位置取列,或者更直观地直接用列名(如a['HAD_CPOX'])获取数据。
  2. 移除不必要的排序操作:计算Pearson相关系数不需要对索引排序,a.sort_index(inplace=True)可以删除。

修正后的代码

import pandas as pd
from scipy import stats

# 读取指定列并移除含NaN的行
df = pd.read_csv('NISPUF17.csv', usecols=['HAD_CPOX', 'P_NUMVRC']).dropna()
# 过滤HAD_CPOX不等于77的行
df = df.query('HAD_CPOX != 77')

def calculate_pearson_corr():
    # 直接通过列名获取数据传入计算函数
    corr_result = stats.pearsonr(df['HAD_CPOX'], df['P_NUMVRC'])
    return corr_result

print(calculate_pearson_corr())

补充说明

  • stats.pearsonr返回的是包含相关系数和p值的元组,这是该函数的正常返回格式,不属于类型错误。
  • 你做的dropna+过滤77的清洗步骤已经处理了缺失值,这部分逻辑是有效的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:03:20