8

快速提问:有没有办法在 scipy 中将“dropna”与 Pearson 的 r 函数一起使用?我将它与熊猫一起使用,我的一些数据中有漏洞。我知道您曾经可以在旧版本的 scipy中使用 Spearman 的 r 抑制“nan” ,但现在缺少该功能。

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

我的代码:

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

2 回答 2

16

你可以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)
于 2016-08-11T11:23:24.613 回答
1

You can also try creating temporary dataframe, and used pandas built-in method for computing pearson correlation, or use the .dropna method in the temporary dataframe to drup null values before using sp.pearsonr

for col in frame3.columns:    
     correlation.append(frame3[col].to_frame(name='3').join(control['CONTROL']).corr()['3']['CONTROL'])
于 2017-03-16T22:02:48.433 回答