python - Pandas :如何计算一列与其他多列之间的相关性?

标签 python pandas

import pandas as pd
import numpy as np

df = pd.DataFrame({'group': ['a'] * 5 + ['b'] * 5, 'x1': np.random.normal(0, 1, 10), 'x2': np.random.normal(0, 1, 10), 'y': np.random.normal(0, 1, 10)})

df
Out[4]: 
  group        x1        x2         y
0     a -0.468746  1.254817 -1.629483
1     a -1.849347 -2.776032  1.413563
2     a  1.186306  0.766866  0.163395
3     a -0.314397 -0.531984  0.473665
4     a  0.278961  0.510429  1.484343
5     b  2.240489  0.856263  0.369464
6     b  2.029284  1.020894 -0.042139
7     b  1.571930 -0.415627  0.865577
8     b  0.609133  1.370543  0.450230
9     b -1.820421 -0.211467  0.704480

我想按组计算 y 与同一数据帧的某些特定(不是全部)列之间的相关性,以生成如下所示的输出数据帧:

Out[5]: 
         x1        x2
a -0.168390 -0.622155
b -0.467561 -0.771757

我曾尝试使用像这样的单线:

df.groupby('group')[['x1', 'x2']].apply(...some function here that takes y as argument...)

但是,我在如何编写函数以使其遍历指定列(x1x2)以及如何指定 方面遇到困难y 作为固定列。

有谁知道可以实现这一目标的优雅单行代码?

最佳答案

使用groupby + corrwith

df.groupby('group').apply(lambda d: d.filter(like='x').corrwith(d.y))

             x1        x2
group                    
a      0.127141  0.434080
b     -0.892755  0.524215

关于python - Pandas :如何计算一列与其他多列之间的相关性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371312/

相关文章:

python - 选择不适用于 python 中的管道?

python - 通过 Python 计算两个字符串变量之间的公共(public)条目

pandas - 在 Pandas 中使用累积和时,如何填补空白并分配值?

python - 使用 scikit-learn 对连续变量和分类变量(整数类型)进行特征预处理

python - 如何对 Pandas 数据框进行二分搜索以获取列值的组合?

python - 如何统计一列中的元素并将结果作为新列?

python - 实时视频稳定 OpenCV

python - 按第二列重新排序 Pandas 数据框

python - 用Python编写一个高效的算法来解决数学问题

python - 如何迭代两个不同大小的数据帧?