数据帧上的滚动PCA

2024-06-26 14:45:29 发布

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

我已经尝试过可用的解决方案,但它不起作用。 我试图在一个数据帧上计算滚动PCA,并在另一个数据帧中返回结果。我尝试过下面的代码与df.rolling(200).apply(my_pca)结合使用,但它只计算1个结果

def my_pca(data):
    pca = PCA(n_components=1)
    transf = pca.fit_transform(data)
    pcadf = pd.DataFrame(pca.components_[0,:]).T
    return pcadf

问题-我想存储所有滚动pca.components_[0,:](这些只是PC1的加载)。我如何用最近200天的数据计算每天的负荷

我的数据是1000行10列,索引为日期。因此,第一次PCA将从使用最后200天数据计算的第200天开始,并且pca.components_[0,:]的结果应存储在一个新的数据框中,该数据框具有与数据相同的日期索引和10列,每列显示pca.components_[0,:]的结果。最后,新的数据帧应该显示800pca.components_[0,:]的时间序列


Tags: 数据代码dfdatamydefcomponents解决方案