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

Yog*_*dan 1 python correlation pandas

我正在尝试计算数据集中一组列的点双列相关性。我可以对单个变量执行此操作,但是如果我需要在一次迭代中计算所有列,则会显示错误。

下面是代码:

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
Run Code Online (Sandbox Code Playgroud)

Vic*_*vic 5

您可以使用该pd.DataFrame.corrwith()功能:

df[['B', 'C', 'D']].corrwith(df['A'].astype('float'), method=stats.pointbiserialr)

输出将是列及其与目标 DataFrame 或 Series 的相应相关性和 p 值(分别为第 0 行和第 1 行)的列表。链接到文档

    B               C           D
0   4.547937e-18    0.400066    -0.094916
1   1.000000e+00    0.504554    0.879331
Run Code Online (Sandbox Code Playgroud)