tablas - ¿Cómo eliminar varios marcos de datos de pandas(python) de la memoria para guardar RAM?
pandas drop (3)
Tengo muchos marcos de datos creados como parte del preprocesamiento. Como tengo un RAM limitado de 6GB, quiero eliminar todos los marcos de datos innecesarios de la RAM para evitar quedarse sin memoria cuando se ejecuta GRIDSEARCHCV en scikit-learn.
1) ¿Hay una función para listar solo, todos los marcos de datos cargados actualmente en la memoria?
Intenté con dir () pero da muchos otros objetos además de los marcos de datos.
2) He creado una lista de marcos de datos para eliminar
del_df=[Gender_dummies,
capsule_trans,
col,
concat_df_list,
coup_CAPSULE_dummies]
& corrió
for i in del_df:
del (i)
Pero no es eliminar los marcos de datos. Pero eliminar cuadros de datos individualmente como a continuación es eliminar marcos de datos de la memoria.
del Gender_dummies
del col
del
declaración del
no elimina una instancia, simplemente elimina un nombre.
Cuando lo hace, solo está eliminando el nombre i , pero la instancia todavía está vinculada a algún otro nombre, por lo que no se recogerá en la basura.
Si desea liberar memoria, sus marcos de datos deben ser recolectados como basura , es decir, eliminar todas las referencias a ellos.
Si creó sus marcos de fecha dinámicamente en la lista, al eliminar esa lista se activará la recolección de basura.
>>> lst = [pd.DataFrame(), pd.DataFrame(), pd.DataFrame()]
>>> del lst # memory is released
Si creaste algunas variables, tienes que eliminarlas todas.
>>> 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
En python, la recolección automática de basura desasigna la variable (pandas DataFrame también es otro objeto en términos de python). Existen diferentes estrategias de recolección de basura que se pueden modificar (requiere un aprendizaje significativo).
Puede activar manualmente la recolección de basura utilizando
import gc
gc.collect()
Pero las llamadas frecuentes a la recolección de basura no se recomiendan, ya que es una operación costosa y puede afectar el rendimiento.
Esto eliminará el marco de datos y liberará la memoria RAM /
del [[df_1,df_2]]
gc.collect()
df_1=pd.DataFrame()
df_2=pd.DataFrame()