maxframe.dataframe.DataFrame.cov#

DataFrame.cov(min_periods=None, ddof=1, numeric_only=True)#

计算各列之间的协方差,排除 NA/null 值。

计算 DataFrame 中各 Series 之间的两两协方差。返回的数据帧是 DataFrame 各列的 协方差矩阵

计算中会自动排除 NA 和 null 值。(参见下文关于缺失值带来的偏差说明。)可以设置一个阈值,用于指定每对列之间有效结果所需的最小观测数量。低于此阈值的比较将返回 NaN

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

参数:
  • min_periods (int, optional) -- 每对列之间需要的最小观测数量,以获得有效结果。

  • ddof (int, default 1) -- 自由度调整量。计算中使用的除数是 N - ddof,其中 N 表示元素数量。此参数仅在 DataFrame 中没有 nan 时适用。

  • numeric_only (bool, default True) -- 仅包含 floatintboolean 类型的数据。

返回:

DataFrame 中各 Series 的协方差矩阵。

返回类型:

DataFrame

参见

Series.cov

计算与另一个 Series 的协方差。

core.window.ewm.ExponentialMovingWindow.cov

指数加权样本协方差。

core.window.expanding.Expanding.cov

扩展样本协方差。

core.window.rolling.Rolling.cov

滚动样本协方差。

备注

返回 DataFrame 时间序列的协方差矩阵。协方差通过 N-ddof 进行标准化。

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

然而,对于许多应用场景,这种估计可能不可接受,因为估计的协方差矩阵不一定为正半定矩阵。这可能导致估计的相关系数绝对值大于 1,和/或协方差矩阵不可逆。更多信息请参见 协方差矩阵估计

示例

>>> import maxframe.tensor as mt
>>> import maxframe.dataframe as md
>>> df = md.DataFrame([(1, 2), (0, 3), (2, 0), (1, 1)],
...                   columns=['dogs', 'cats'])
>>> df.cov().execute()
          dogs      cats
dogs  0.666667 -1.000000
cats -1.000000  1.666667
>>> mt.random.seed(42)
>>> df = md.DataFrame(mt.random.randn(1000, 5),
...                   columns=['a', 'b', 'c', 'd', 'e'])
>>> df.cov().execute()
          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 观测数量,以便获得有效结果:

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