una tablas panda notebook filas fila eliminar drop como columna borrar python memory-management pandas dataframe ram

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.

Reference


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