Almacenar variables en Jupyter

Publicado el 30 enero 2023 por Daniel Rodríguez @analyticslane

Durante una sesión de trabajo en un Notebook de Jupyter los diferentes resultados que se obtengan se pueden almacenar las variables y recuperarlos posteriormente. Aunque, una vez se cierre el Notebook o se reinicie el núcleo (kernel) de IPython, los valores se pierden ya que solamente están almacenados en memoria. Cuando se necesita persistencia de datos se pueden almacenar estos en archivos externos. Para lo que se puede usar archivos CSV, Microsoft Excel, JSON o de texto plano. Aunque si se desea guardar los valores entre sesiones la mejor opción es almacenar variables en Jupyter con el comando mágico de IPython %store.

El comando mágico %store de IPython

En IPython el comando mágico %store permite almacenar y recuperar cualquier variable que exista en una sesión en una base de datos. La cual se almacena en la carpeta ~/.ipython/profile_default/db/autorestore/. Esto es, es una base de datos de IPython y, por lo tanto, los valores aquí almacenados se pueden recuperar en cualquier sesión de IPython, incluidas las que se inician en un Notebook.

Para almacenar una variable solamente se debe escribir un comando como el siguiente en una celda:

%store variable

Reemplazando variable por el nombre de la variable que se desea guardar en la base de datos. El día que se necesite recuperar los valores de la variable solamente se debe escribir en una celda el siguiente comando:

%store -r variable

Lo que recuperará el valor original, sea este un número, una lista, un diccionario, un DataFrame o cualquier otro objeto.

Otros usos del comando mágico %store

Además de las funciones básicas de %store guardar y recuperar variables también dispone de otras funciones para gestionar los datos almacenados. Algunas de las funciones que se pueden realizar con este comando son:

  • Guardar múltiples variables en la base de datos de IPython: %store var1 var2
  • Actualización de los valores de una o varias variables: %store -r var1
  • Listado de todas las variables almacenadas en la base de datos junto a sus valres: %store
  • Borrado de una o varias variables de la base de datos: %store -d var1
  • Borrado de todas las variables de la base de datos: %store -z
  • Guardado de las variables en un archivo %store var1 > var1.txt

En todos los casos se debe reemplazar los valores var1 y var2 por el nombre de las variables que se deseen guardar.

Conclusiones

El comando mágico %store de IPython permite almacenar las variables en Jupyter de una forma fácil y eficiente. Evitando la necesidad de gestionar archivos. Por lo que es una solución óptima para guardar valores temporales (por ejemplo, los resultados de un Notebook que se necesita cerrar) o valores que se deben guardar entre diferentes sesiones (por ejemplo, constantes o parámetros de configuración de acceso a recursos externos como bases de datos o APIs). Aunque es importante notar que los datos no se almacenan de forma segura, cualquiera con acceso al disco los podría leer, por lo que no es sitio adecuado para almacenar credenciales.

Imagen de Miguel Á. Padriñán en Pixabay