如何从内存中删除多个大 pandas (python)数据帧以保存RAM? [英] How to delete multiple pandas (python) dataframes from memory to save RAM?

查看:959
本文介绍了如何从内存中删除多个大 pandas (python)数据帧以保存RAM?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



1)是否有一个仅列出的功能,当前加载到内存中的所有数据帧?



我尝试过dir(),但它提供了除数据框之外的许多其他对象。



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

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

&在del_df中为我运行

  
del(i)
/ pre>

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

  del Gender_dummies 
del col


解决方案

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



当您执行 del i 时,您将删除只是名字 - 但实例仍然绑定到一些其他名称,所以它不会是垃圾收集。



如果你想要释放内存,你的数据框必须是垃圾收集,即删除所有引用。



如果你动态地创建了日期帧列出,然后删除该列表将触发垃圾收集。

 >>> lst = [pd.DataFrame(),pd.DataFrame(),pd.DataFrame()] 
>>> del lst#memory被释放



如果你创建了一些变量,你将不得不全部删除它们。 / h2>

 >>> a,b,c = pd.DataFrame(),pd.DataFrame(),pd.DataFrame()
>>> lst = [a,b,c]
>>> del a,b,c#dfs仍然在列表
>>> del lst#memory release now


I have lot of dataframes created as part of preprocessing. Since I have limited 6GB ram, I want to delete all the unnecessary dataframes from RAM to avoid running out of memory when running GRIDSEARCHCV in scikit-learn.

1) Is there a function to list only, all the dataframes currently loaded in memory?

I tried dir() but it gives lot of other object other than dataframes.

2) I created a list of dataframes to delete

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

& ran

for i in del_df:
    del (i)

But its not deleting the dataframes. But deleting dataframes individially like below is deleting dataframe from memory.

del Gender_dummies
del col

解决方案

del statement does not delete an instance, it merely deletes a name.

When you do del i, you are deleting just the name i - but the instance is still bound to some other name, so it won't be Garbage-Collected.

If you want to release memory, your dataframes has to be Garbage-Collected, i.e. delete all references to them.

If you created your dateframes dynamically to list, then removing that list will trigger Garbage Collection.

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

If you created some variables, you will have to delete them all.

>>> 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

这篇关于如何从内存中删除多个大 pandas (python)数据帧以保存RAM?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆