快速提问:有没有办法在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']))
答案 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'])