2024-04-20 11:02:51 发布
网友
我试图按组计算两列之间的协方差。我正在执行以下操作:
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。在
groupeby.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)
其中,grouped是groupby对象。对于grouped.apply函数,它需要一个回调函数作为参数,每个组都是回调函数的参数。这里,回调函数是一个lambda函数,参数x是一个组(一个数据帧)。在
grouped
groupby
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()
您已经快到了,只是您还不清楚groupby对象,请参见Pandas-GroupBy了解更多详细信息。在
对于您的问题,如果我理解正确的话,您需要计算同一组中两列之间的cov。在
最简单的方法是使用
groupeby.cov
函数,该函数在组之间提供成对cov。在如果您只需要cov(分组v1、分组v2)
^{pr2}$其中,
grouped
是groupby
对象。对于grouped.apply
函数,它需要一个回调函数作为参数,每个组都是回调函数的参数。这里,回调函数是一个lambda
函数,参数x
是一个组(一个数据帧)。在希望这对你理解groupby有所帮助。在
下面的代码给出分组方差协方差矩阵。你可以把它子集化,你只需要得到协方差。在
相关问题 更多 >
编程相关推荐