Во-первых, вам нужно поместить массив данных pandas в массив numpy, используя df.values .Например:
A = df.values
Было бы намного проще вычислить либо ковариационную матрицу, либо PCA, после того как вы поместите свои данные в массив с единым целым.Для получения дополнительной информации:
# import functions you need to compute covariance matrix from numpy
from numpy import array
from numpy import mean
from numpy import cov
from numpy.linalg import eig
# assume you load your data using pd.read_fwf to variable *df*
df = pd.read_fwf(filepath, widths=col_widths, names=col_names)
#put dataframe values to a numpy array
A = df.values
#check matrix A's shape, it should be (928991, 8)
print(A.shape)
# calculate the mean of each column
M = mean(A.T, axis=1)
print(M)
# center columns by subtracting column means
C = A - M
print(C)
# calculate covariance matrix of centered matrix
V = cov(C.T)
print(V)
# eigendecomposition of covariance matrix
values, vectors = eig(V)
print(vectors)
print(values)
# project data
P = vectors.T.dot(C.T)
print(P.T)
При выполнении примера сначала печатается исходная матрица, затем собственные векторы и собственные значения центрированной ковариационной матрицы, а затем, наконец, проекция исходной матрицы.Вот ссылка, которая может оказаться полезной для вашей задачи PCA .