pandas.core.groupby.DataFrameGroupBy.cov#

property DataFrameGroupBy.cov#

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

计算数据帧序列之间的成对协方差。返回的数据框是 covariance matrix DataFrame的列的。

NA和空值都会自动从计算中排除。(请参见下面有关缺少值产生的偏移的注释。)可以为创建的每个值的最小观测次数设置阈值。低于此阈值的观测值的比较将返回为 NaN

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

参数
min_periods整型,可选

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

ddof整型,默认值为1

增量自由度。计算中使用的除数是 N - ddof ,在哪里 N 表示元素的数量。

1.1.0 新版功能.

numeric_only布尔值,默认为True

仅包括 floatintboolean 数据。

1.5.0 新版功能.

退货
DataFrame

DataFrame序列的协方差矩阵。

参见

Series.cov

计算与另一系列的协方差。

core.window.ExponentialMovingWindow.cov

指数加权样本协方差。

core.window.Expanding.cov

扩大样本协方差。

core.window.Rolling.cov

滚动样本协方差。

注意事项

返回DataFrame的时间序列的协方差矩阵。用N-ddof对协方差进行归一化。

对于具有缺失数据的系列的DataFrame(假设数据为 missing at random )返回的协方差矩阵将是成员系列之间的方差和协方差的无偏估计。

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

示例

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