【问题标题】:python scipy spearman correlationspython scipy spearman相关性
【发布时间】:2018-05-09 04:09:03
【问题描述】:

我正在尝试从数据帧 (df) 中获取列名,并将它们与 spearmanr 相关函数生成的结果数组相关联。我需要将列名 (a-j) 关联回相关值 (spearman) 和 p 值 (spearman_pvalue)。是否有一种直观的方式来执行此任务?

from scipy.stats import pearsonr,spearmanr
import numpy as np
import pandas as pd

df=pd.DataFrame(np.random.randint(0,100,size= (100,10)),columns=list('abcdefghij'))

def binary(row):
    if row>=50:
        return 1
    else:
        return 0
df['target']=df.a.apply(binary)

spearman,spearman_pvalue=spearmanr(df.drop(['target'],axis=1),df.target)
print(spearman)
print(spearman_pvalue)

【问题讨论】:

    标签: python pandas scipy sklearn-pandas pearson-correlation


    【解决方案1】:

    看来你需要:

    from scipy.stats import spearmanr
    
    df=pd.DataFrame(np.random.randint(0,100,size= (100,10)),columns=list('abcdefghij'))
    #print (df)
    
    #faster for binary df
    df['target'] = (df['a'] >= 50).astype(int)
    #print (df)
    
    spearman,spearman_pvalue=spearmanr(df.drop(['target'],axis=1),df.target)
    
    df1 = pd.DataFrame(spearman.reshape(-1, 11), columns=df.columns)
    #print (df1)
    
    df2 = pd.DataFrame(spearman_pvalue.reshape(-1, 11), columns=df.columns)
    #print (df2)
    
    ### Kyle, we can assign the index back to the column names for the total matrix:
    df2=df2.set_index(df.columns)
    df1=df1.set_index(df.columns)
    

    或者:

    df1 = pd.DataFrame(spearman.reshape(-1, 11), 
                      columns=df.columns, 
                      index=df.columns)
    df2 = pd.DataFrame(spearman_pvalue.reshape(-1, 11), 
                       columns=df.columns, 
                       index=df.columns)
    

    【讨论】:

    • 嗨,Jezrael,我尝试使用 df['target'] 来实现这一点,但它在重塑时失败了。您能否调整代码使 spearmanr 如下:spearman,spearman_pvalue=spearmanr(df.drop(['target'],axis=1),df.target)。我需要这个来将统计信息与 spearman 相关的二进制目标相关联,否则我只会使用 pearson(离散与连续)。
    • 哎呀,我忘了target 专栏。现在它应该工作得很好
    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2017-04-05
    相关资源
    最近更新 更多