【问题标题】:Does Dask DataFrame work with large Pandas DataFrames?Dask DataFrame 是否适用于大型 Pandas DataFrame?
【发布时间】:2023-03-07 13:33:01
【问题描述】:

我想使用 Dask 来处理大型数据帧。但是,当我尝试按如下方式使用它时出现内存错误。

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

我认为 Dask 应该处理大于内存的数据。这里有什么问题?

【问题讨论】:

    标签: python pandas dask


    【解决方案1】:

    在您到达 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。如果没有,那么您可能应该找到加载它的方法,而不是一次将其全部放入内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 2016-10-02
      • 2020-05-16
      相关资源
      最近更新 更多