python - Dask DataFrame 是否适用于大型 Pandas DataFrame?
问题描述
我想使用 Dask 来处理大型数据帧。但是,当我尝试按如下方式使用它时出现内存错误。
df = pandas.DataFrame({'x': my_very_large_array})
ddf = dask.dataframe.from_pandas(df, npartitions=100)
我认为 Dask 应该处理比内存更大的数据。这里有什么问题?
解决方案
在您到达 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_csv
或dask.dataframe.read_parquet
将他们的大型数据集直接加载到 Dask 的函数。这有助于他们避免必须首先将所有数据加载到 Pandas 中,这需要他们的数据集适合内存。
有关创建 Dask 数据框的更多信息,请访问:https ://docs.dask.org/en/latest/dataframe-create.html
如果您确实在第二行遇到错误,那么我的猜测是您的内存使用量大约为 50%,并且 Dask 对数据的拆分会导致复制。在这种情况下,解决方案是相同的,不要将数据加载到 Pandas 中,然后将其移动到 Dask。如果您的数据适合内存,请使用 Pandas。如果没有,那么您可能应该找到加载它的方法,而不是一次将其全部放入内存。
推荐阅读
- reactjs - NPX create-react-app 的问题。一直卡在“发现 0 个漏洞”
- php - PHP + MS SQL Server:嵌套存储过程的作用与直接在数据库上运行时不同
- node.js - useEffect 中的 socket.io 产生代理错误(ECONNRESET)
- python - AttributeError:“int”对象没有属性“save1”
- ant-media-server - 如何在 aarch64 上搭建 ant 媒体服务器
- php - 如何在 CodeIgniter 4 中基于 ENVIRONMENT 定义 baseURL
- typescript - Typescript:在 .d.ts 文件中声明一个类型并在不导入的情况下使用它
- java - 如何将数字格式化为点
- javascript - Vue js 将所有文本放入一个json文件并导入
- django - 从主页打开链接时,网址翻倍。(django)