pandas groupby pandas中两列的协方差

2024-04-20 11:02:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图按组计算两列之间的协方差。我正在执行以下操作:

A = pd.DataFrame({'group':['A','A','A','A','B','B','B'],
                  'value1':[1,2,3,4,5,6,7],
                  'value2':[8,5,4,3,7,8,8]})

B = A.groupby('group')

B['value1'].cov(B['value2'])

理想情况下,我希望得到X和Y之间的协方差,而不是整个方差协方差矩阵,因为我只有两列。在

谢谢你


Tags: dataframegroup情况矩阵covpdgroupby理想
2条回答

您已经快到了,只是您还不清楚groupby对象,请参见Pandas-GroupBy了解更多详细信息。在

对于您的问题,如果我理解正确的话,您需要计算同一组中两列之间的cov。在

最简单的方法是使用groupeby.cov函数,该函数在组之间提供成对cov。在

A.groupby('group').cov()

                value1    value2
group                           
A     value1  1.666667 -2.666667
      value2 -2.666667  4.666667
B     value1  1.000000  0.500000
      value2  0.500000  0.333333

如果您只需要cov(分组v1、分组v2)

^{pr2}$

其中,groupedgroupby对象。对于grouped.apply函数,它需要一个回调函数作为参数,每个组都是回调函数的参数。这里,回调函数是一个lambda函数,参数x是一个组(一个数据帧)。在

希望这对你理解groupby有所帮助。在

下面的代码给出分组方差协方差矩阵。你可以把它子集化,你只需要得到协方差。在

import pandas as pd
A = pd.DataFrame({'group':['A','A','A','A','B','B','B'],
                  'value1':[1,2,3,4,5,6,7],
                  'value2':[8,5,4,3,7,8,8]})
print A.groupby('group').cov()

相关问题 更多 >