Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.corr

DataFrame.corr(method='pearson', min_periods=1, numeric_only=False)

  Compute pairwise correlation of columns, excluding NA/null values.

  The result is a symmetric DataFrame where each element represents the correlation coefficient between two columns. By default, the Pearson correlation is computed, but Kendall and Spearman methods as well as arbitrary callables are also supported.

  Parameters:
    method{‘pearson’, ‘kendall’, ‘spearman’} or callable

      Method of correlation:

      - pearson : standard correlation coefficient

      - kendall : Kendall Tau correlation coefficient

      - spearman : Spearman rank correlation

      - callable: callable with input two 1d ndarrays

          and returning a float. Note that the returned matrix from corr will have 1 along the diagonals and will be symmetric regardless of the callable’s behavior.

    min_periods int, optional

      Minimum number of observations required per pair of columns to have a valid result. Currently only available for Pearson and Spearman correlation.

    numeric_only bool, default False

      Include only float, int or boolean data.

      Changed in version 2.0.0: The default value of `numeric_only` is now `False`.

  Returns:
    DataFrame

      Correlation matrix.

  See also

  `DataFrame.corrwith`

    Compute pairwise correlation with another DataFrame or Series.

  `Series.corr`

    Compute the correlation between two Series.

  Notes

  Pearson, Kendall and Spearman correlation are currently computed using pairwise complete observations.

  - Pearson correlation coefficient

  - Kendall rank correlation coefficient

  - Spearman’s rank correlation coefficient

  Examples

      >>> def histogram_intersection(a, b):
      ...     v = np.minimum(a, b).sum().round(decimals=1)
      ...     return v
      >>> df = pd.DataFrame(
      ...     [(0.2, 0.3), (0.0, 0.6), (0.6, 0.0), (0.2, 0.1)],
      ...     columns=["dogs", "cats"],
      ... )
      >>> df.corr(method=histogram_intersection)
            dogs  cats
      dogs   1.0   0.3
      cats   0.3   1.0

      >>> df = pd.DataFrame(
      ...     [(1, 1), (2, np.nan), (np.nan, 3), (4, 4)], columns=["dogs", "cats"]
      ... )
      >>> df.corr(min_periods=3)
            dogs  cats
      dogs   1.0   NaN
      cats   NaN   1.0