我有一个数据集,它有一个DateTime索引,我正在使用sklearn的PCA来减少维数。
以下问题让我感到困惑 - PCA会保留系列中各点的顺序,以便我可以重用原始数据框中的索引吗?
df = pd.DataFrame(...)
df2 = pca.fit_transform(df)
df2.index = df.index
此外,还有比这更好(更安全)的方法吗?
答案 0 :(得分:0)
虽然PCA删除了索引,但行的基本顺序仍然存在(请参阅PCA *的转换函数的实现)。因此,使用df2.index = df1.index
是安全的* fit_transform与fit相同然后变换。他们都没有对行重新排序。
答案 1 :(得分:0)
此外,还有比这更好(更安全)的方法吗?
您所做的是安全的。但是 cleaner 的一种实现方法是将输出包装在$data = [
'title' => $title,
'name' => $name,
'date' => $date
];
$db->table('mytable')->insert($data);
或DataFrame
中并提供原始索引。在您的示例中:
Series
这在处理sci-kit学习模型中的预测向量(np.ndarrays)时非常有用:
df = pd.DataFrame(...)
df2 = pd.DataFrame(pca.fit_transform(df), index=df.index)
当您拥有更复杂的索引(例如MultiIndex
)时,这一点很重要。