一尘不染

如何在pandas数据框列中找到一组值之间的相关性

python

我有一个数据框df:

ID    Var1     Var2
1     1.2        4
1     2.1        6
1     3.0        7
2     1.3        8
2     2.1        9
2     3.2        13

我想找到的Pearson相关系数的值Var1,并Var2为每ID

因此结果应如下所示:

ID    Corr_Coef
1     0.98198
2     0.97073

更新:

必须确保变量的所有列均为intfloat


阅读 260

收藏
2021-01-20

共1个答案

一尘不染

df.groupby('ID').corr()

输出:

             Var1      Var2
ID                         
1  Var1  1.000000  0.981981
   Var2  0.981981  1.000000
2  Var1  1.000000  0.970725
   Var2  0.970725  1.000000

具有OP输出格式。

df_out = df.groupby('ID').corr()
(df_out[~df_out['Var1'].eq(1)]
          .reset_index(1, drop=True)['Var1']
          .rename('Corr_Coef')
          .reset_index())

输出:

   ID  Corr_Coef
0   1   0.981981
1   2   0.970725
2021-01-20