DataFrame.cov(min_periods=None)
计算列的成对协方差,不包括NA/null值。
计算DataFrame
系列之间的成对协方差。返回的数据帧是DataFrame
列的协方差矩阵。
NA和空值都会自动从计算中排除。(请参阅下面的注释,了解缺失值的偏差。)可以为创建的每个值的最小观察数设置阈值。与低于此阈值的观察结果的比较将返回为NaN。
该方法通常用于分析时间序列数据,以了解不同度量之间的关系。
参数: | min_periods : 每对列所需的最小观察数,以获得有效结果。 |
返回: | DataFrame DataFrame series的协方差矩阵。 |
Notes
返回DataFrame
时间序列的协方差矩阵。协方差由N-1
归一化。
对于具有丢失数据的Series的DataFrame
(假设数据随机丢失),返回的协方差矩阵将是成员Series之间的方差和协方差的无偏估计。
然而,对于许多应用,这种估计可能是不可接受的,因为估计协方差矩阵不能保证是正半正定的。这可能导致具有大于1
的绝对值的估计相关性和/或不可逆协方差矩阵。有关更多详细信息,请参阅协方差矩阵的估计。
例子
1)计算简单的协方差矩阵
import pandas as pd # 创建一个示例DataFrame data = { 'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1], 'C': [2, 2, 3, 4, 5] } df = pd.DataFrame(data) # 计算协方差矩阵 cov_matrix = df.cov() # 输出协方差矩阵 print(cov_matrix)
2)带有缺失值的情况
import pandas as pd import numpy as np # 创建一个包含缺失值的DataFrame data = { 'A': [1, 2, np.nan, 4, 5], 'B': [5, 4, 3, np.nan, 1], 'C': [2, np.nan, 3, 4, 5] } df = pd.DataFrame(data) # 计算协方差矩阵,考虑最小观察值数目 cov_matrix = df.cov(min_periods=3) # 输出协方差矩阵 print(cov_matrix)
3)使用自由度调整
import pandas as pd # 创建一个示例DataFrame data = { 'X': [10, 20, 30, 40], 'Y': [20, 30, 40, 50] } df = pd.DataFrame(data) # 使用不同的自由度计算协方差 cov_matrix_ddof1 = df.cov(ddof=1) # 默认 ddof=1 cov_matrix_ddof0 = df.cov(ddof=0) # ddof=0 # 输出协方差矩阵 print("Covariance matrix with ddof=1:\n", cov_matrix_ddof1) print("Covariance matrix with ddof=0:\n", cov_matrix_ddof0)
4)更大数据集的协方差计算
import pandas as np import numpy as np # 设置随机种子以确保结果可重复 np.random.seed(42) # 创建一个包含1000行和5列的随机数据的DataFrame df = pd.DataFrame(np.random.randn(1000, 5), columns=['a', 'b', 'c', 'd', 'e']) # 计算协方差矩阵 cov_matrix = df.cov() # 输出协方差矩阵 print(cov_matrix)