pandas.core.window.rolling.Rolling.corr #

滚动。corr ( other = None , pairwise = None , ddof = 1 , numeric_only = False ) [来源] #

计算滚动相关性。

参数
其他系列或数据框,可选

如果未提供,则将默认为 self 并产生成对输出。

成对布尔值,默认无

如果为 False,则仅使用 self 和 other 之间的匹配列,并且输出将是一个 DataFrame。如果为 True,则将计算所有成对组合,并且在 DataFrame 输入的情况下,输出将是 MultiIndexed DataFrame。在缺少元素的情况下,仅使用完整的成对观测值。

ddof int,默认1

Delta 自由度。计算中使用的除数是,其中表示元素的数量。N - ddofN

numeric_only布尔值,默认 False

仅包含 float、int、boolean 列。

1.5.0 版本中的新增内容。

返回
系列或数据框

返回类型与具有 dtype 的原始对象相同np.float64

也可以看看

cov

计算协方差的方法类似。

numpy.corrcoef

NumPy Pearson 的相关性计算。

pandas.Series.rolling

使用系列数据进行滚动调用。

pandas.DataFrame.rolling

使用 DataFrame 调用滚动。

pandas.Series.corr

聚合系列的相关性。

pandas.DataFrame.corr

聚合 DataFrame 的 corr。

笔记

该函数使用 Pearson 的相关性定义 ( https://en.wikipedia.org/wiki/Pearson_correlation_coefficient )。

当未指定other时,输出将是自相关的(例如全 1),除了成对 设置为True 的DataFrame输入。

函数将返回NaN等值序列的相关性;这是 0/0 除法错误的结果。

pairwise设置为False时,仅使用selfother之间的匹配列。

pairwise设置为True时,输出将是一个 MultiIndex DataFrame,其中原始索引位于第一级,其他DataFrame列位于第二级。

在缺少元素的情况下,仅使用完整的成对观测值。

例子

下面的示例显示了窗口大小为 4 的滚动计算,与使用 的等效函数调用相匹配numpy.corrcoef()

>>> v1 = [3, 3, 3, 5, 8]
>>> v2 = [3, 4, 4, 4, 8]
>>> np.corrcoef(v1[:-1], v2[:-1])
array([[1.        , 0.33333333],
       [0.33333333, 1.        ]])
>>> np.corrcoef(v1[1:], v2[1:])
array([[1.       , 0.9169493],
       [0.9169493, 1.       ]])
>>> s1 = pd.Series(v1)
>>> s2 = pd.Series(v2)
>>> s1.rolling(4).corr(s2)
0         NaN
1         NaN
2         NaN
3    0.333333
4    0.916949
dtype: float64

下面的示例显示了使用pairwise选项对DataFrame进行类似的滚动计算。

>>> matrix = np.array([[51., 35.],
...                    [49., 30.],
...                    [47., 32.],
...                    [46., 31.],
...                    [50., 36.]])
>>> np.corrcoef(matrix[:-1, 0], matrix[:-1, 1])
array([[1.       , 0.6263001],
       [0.6263001, 1.       ]])
>>> np.corrcoef(matrix[1:, 0], matrix[1:, 1])
array([[1.        , 0.55536811],
       [0.55536811, 1.        ]])
>>> df = pd.DataFrame(matrix, columns=['X', 'Y'])
>>> df
      X     Y
0  51.0  35.0
1  49.0  30.0
2  47.0  32.0
3  46.0  31.0
4  50.0  36.0
>>> df.rolling(4).corr(pairwise=True)
            X         Y
0 X       NaN       NaN
  Y       NaN       NaN
1 X       NaN       NaN
  Y       NaN       NaN
2 X       NaN       NaN
  Y       NaN       NaN
3 X  1.000000  0.626300
  Y  0.626300  1.000000
4 X  1.000000  0.555368
  Y  0.555368  1.000000