我试图连接多个dask数据帧,但这会导致我的所有RAM用尽,并使我的环境(Google Colab)崩溃。
我曾尝试与Dask并置,因为我听说Dask对文件进行了分区,以便更轻松地将其加载到内存中。但是,Pandas可以处理他的操作,而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)
我想执行串联操作而不会出现内存错误。
答案 0 :(得分:1)
您当前正在将所有数据加载到RAM中,然后将其交给Dask。如果您的所有数据在第一次启动时就已经占满RAM,那么Dask并不能为您提供任何帮助。
相反,告诉Dask如何加载数据并让它在正确的时间进行加载要好得多。本文档可能会为您指明正确的方向:https://docs.dask.org/en/latest/delayed-collections.html,这是一个旧示例https://gist.github.com/mrocklin/e7b7b3a65f2835cda813096332ec73ca