首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测量几行的协方差

测量几行的协方差
EN

Stack Overflow用户
提问于 2018-11-23 08:01:30
回答 1查看 978关注 0票数 0

我是Python新手,我试图通过尝试执行一些计算来找到自己的方法(我可以在excel中轻松地完成它们,但现在我想知道如何用Python来实现)。

一种计算是协方差。我有一个简单的例子,我有3个项目出售,我们有每项24个月的需求。

在这里,您可以看到excel文件的快照:

24个月内的物品及其需求

目的是测量所有三个项目之间的协方差。因此,第一项和第二项、第三项和第二项、第三项和第三项之间的协方差。但是,我也想知道如何处理超过三个项目,比如说一千项。

计算如下:

首先,我必须计算每一项的平均数。通过执行以下代码,我已经找到了这一点:

在进口以下文件之后:

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

我导入了文件:

代码语言:javascript
复制
df = pd.read_excel("Directory\\Covariance.xlsx")

并计算了每一行的平均数:

代码语言:javascript
复制
x=df.iloc[:,1:].values
df['avg'] = x.mean(axis=1)

这为文件提供了一个额外的列,即平均值(avg):

物品,它们的需求和平均数

应该做的下列计算是计算例如,第1项和第2项之间的协方差,这在数学上是这样做的:

(项目1的"1“栏-项目1的"avg”栏)*(项目2的"1“栏-项目2的"avg”栏)。对于"1“至" 24”栏必须这样做,所以24次。这应该将24列添加到文件df中。

在此之后,我们应该取这些列的平均值,它显示了第1项和第2项之间的协方差。因为我们必须这样做N-1次,所以在这种简单的情况下,我们应该有2个协方差数(对于第一项,第二项的协方差,第二项的协方差,第一项和第三项的协方差,与第一项和第二项的协方差)。

因此,第一个问题是:如何对这3项实现这一点,以便文件中有一列显示每个项的2个协方差结果(第一项应该有一个列,其中包含项目1和2的协方差数,第二列具有项1和3之间的协方差数,等等)。

第二个问题当然是:如果我有1000项,我如何有效地做到这一点,因为我有999个每个项目的协方差数,因此我有999个额外的列,但如果我通过上述方法计算它,也会增加999*25列。那么,如何对每个项目尽可能高效地执行此计算呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-23 08:25:36

熊猫有一个计算协方差矩阵的内置函数,但是首先你需要确保你的数据格式是正确的。数据中的第一列实际上包含行标签,因此让我们将它们放在索引中:

代码语言:javascript
复制
df = pd.read_excel("Directory\\Covariance.xlsx", index_col=0)

然后,您也可以更容易地计算平均值,但不要把它放回您的数据!

代码语言:javascript
复制
avg = df.mean(axis=1)

要计算协方差矩阵,只需调用.cov()。然而,这将计算成对的列的协方差,首先转换数据:

代码语言:javascript
复制
cov = df.T.cov()

如果您愿意,可以将所有内容放在一个dataframe中:

代码语言:javascript
复制
df['avg'] = avg
df = df.join(cov, rsuffix='_cov')

注:协方差矩阵包括与其本身的协方差=每项方差。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53442705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档