在皮尔逊/大熊猫的皮尔逊r Drop Drop Drop'

时间:2016-08-11 10:59:37

标签: pandas scipy nan pearson

快速提问:有没有办法在scipy中使用'dropna'和Pearson的r函数?我正在将它与熊猫一起使用,我的一些数据中有漏洞。我知道你曾经在older versions of scipy中使用Spearman的r压制'nan',但现在缺少这个功能。

在我看来,这似乎是一种贬低,所以我想知道我是否遗漏了一些明显的东西。

我的代码:

for i in range(len(frame3.columns)):    
    correlation.append(sp.pearsonr(frame3.iloc[ :,i], control['CONTROL']))

2 个答案:

答案 0 :(得分:10)

您可以像这样使用np.isnan

for i in range(len(frame3.columns)):    
    x, y = frame3.iloc[ :,i].values, control['CONTROL'].values
    nas = np.logical_or(x.isnan(), y.isnan())
    corr = sp.pearsonr(x[~nas], y[~nas])
    correlation.append(corr)

答案 1 :(得分:1)

你也可以尝试创建临时数据帧,并使用pandas内置方法计算pearson相关性,或者在使用sp.pearsonr之前使用临时数据帧中的.dropna方法来drup null值

for col in frame3.columns:    
     correlation.append(frame3[col].to_frame(name='3').join(control['CONTROL']).corr()['3']['CONTROL'])