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,默认1Delta 自由度。计算中使用的除数是,其中表示元素的数量。N - ddofN numeric_only布尔值,默认 False仅包含 float、int、boolean 列。 1.5.0 版本中的新增内容。 返回: 系列或数据框返回类型与具有 dtype 的原始对象相同np.float64。 也可以看看 cov计算协方差的方法类似。 numpy.corrcoefNumPy 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时,仅使用self和 other之间的匹配列。 当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