Skip to main content
 首页 » 编程设计

python之pandas groupby pandas 中两列之间的协方差

2025年05月04日13tintown

我正在尝试按组计算两列之间的协方差。我正在做以下事情:

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 之间的协方差,而不是整个方差-协方差矩阵,因为我只有两列。

谢谢,

请您参考如下方法:

您几乎就在那里,只是您不清楚 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(grouped_v1, grouped_v2)

grouped = A.groupby('group') 
grouped.apply(lambda x: x['value1'].cov(x['value2'])) 
 
group 
A   -2.666667 
B    0.500000 

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

希望对您理解groupby有所帮助。