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

Rolling.corr(other=None, pairwise=None, ddof=1, numeric_only=False)[источник]#

Вычислить скользящую корреляцию.

Параметры:
otherSeries или DataFrame, опционально

Если не указано, то по умолчанию будет использоваться self и создаваться попарный вывод.

pairwisebool, по умолчанию None

Если False, то будут использоваться только совпадающие столбцы между self и other, и результатом будет DataFrame. Если True, то будут вычислены все попарные комбинации, и результатом будет DataFrame с MultiIndex в случае входных данных DataFrame. В случае отсутствующих элементов будут использоваться только полные попарные наблюдения.

ddofint, по умолчанию 1

Дельта степеней свободы. Делитель, используемый в вычислениях, равен N - ddof, где N представляет количество элементов.

numeric_onlybool, по умолчанию False

Включать только столбцы с типами float, int, boolean.

Добавлено в версии 1.5.0.

Возвращает:
Series или DataFrame

Тип возвращаемого значения такой же, как у исходного объекта с np.float64 тип данных.

Смотрите также

cov

Похожий метод для вычисления ковариации.

numpy.corrcoef

Расчёт корреляции Пирсона в NumPy.

pandas.Series.rolling

Вызов rolling с данными Series.

pandas.DataFrame.rolling

Вызов rolling с DataFrames.

pandas.Series.corr

Агрегация corr для Series.

pandas.DataFrame.corr

Агрегирование 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 с MultiIndex с исходным индексом на первом уровне, и other Столбцы 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