pandas.core.window.Rolling.corr
-
Rolling.corr(self, other=None, pairwise=None, **kwargs)[source] -
Вычисление скользящей корреляции.
Параметры: -
other : Series, DataFrame, or ndarray, optional -
Если не указано, по умолчанию используется self.
-
pairwise : bool, default None -
Вычисляются парные комбинации столбцов внутри DataFrame. Если
otherне указан, по умолчанию используетсяTrue, в противном случае по умолчанию используетсяFalse. Не относится кSeries. - **kwargs
-
Не используется.
Возвращает: - Series или DataFrame
-
Тип возвращаемого объекта определяется вызывающим объектом скользящего вычисления.
См. также
-
Series.rolling - Вызов объекта с данными Series.
-
DataFrame.rolling - Вызов объекта с DataFrame.
-
Series.corr - Эквивалентный метод для Series.
-
DataFrame.corr - Эквивалентный метод для DataFrame.
-
rolling.cov - Похожий метод для вычисления ковариации.
-
numpy.corrcoef - Вычисление корреляции Пирсона NumPy.
Примечания
В этой функции используется определение корреляции Пирсона (https://en.wikipedia.org/wiki/Pearson_correlation_coefficient).
Когда
otherне указан, результат будет самокорреляцией (например, все 1), за исключениемDataFrameввода сpairwiseустановлено наTrue.Функция вернёт
NaNдля корреляций последовательностей с одинаковыми значениями; это результат ошибки деления 0/0.Когда
pairwiseустановлено наFalse, будут использоваться только соответствующие столбцы междуselfиother.Когда
pairwiseустановлено наTrue, результат будет DataFrame с MultiIndex, где первый уровень — исходный индекс, а второй уровень — столбцы DataFrameother.В случае отсутствующих элементов будут использоваться только полные парные наблюдения.
Примеры
Нижеприведённый пример показывает вычисление скользящего значения с размером окна четыре, соответствующего эквивалентному вызову функции с использованием
numpy.corrcoef().>>> v1 = [3, 3, 3, 5, 8] >>> v2 = [3, 4, 4, 4, 8] >>> fmt = "{0:.6f}" # limit the printed precision to 6 digits >>> # numpy returns a 2X2 array, the correlation coefficient >>> # is the number at entry [0][1] >>> print(fmt.format(np.corrcoef(v1[:-1], v2[:-1])[0][1])) 0.333333 >>> print(fmt.format(np.corrcoef(v1[1:], v2[1:])[0][1])) 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Нижеприведённый пример показывает аналогичное скользящее вычисление в 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 -
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.core.window.Rolling.corr.html