运行pd.concat触发MemoryError内存分配错误,如何调整虚拟内存解决?
虚拟内存配置方案
- 取消多分区虚拟内存设置:不要拆分虚拟内存到C、D两个盘,选择剩余空间≥30GB的分区单独设置虚拟内存,另一分区设置为「无分页文件」,避免跨分区读取导致的连续内存块分配失败问题。
- 调整虚拟内存数值:自定义大小的最小值设为物理内存的1.5倍即16500MB,最大值设为物理内存的3倍即33000MB,点击「设置」保存后重启设备生效。
代码优化方案(优先执行,比调整虚拟内存生效更快、运行效率更高)
- 优化独热编码数据类型:独热编码结果只有0、1两个取值,不需要使用默认的float64类型,生成
loan_data_dummies时指定dtype为uint8,示例代码:
loan_data_dummies = pd.get_dummies(你的原始分类数据, dtype='uint8')
修改后该部分内存占用直接降为原来的1/8,原本需要的1.82GiB内存会降到230MiB左右,可直接规避内存分配报错。
- 拼接前清理冗余数据:如果
loan_data中仍保留生成loan_data_dummies所用的原始分类列,拼接前先删除这些无用列,减少无效内存占用。 - 避免全量加载数据:如果数据集本身超过物理内存大小,可采用分块加载、分块处理的方式完成特征拼接。
内容的提问来源于stack exchange,提问作者Skittles
相关产品推荐
相关产品推荐

