upby.html)
  * [ Resampling ](../resampling.html)
  * [ Style ](../style.html)
  * [ Plotting ](../plotting.html)
  * [ Options and settings ](../options.html)
  * [ Extensions ](../extensions.html)
  * [ Testing ](../testing.html)
  * [ Missing values ](../missing_value.html)

  * [ __ ](../../index.html)
  * [ API reference ](../index.html)
  * [ DataFrame ](../frame.html)
  * pandas.DataFrame.cov 

#  pandas.DataFrame.cov  #

DataFrame.  cov  (  _ min_periods  =  None  _ , _ ddof  =  1  _ , _
numeric_only  =  False  _ )  [ [source]  ](https://github.com/pandas-
dev/pandas/blob/v2.2.2/pandas/core/frame.py#L11089-L11217) #

    

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

Compute the pairwise covariance among the series of a DataFrame. The returned
data frame is the [ covariance matrix
](https://en.wikipedia.org/wiki/Covariance_matrix) of the columns of the
DataFrame.

Both NA and null values are automatically excluded from the calculation. (See
the note below about bias from missing values.) A threshold can be set for the
minimum number of observations for each value created. Comparisons with
observations below this threshold will be returned as ` NaN  ` .

This method is generally used for the analysis of time series data to
understand the relationship between different measures across time.

Parameters  :

    

**min_periods** int, optional

    

Minimum number of observations required per pair of columns to have a valid
result.

**ddof** int, default 1

    

Delta degrees of freedom. The divisor used in calculations is ` N  -  ddof  `
, where ` N  ` represents the number of elements. This argument is applicable
only when no ` nan  ` is in the dataframe.

**numeric_only** bool, default False

    

Include only  float  ,  int  or  boolean  data.

New in version 1.5.0.

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

Returns  :

    

DataFrame

    

The covariance matrix of the series of the DataFrame.

See also

[ ` Series.cov  ` ](pandas.Series.cov.html#pandas.Series.cov
"pandas.Series.cov")

    

Compute covariance with another Series.

[ ` core.window.ewm.ExponentialMovingWindow.cov  `
](pandas.core.window.ewm.ExponentialMovingWindow.cov.html#pandas.core.window.ewm.ExponentialMovingWindow.cov
"pandas.core.window.ewm.ExponentialMovingWindow.cov")

    

Exponential weighted sample covariance.

[ ` core.window.expanding.Expanding.cov  `
](pandas.core.window.expanding.Expanding.cov.html#pandas.core.window.expanding.Expanding.cov
"pandas.core.window.expanding.Expanding.cov")

    

Expanding sample covariance.

[ ` core.window.rolling.Rolling.cov  `
](pandas.core.window.rolling.Rolling.cov.html#pandas.core.window.rolling.Rolling.cov
"pandas.core.window.rolling.Rolling.cov")

    

Rolling sample covariance.

Notes

Returns the covariance matrix of the DataFrameâs time series. The covariance
is normalized by N-ddof.

For DataFrames that have Series that are missing data (assuming that data is [
missing at random
](https://en.wikipedia.org/wiki/Missing_data#Missing_at_random) ) the returned
covariance matrix will be an unbiased estimate of the variance and covariance
between the member Series.

However, for many applications this estimate may not be acceptable because the
estimate covariance matrix is not guaranteed to be positive semi-definite.
This could lead to estimate correlations having absolute values which are
greater than one, and/or a non-invertible covariance matrix. See [ Estimation
of covariance matrices
](https://en.wikipedia.org/w/index.php?title=Estimation_of_covariance_matrices)
for more details.

Examples

    
    
    >>> df = pd.DataFrame([(1, 2), (0, 3), (2, 0), (1, 1)],
    ...                   columns=['dogs', 'cats'])
    >>> df.cov()
              dogs      cats
    dogs  0.666667 -1.000000
    cats -1.000000  1.666667
    
    
    
    >>> np.random.seed(42)
    >>> df = pd.DataFrame(np.random.randn(1000, 5),
    ...