Я выполнил анализ PCA для имеющегося у меня кадра данных, но по какой-то причине, когда я пытаюсь построить его, я получаю сообщение об ошибке keyValue, даже если я правильно скопировал имя столбца.
Так я вычисляю PCA:
#The libraries I have used
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from sklearn.decomposition import PCA
from scipy.stats import zscore
from scipy.signal import savgol_filter
from sklearn.manifold import TSNE
import seaborn as sns
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
from sklearn.decomposition import PCA
#PCA function
def pca_func(df):
pca=PCA(n_components=3)
df_PCA = pca.fit_transform(df)
df_PCA = pd.DataFrame(df_PCA)
df_PCA.index = df.index
df_PCA.columns = ['PCA 1','PCA 2','PCA 3']
return df_PCA
def StandardNormalVariate(df):
SNV_df = df.T.apply(zscore).round(3)
SNV_df = SNV_df.T
SNV_df.index= df.index
SNV_df.columns = df.columns
return SNV_df
#PCA
df_time.reset_index(inplace=True, drop=True)
df_PCA=pca_func(StandardNormalVariate(df_time.iloc[:,17:]))
df_PCA_merged=pd.merge(df_PCA, df_time, left_index=True, right_index=True)
df_PCA_merged.head()
Для этой части я получаю свой фрейм данных с правильными столбцами:
, но затем, когда я пытаюсь построить, это не работает :
ax = plt.figure(figsize=(16,10)).gca(projection='3d')
ax.scatter(
xs=df_PCA_merged.loc['PCA 1'],
ys=df_PCA_merged.loc['PCA 2'],
zs=df_PCA_merged.loc['PCA 3'],
cmap='tab10'
)
ax.set_xlabel('pca-one')
ax.set_ylabel('pca-two')
ax.set_zlabel('pca-three')
plt.show()
KeyError: 'PCA 1'
В чем может быть причина этой ошибки? как я могу это решить?
Моя цель - создать трехмерную диаграмму из трех компонентов.