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

Rolling.corr(other=None, pairwise=None, ddof=1, **kwargs)[源代码]#

计算滚动相关性。

参数
other系列或DataFrame,可选

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

pairwise布尔默认为无

如果为False,则只使用self和Other之间的匹配列,并且输出将是DataFrame。如果为True,则将计算所有成对组合,并且在DataFrame输入的情况下,输出将是多索引DataFrame。在缺少元素的情况下,将仅使用完整的两两观察。

ddof整型,默认值为1

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

**kwargs

对于NumPy兼容性,不会对结果产生影响。

退货
系列或DataFrame

返回类型与原始对象相同, np.float64 数据类型。

参见

cov

计算协方差的方法类似。

numpy.corrcoef

NumPy Pearson的相关性计算。

pandas.Series.rolling

使用系列数据进行呼叫滚动。

pandas.DataFrame.rolling

使用DataFrames调用滚动。

pandas.Series.corr

系列的聚合相关。

pandas.DataFrame.corr

正在聚合DataFrame的关联。

注意事项

此函数使用皮尔逊的相关(https://en.wikipedia.org/wiki/Pearson_correlation_coefficient).定义

什么时候 other 未指定,则输出将是自相关的(例如,全为1),但 DataFrame 输入内容为 pairwise 设置为 True

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

什么时候 pairwise 设置为 False ,仅匹配以下内容的列 selfother 将会被使用。

什么时候 pairwise 设置为 True ,则输出将是一个多索引DataFrame,其原始索引位于第一级,而 other 第二层上的DataFrame列。

在缺少元素的情况下,将仅使用完整的两两观察。

示例

下面的示例显示了窗口大小为4的滚动计算,该窗口大小与使用 numpy.corrcoef()

>>> v1 = [3, 3, 3, 5, 8]
>>> v2 = [3, 4, 4, 4, 8]
>>> # numpy returns a 2X2 array, the correlation coefficient
>>> # is the number at entry [0][1]
>>> print(f"{np.corrcoef(v1[:-1], v2[:-1])[0][1]:.6f}")
0.333333
>>> print(f"{np.corrcoef(v1[1:], v2[1:])[0][1]:.6f}")
0.916949
>>> 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

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

>>> matrix = np.array([[51., 35.], [49., 30.], [47., 32.],        [46., 31.], [50., 36.]])
>>> print(np.corrcoef(matrix[:-1,0], matrix[:-1,1]).round(7))
[[1.         0.6263001]
 [0.6263001  1.       ]]
>>> print(np.corrcoef(matrix[1:,0], matrix[1:,1]).round(7))
[[1.         0.5553681]
 [0.5553681  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