Python Pandas和Spearmanr逐行运行得更快

时间:2018-08-23 19:57:54

标签: python pandas scipy

我试图获取两个数据帧并运行逐行spearmanr相关性。我已经设置了代码以使其能够运行,但是要花很长时间,并且我希望有一种更好/更快的方法可以在那里运行它。表格看起来像这样:

df1(50x14492):

arange

和df2(50x14492):

TYPE GENRE1 GENRE2
Name1 .0945 .0845
Name2 .9074 Nan
Name3 1     0

我想获取df1.Name1和df2.Name2的相关信息,所以我有一个字典,上面写着{Name1:corr,Name2:corr2},所以我有以下代码。

TYPE GENRE1 GENRE2
Name1 .9045 .895
Name2 .074  1
Name3 .5    .045

由于数据长度的原因,有没有办法做到这一点并不会永远?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,请尝试以下操作:

from scipy.stats import spearmanr as spr

df1 = df1.set_index('TYPE')
df2 = df2.set_index('TYPE')

df1, df2 = df1.align(df2)

def scorr(t):
  return spr(*t, axis=0, nan_policy='omit').correlation

pd.Series([*map(scorr, zip(df1.values, df2.values))], df1.columns)