python - 无法从 pandas 转到 dask 数据帧,内存错误
问题描述
我有一个包含 700 万条记录的 pandas 数据框,我正在尝试创建一个 dask 数据框,但我一直遇到内存问题。
使用的代码:
dd_test = dd.from_pandas(df_lookup_table, npartitions=3)
错误信息:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Users\user\venv\lib\site-packages\dask\dataframe\io\io.py", line 181, in from_pandas
name = name or ('from_pandas-' + tokenize(data, chunksize))
File "C:\Users\user\venv\lib\site-packages\dask\base.py", line 600, in tokenize
return md5(str(tuple(map(normalize_token, args))).encode()).hexdigest()
File "C:\Users\user\venv\lib\site-packages\dask\utils.py", line 413, in __call__
return meth(arg, *args, **kwargs)
File "C:\Users\user\venv\lib\site-packages\dask\base.py", line 710, in normalize_dataframe
return list(map(normalize_token, data))
File "C:\Users\user\venv\lib\site-packages\dask\utils.py", line 413, in __call__
return meth(arg, *args, **kwargs)
File "C:\Users\user\venv\lib\site-packages\dask\base.py", line 734, in normalize_array
x.flat]))
MemoryError
我能够使用较小的数据框创建一个 dask 数据框。如何从这个 pandas 数据框创建一个 dask 数据框?
解决方案
dask 的重点是能够处理不适合内存的数据。在这种情况下,您首先将数据集加载到内存中,然后再将其传递给 dask。相反,您应该使用 dask 直接加载数据。例如,如果您使用pandas.read_csv
,则应将其切换为dask.dataframe.read_csv
。
推荐阅读
- javascript - vue-html-to-paper 与 Vue3
- apache-kafka - Kafka消费者轮询间隔
- azure-ad-b2c - 在 ADB2C 注册后强制用户登录
- flutter - Flutter 如何将附加参数传递给 Function(BuildContext) 回调
- r - 将不相等数组的列转换为R中的单个值列
- snowflake-cloud-data-platform - 雪花摄取管道 - 自动从源中删除摄取文件?
- arrays - 为什么我尝试使用我(for-next)存储范围名称的变体变量来引用命名范围失败?
- azure - Azure DevOps 发布任务故意停止发布
- node.js - 放入html数据集中后如何获得没有引号的普通数组
- python - 试图抓取网页以获取所有链接,但获得的所有链接都是网页的 url 本身