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 ,仅匹配以下内容的列 self 和 other 将会被使用。
什么时候 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