python中两个数据帧之间的Pearson相关性,并输出列之间的所有组合

时间:2016-12-05 16:52:06

标签: python pandas numpy

Hello All我有两个数据框,包含3列,col1中的每一行都有82个不同于列变量的值,因此我的df2有三个相同的列,这三列具有不同的值

df1.head()

    ID  variable value
0   ENSG3   AE02_ID 0.000001
1   ENSG1   AE02_ID 0.329180
2   ENSG8   AE02_ID 0.000000
3   ENSG10  AE02_ID 29.157761
4   ENSG20  AE02_ID 0.633884

df2.head()

    Geneid  variable    value
0   ENSG60  AE02_ID 7.408430
1   ENSG53  AE02_ID 0.000000
2   ENSG94  AE02_ID 2.556464
3   ENSG49  AE02_ID 0.032384
4   ENSG9   AE02_ID 0.000000

我想在这两个数据帧上进行Pearson相关,输出数据帧应该具有来自两个数据帧的所有可能组合的相关系数。比如像这样的东西

ID1    ID2   coefficient
ENSG60 ENSG3 0.2
ENSG1 ENSG53  0.14
.
.

我试过这个班轮df1.value.corrwith(df2.value)

但它只给出一个系数与相应的

1 个答案:

答案 0 :(得分:1)

pandas.DataFrame.corrwith应该适合你。 numpy.corrcoef的另一种选择:

import numpy as np
import pandas as pd

df1 = pd.DataFrame({'a': np.random.random(5), 'b': np.random.random(5)})
result = np.corrcoef(df1.a,df1.b)
print(result)

输出:

[[ 1.          0.02543264]
 [ 0.02543264  1.        ]]

corrwithcorrcoef都是一样的。