大熊猫熊猫组中两列之间的协方差

时间:2016-09-27 21:05:20

标签: python pandas

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

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

谢谢,

3 个答案:

答案 0 :(得分:4)

您几乎就在那里,只是您不清楚了解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

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

希望这有助于您理解groupby。

答案 1 :(得分:2)

以下代码为您提供了分组方差 - 协方差矩阵。您可以根据需要对其进行子集化以获得协方差。

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()

答案 2 :(得分:0)

如果您要查找特定两列的from sagemaker.tensorflow import TensorFlow tf_estimator = TensorFlow(entry_point='autoencoder-model.py', role=role, instance_count=1, instance_type='ml.m5.large', framework_version="2.3.0", py_version="py37", debugger_hook_config=False, hyperparameters={'epochs': 20}, source_dir='/home/ec2-user/SageMaker/model', subnets=['subnet-1', 'subnet-2'], security_group_ids=['sg-1', 'sg-1']) ,则可以使用cov() 假设Age和薪水是dataFrame的许多列中的两个。这仅对两列有用。