Pandas 合并大型数据帧时 concat 函数超时

Pandas concat function timing out when combining large dataframes

我正在尝试合并总计超过 120,000 个特征和 206,000 行的三个数据框。所有三个数据框都是文档术语矩阵。这是代码:

new_df = pd.concat([df_1, df_2], axis = 1, sort = False)

如您所见,我正在使用 concat 函数跨水平轴组合三个数据帧。目前,Jupyter Notebook 在这段代码 运行 一段时间后超时并重新启动内核(我假设是因为功能数量)。非常感谢任何对减少这些数据帧大小或组合它们的方法的见解。

您检查错误信息了吗?是不是说内存错误?您可能没有足够的内存来容纳所有三个 + 组合数据帧。 此外,您不需要那么多功能。我强烈建议使用 PCASVD 或任何其他降维算法,并且只采用第一个假设 50 左右的组件在模型中使用。

首先,您的示例有两个数据框。其次,您的数据框将有 20 BILLION 个条目,我假设每个条目都超过一个字符,所以我们至少谈论 100GB 的数据。因此,除了 (a) 获得一台具有大量内存的机器或 (b) 按照评论中的建议进行降维之外,您真的无能为力。

尝试 SFrame 来自 https://github.com/apple/turicreate:

pip install -U turicreate

而不是

import pandas as pd
df = pd.read_csv(...)

用 SFrame 做这个,https://turi.com/products/create/docs/generated/graphlab.SFrame.html#graphlab.SFrame:

import turicreate as tc
sf1 = tc.SFrame.read_csv(...)
sf2 = tc.SFrame.read_csv(...)

然后连接 SFrames:

new_sf = sf1.append(sf2)

问:为什么 SFrame 适用于大号。数据行数,但不是 pandas?

答:https://www.youtube.com/watch?v=wUOMaKYtaMY

问:那为什么Pandas比SFrame更受欢迎呢?

答:*耸耸肩。