Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.cov方法的使用。

DataFrame.cov(min_periods=None)

计算列的成对协方差,不包括NA/null值。

计算DataFrame系列之间的成对协方差。返回的数据帧是DataFrame列的协方差矩阵

NA和空值都会自动从计算中排除。(请参阅下面的注释,了解缺失值的偏差。)可以为创建的每个值的最小观察数设置阈值。与低于此阈值的观察结果的比较将返回为NaN。

该方法通常用于分析时间序列数据,以了解不同度量之间的关系。

参数

min_periods : int,可选

每对列所需的最小观察数,以获得有效结果。

返回

DataFrame

DataFrame series的协方差矩阵。

Notes

返回DataFrame时间序列的协方差矩阵。协方差由N-1归一化。

对于具有丢失数据的Series的DataFrame(假设数据随机丢失),返回的协方差矩阵将是成员Series之间的方差和协方差的无偏估计。

然而,对于许多应用,这种估计可能是不可接受的,因为估计协方差矩阵不能保证是正半正定的。这可能导致具有大于1的绝对值的估计相关性和/或不可逆协方差矩阵。有关更多详细信息,请参阅协方差矩阵的估计。

例子

>>> df = pd.DataFrame([(1, 2), (0, 3), (2, 0), (1, 1)],
... columns=['dogs', 'cats'])
>>> df.cov()
dogs cats
dogs 0.666667 -1.000000
cats -1.000000 1.666667
>>> np.random.seed(42)
>>> df = pd.DataFrame(np.random.randn(1000, 5),
... columns=['a', 'b', 'c', 'd', 'e'])
>>> df.cov()
a b c d e
a 0.998438 -0.020161 0.059277 -0.008943 0.014144
b -0.020161 1.059352 -0.008543 -0.024738 0.009826
c 0.059277 -0.008543 1.010670 -0.001486 -0.000271
d -0.008943 -0.024738 -0.001486 0.921297 -0.013692
e 0.014144 0.009826 -0.000271 -0.013692 0.977795

最短期数

此方法还支持可选min_periods关键字,该关键字为每个列对指定所需的最小非NA观测数,以便获得有效结果:

>>> np.random.seed(42)
>>> df = pd.DataFrame(np.random.randn(20, 3),
... columns=['a', 'b', 'c'])
>>> df.loc[df.index[:5], 'a'] = np.nan
>>> df.loc[df.index[5:10], 'b'] = np.nan
>>> df.cov(min_periods=12)
a b c
a 0.316741 NaN -0.150812
b NaN 1.248003 0.191417
c -0.150812 0.191417 0.895202