pandas.core.window.rolling.Rolling.corr#
- Rolling.corr(other=None, pairwise=None, ddof=1, numeric_only=False)[source]#
- Calculate the rolling correlation. - Parameters:
- otherSeries or DataFrame, optional
- If not supplied then will default to self and produce pairwise output. 
- pairwisebool, default None
- If False then only matching columns between self and other will be used and the output will be a DataFrame. If True then all pairwise combinations will be calculated and the output will be a MultiIndexed DataFrame in the case of DataFrame inputs. In the case of missing elements, only complete pairwise observations will be used. 
- ddofint, default 1
- Delta Degrees of Freedom. The divisor used in calculations is - N - ddof, where- Nrepresents the number of elements.
- numeric_onlybool, default False
- Include only float, int, boolean columns. - Added in version 1.5.0. 
 
- Returns:
- Series or DataFrame
- Return type is the same as the original object with - np.float64dtype.
 
 - See also - cov
- Similar method to calculate covariance. 
- numpy.corrcoef
- NumPy Pearson’s correlation calculation. 
- pandas.Series.rolling
- Calling rolling with Series data. 
- pandas.DataFrame.rolling
- Calling rolling with DataFrames. 
- pandas.Series.corr
- Aggregating corr for Series. 
- pandas.DataFrame.corr
- Aggregating corr for DataFrame. 
 - Notes - This function uses Pearson’s definition of correlation (https://en.wikipedia.org/wiki/Pearson_correlation_coefficient). - When other is not specified, the output will be self correlation (e.g. all 1’s), except for - DataFrameinputs with pairwise set to True.- Function will return - NaNfor correlations of equal valued sequences; this is the result of a 0/0 division error.- When pairwise is set to False, only matching columns between self and other will be used. - When pairwise is set to True, the output will be a MultiIndex DataFrame with the original index on the first level, and the other DataFrame columns on the second level. - In the case of missing elements, only complete pairwise observations will be used. - Examples - The below example shows a rolling calculation with a window size of four matching the equivalent function call using - 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 - The below example shows a similar rolling calculation on a DataFrame using the pairwise option. - >>> 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