Dask DataFrame是否适用于大型Pandas DataFrame?

问题描述 投票:0回答:1

我想使用Dask来处理大型数据帧。但是,当我尝试使用它时,我得到一个内存错误,如下所示。

df = pandas.DataFrame({'x': my_very_large_array})
ddf = dask.dataframe.from_pandas(df, npartitions=100)

我认为Dask应该处理比内存数据更大的数据。这有什么不对?

python pandas dask
1个回答
2
投票

在你到达Dask之前,你的代码可能会失败。如果您有一个非常大的Pandas数据帧,那么您已经遇到了麻烦。在这种情况下,Dask无法帮助你。

df = pandas.DataFrame({'x': my_very_large_array})      # maybe you're failing here
ddf = dask.dataframe.from_pandas(df, npartitions=100)  # rather than here

相反,人们更常见的是将数据直接读入Dask数据帧而不是通过Pandas路由。他们经常使用像dask.dataframe.read_csvdask.dataframe.read_parquet这样的函数将他们的大数据集直接加载到Dask中。这有助于他们避免必须首先将所有数据加载到Pandas中,这需要他们的数据集适合内存。

有关创建Dask数据帧的更多信息,请访问:https://docs.dask.org/en/latest/dataframe-create.html

如果你确实在第二行遇到错误,那么我的猜测是你占用了大约50%的内存,并且Dask分割你的数据会导致副本。在这种情况下,解决方案是相同的,不要将数据加载到Pandas中,然后将其移动到Dask。如果您的数据适合内存,请使用Pandas。如果没有,那么你应该找到加载它的方法,而不是一次将它全部放入内存。

© www.soinside.com 2019 - 2024. All rights reserved.