Python 使用数据帧计算不同特征之间的协方差矩阵

Python 使用数据帧计算不同特征之间的协方差矩阵,python,pandas,dataframe,covariance,Python,Pandas,Dataframe,Covariance,我将一个数据集放入一个包含9组特征和249行的pandas数据框中,我希望得到9个特征之间的协方差矩阵(生成一个9 X 9矩阵),但是,当我使用df.cov()函数时,我只得到一个3 X 3矩阵。我做错了什么 谢谢 下面是我的代码片段 # perform data preprocessing # only get players with MPG with less than 20 and only select the required colums MPG_df = df.loc[df['M

我将一个数据集放入一个包含9组特征和249行的pandas数据框中,我希望得到9个特征之间的协方差矩阵(生成一个9 X 9矩阵),但是,当我使用df.cov()函数时,我只得到一个3 X 3矩阵。我做错了什么

谢谢

下面是我的代码片段

# perform data preprocessing
# only get players with MPG with less than 20 and only select the required colums
MPG_df = df.loc[df['MPG'] >= 20]
processed_df = MPG_df[["FT%", "2P%", "3P%", "PPG", "RPG", "APG", "SPG", "BPG", "TOPG"]]
processed_df

当我试图用下面的代码得到协方差矩阵时,我只得到了一个3x3矩阵

#desired result
cov_processed_df = df = pandas.DataFrame(processed_df, columns=['FT%', '2P%', '3P%', 'PPG', 'RPG', 'APG', 'SPG', 'BPG', 'TOPG']).cov()
cov_processed_df


谢谢

排除的列可能是非数字的(即使它们看起来是这样的!)。试一试

要查看原始df的数据类型,可以运行:

print(processed_df.dtypes)

如果在结果中看到
“object”
,则表示这些列不是数字。(即使它们至少包含1个非数字数据,也会标记为非数字。)

排除的列可能是非数字的。尝试
cov\u processed\u df=processed\u df.astype(float.cov()
很高兴它成功了!我决定写一个答案,包括更多关于原因的细节。
print(processed_df.dtypes)