Dask concatenate导致内存错误,而pandas concatenate不针对相同的文件

2024-05-20 13:43:18 发布

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

我正在尝试连接几个dask数据帧,但这会导致我的所有RAM被耗尽,并使我的环境(googlecolab)崩溃。在

我尝试过与Dask连接,因为我听说Dask会对文件进行分区,以便它更容易地加载到内存中。然而,熊猫能够处理他的手术,而达斯克却不能。在

我之所以使用Dask是因为当我试图保存Pandas数据帧时,我的环境崩溃了。所以我想看看Dask是否能够在不崩溃的情况下保存我的数据,但我还是坚持创建我的数据帧。在

combA = np.load(file2A.format(0) , allow_pickle=True)
combB = np.load(file2B.format(0), allow_pickle=True )
combC = np.load(file2C.format(0), allow_pickle=True )
combD = np.load(file2D.format(0) , allow_pickle=True)
combE = np.load(file2E.format(0) , allow_pickle=True )
combF = np.load(file2F.format(0), allow_pickle=True )

dfAllA = dd.from_pandas(pd.DataFrame(combA), npartitions=10)
dfAllB = dd.from_pandas(pd.DataFrame(combB), npartitions=10)
dfAllC = dd.from_pandas(pd.DataFrame(combC), npartitions=10)
dfAllD = dd.from_pandas(pd.DataFrame(combD), npartitions=10)
dfAllE = dd.from_pandas(pd.DataFrame(combE), npartitions=10)
dfAllF = dd.from_pandas(pd.DataFrame(combF), npartitions=10)

dfAllT = dd.concat([dfAllA, dfAllB, dfAllC, dfAllD, dfAllE, dfAllF ], interleave_partitions=True)

我想在没有内存错误的情况下执行连接。在

从下面的答案来看,我应该定义一个函数来执行日期的加载和连接,并将其输入到达斯克。延迟函数,并对这些函数执行do.compute()

有点像

^{pr2}$

但是,当我试着

dfAllT.head()

我明白了

NameError: name 'dfAllT' is not defined


Tags: 数据fromtrueformatdataframepandasnpload
1条回答
网友
1楼 · 发布于 2024-05-20 13:43:18

您当前正在将所有数据加载到RAM中,然后将其交给Dask。如果您的所有数据在第一次启动时就已经充满了RAM,那么Dask并不能为您提供太多帮助。在

相反,最好告诉Dask如何加载数据,并让它在正确的时间进行加载。本文档可能会为您指出正确的方向:https://docs.dask.org/en/latest/delayed-collections.html这里是一个旧示例https://gist.github.com/mrocklin/e7b7b3a65f2835cda813096332ec73ca

相关问题 更多 >