pandas.core.window.rolling.Rolling.corr#
- Rolling.corr(other=None, pairwise=None, ddof=1, numeric_only=False)[源代码][源代码]#
计算滚动相关性。
- 参数:
- 其他Series 或 DataFrame,可选
如果未提供,则将默认为自身并生成成对输出。
- 成对bool, 默认为 None
如果为 False,则只使用 self 和 other 之间的匹配列,输出将是一个 DataFrame。如果为 True,则将计算所有成对组合,并且在 DataFrame 输入的情况下,输出将是一个 MultiIndexed DataFrame。在缺少元素的情况下,只使用完整的成对观测。
- ddofint, 默认 1
自由度的增量。计算中使用的除数是
N - ddof,其中N表示元素的数量。- numeric_only布尔值, 默认为 False
只包含浮点数、整数、布尔列。
Added in version 1.5.0.
- 返回:
- Series 或 DataFrame
返回类型与原始对象相同,具有
np.float64数据类型。
参见
cov类似的方法来计算协方差。
numpy.corrcoefNumPy 皮尔逊相关系数计算。
Series.rolling使用 Series 数据调用 rolling。
DataFrame.rolling使用 DataFrames 调用 rolling。
Series.corr聚合 Series 的相关性。
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 时,输出将是一个具有原始索引在第一级和 other DataFrame 列在第二级的 MultiIndex DataFrame。
在缺少元素的情况下,只会使用完全成对观察的数据。
示例
下面的示例展示了使用窗口大小为四的滚动计算,与使用
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
下面的示例展示了在 DataFrame 上使用 pairwise 选项进行类似的滚动计算。
>>> 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