如何在一次迭代中对多个列进行点双列相关

2024-04-25 22:52:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算数据集中一组列的点双列相关。我可以在单个变量上进行计算,但是如果我需要在一次迭代中计算所有列,那么它将显示一个错误

代码如下:

df = pd.DataFrame({'A':[1, 0, 1, 0, 1], 'B':[6, 7, 8, 9, 10],'C':[9, 4, 6,9,10],'D':[8,9,5,7,10]})

from scipy import stats
corr_list = {}
y = df['A'].astype(float)
for column in df:
    x = df[['B','C','D']].astype(float)
    corr = stats.pointbiserialr(x, y)
    corr_list[['B','C','D']] = corr 
print(corr_list)

TypeError: No loop matching the specified signature and casting was found for ufunc add

Tags: 数据代码fromimportdataframedfforstats
1条回答
网友
1楼 · 发布于 2024-04-25 22:52:15

x必须是一列而不是数据帧,如果使用该列而不是数据帧,它将正常工作。您可以尝试以下方法:

df = pd.DataFrame({'A':[1, 0, 1, 0, 1], 'B':[6, 7, 8, 9, 10],'C':[9, 4, 6,9,10],'D':[8,9,5,7,10]})
print(df)
from scipy import stats
corr_list = []
y = df['A'].astype(float)


for column in df:
    x=df[column]
    corr = stats.pointbiserialr(list(x), list(y))
    corr_list.append(corr[0])
print(corr_list)

顺便说一下,您可以使用print(df.corr()),这将为您提供数据帧的相关矩阵

相关问题 更多 >