Spec-Zone.ru › pandas 0.24

pandas.core.window.Rolling.corr

Rolling.corr(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 с многоуровневым индексом, где первый уровень — исходный индекс, а второй уровень — столбцы DataFrame other.

В случае отсутствующих элементов будут использоваться только полные парные наблюдения.

Примеры

В примере ниже показано скользящее вычисление с размером окна четыре, соответствующее эквивалентному вызову функции с использованием 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.24.2/reference/api/pandas.core.window.Rolling.corr.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API