如何从内存中删除多个熊猫(python)数据帧以节省内存?

新手上路,请多包涵

作为预处理的一部分,我创建了很多数据帧。由于我有 6GB 内存限制,我想从 RAM 中删除所有不必要的数据帧,以避免在 scikit-learn 中运行 GRIDSEARCHCV 时内存不足。

1)是否有只列出内存中当前加载的所有数据帧的功能?

我尝试了 dir() 但它提供了除数据帧以外的许多其他对象。

2)我创建了一个要删除的数据框列表

del_df=[Gender_dummies,
 capsule_trans,
 col,
 concat_df_list,
 coup_CAPSULE_dummies]

&跑

for i in del_df:
    del (i)

但它不会删除数据框。但是像下面这样单独删除数据帧就是从内存中删除数据帧。

 del Gender_dummies
del col

原文由 GeorgeOfTheRF 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 525
1 个回答

del 语句不删除一个实例,它只是删除一个名称。

当您执行 del i 时,您只是删除了名称 i - 但该实例仍绑定到其他名称,因此它不会被垃圾收集。

如果你想释放内存,你的数据帧必须是 Garbage-Collected ,即删除对它们的所有引用。

如果您动态创建日期帧以列出,则删除该列表将触发垃圾收集。

 >>> lst = [pd.DataFrame(), pd.DataFrame(), pd.DataFrame()]
>>> del lst     # memory is released

如果您创建了一些变量,则必须将它们全部删除。

 >>> a, b, c = pd.DataFrame(), pd.DataFrame(), pd.DataFrame()
>>> lst = [a, b, c]
>>> del a, b, c # dfs still in list
>>> del lst     # memory release now

原文由 pacholik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题