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

2024-06-02 12:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我将一个数据集放入一个包含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

enter image description here

当我试图用下面的代码得到协方差矩阵时,我只得到了一个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

enter image description here

谢谢


Tags: 数据代码onlypandasdfwith矩阵特征
1条回答
网友
1楼 · 发布于 2024-06-02 12:30:12

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

cov_processed_df = processed_df.astype(float).cov()

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

print(processed_df.dtypes)

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

相关问题 更多 >