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