Por qué estoy haciendo el cambio a los portátiles marimo

Después de usar Jupyter Lab, trasladé la mayor parte de mi trabajo a los cuadernos marimo, un nuevo tipo de cuaderno Python que aborda muchos problemas de larga data con los tradicionales. Este artículo cubre las razones detrás de mi transición y cómo marimo encaja naturalmente en mi flujo de trabajo actual, con total gratitud al Proyecto Jupyter por construir el ecosistema de portátiles que dio forma a la ciencia de datos, la investigación y la educación.

Un poco de trasfondo

He pasado años dentro de cuadernos. Durante mucho tiempo, mi configuración fue una combinación de Jupyter Notebooks/Lab para experimentos locales y Google Colab para trabajo en la nube o GPU, gracias a su opción de nivel gratuito. Incluso he escrito muchos blogs sobre cómo aprovechar al máximo estos cuadernos, donde he compartido consejos para ir más allá de la forma normal de usarlos.

Dicho esto, ha habido ciertos problemas con estos portátiles tradicionales, el mayor de los cuales es la reactividad (o más bien, la falta de ella). El estado oculto, la ejecución fuera de orden y las repeticiones manuales fueron algunos de mis puntos débiles con estos cuadernos.

Eso cambió cuando descubrí marimo, una alternativa de código abierto para los portátiles Jupyter en la que puedes ejecutar celdas, realizar cálculos y crear gráficos tal como lo harías en Jupyter. Pero en el fondo, funciona de manera muy diferente y soluciona muchos problemas de larga data. La diferencia clave es que un cuaderno marimo es solo un archivo Python, lo que lo convierte en un mejor cuaderno y un mejor entorno de codificación para cualquiera que use Python. En este artículo, comparto diez razones detrás de mi cambio y por qué trabajar con portátiles ha sido mucho más sencillo para mí desde que pasé a marimo.

Si desea seguir adelante, instale marimo como se muestra a continuación. Este comando inicia el editor marimo y abre la computadora portátil en modo sandbox, que funciona como un entorno virtual liviano que mantiene su computadora portátil aislada del resto de su sistema. También puede utilizar marimo.new para iniciar un nuevo cuaderno en el patio de juegos en línea. Para obtener instrucciones detalladas, consulte la documentación.

pip instalar marimo marimo editar –sandbox notebook.py

1. Reactividad que finalmente soluciona los problemas del estado oculto.

Los cuadernos tradicionales no son reactivos. Esto significa que si cambio algo en una celda, nada más se actualiza por sí solo. A menudo termino volviendo a ejecutarlos solo para mantener la coherencia de los resultados. Por ejemplo, considere el Jupyter Notebook a continuación, donde a la izquierda defino dos variables, a y b, las sumo para obtener una tercera variable c y luego muestro el valor de c, que es 30.

En un cuaderno tradicional, cambiar el valor de a no actualiza c automáticamente. La salida permanece obsoleta hasta que usted vuelve a ejecutar las celdas, que es el problema del estado oculto en acción | Imagen por autor

Ahora, si cambiara a a 20 como se muestra a la derecha, c aún mostraría 30 a menos que volviera a ejecutar la celda. Esa falta de coincidencia entre el código y la salida es el clásico problema del estado oculto.

Marimo soluciona este problema con la ejecución reactiva, donde cada celda es parte de un gráfico de dependencia (DAG). Los cambios en una celda activan automáticamente actualizaciones en las celdas dependientes. Entonces, cuando a cambia, marimo reevalúa las células dependientes. Vea cómo c se actualiza automáticamente cuando se cambia el valor de a.

En marimo, cambiar a actualiza c instantáneamente porque el portátil es reactivo y mantiene todas las celdas sincronizadas | Imagen por autor

Esto mantiene mi código y mis resultados perfectamente sincronizados y significa que puedo compartir mis cuadernos con otras personas sin preocuparme por el orden en que se ejecutan.

¿Pero debería actualizarse cada celda automáticamente? No siempre. Algunas células son caras de ejecutar, como las que implican entrenamiento de aprendizaje automático o procesamiento intensivo de datos. La buena noticia es que marimo admite la ejecución diferida, lo que le permite desactivar las actualizaciones automáticas y activar dichas celdas sólo cuando sea necesario.

2. El orden de las celdas ya no interrumpe mi flujo de trabajo

Dado que los cuadernos marimo ejecutan celdas en función de relaciones variables y no de su orden en la página, esto me da la libertad de organizar mi código de una manera que tenga sentido para mí. Por ejemplo, puedo colocar todas mis importaciones y funciones auxiliares en la parte inferior para mantener limpio el espacio de trabajo.

Esto también abre algunos casos de uso divertidos. He usado esto para crear pequeños cuestionarios con calificación automática donde la clave de respuestas se encuentra en la parte inferior del cuaderno. El cuestionario aún funciona bien porque el orden de las celdas no importa y las respuestas no son visibles de inmediato para la persona que realiza el cuestionario. (Y sí, marimo también viene con un modo oscuro 😃).

Una demostración rápida de un cuestionario con calificación automática fue posible porque el orden de las celdas no importa. | Imagen por autor

3. Es básicamente un archivo Python oculto.

Dado que cada cuaderno de marimo se almacena como un archivo Python puro, resuelve mi problema de larga data con el control de versiones en Git. Finalmente puedo realizar un seguimiento limpio de los cambios sin tener que lidiar con complicadas diferencias JSON. El portátil también se vuelve mucho más flexible. Puedo reutilizarlo como un script, ejecutarlo desde la línea de comandos o incluso convertirlo en una pequeña aplicación interactiva sin cambiar nada.

A continuación, el lado derecho muestra la vista del cuaderno marimo, mientras que el lado izquierdo muestra el mismo cuaderno abierto como un archivo Python normal en un editor.

Mismo cuaderno, dos vistas: la fuente Python a la izquierda y su cuaderno marimo interactivo a la derecha | Imagen por autor

4. Puedo convertir fácilmente mis Notebooks en aplicaciones

Convertir un cuaderno marimo en una aplicación interactiva también es fácil. Puedo cambiar entre el modo de edición y la vista de aplicación con un solo clic y nunca tengo que reescribir mi código ni agregar nada adicional.

A continuación se muestra un cuaderno de ejemplo que convierte temperaturas de Celsius a Fahrenheit. El mismo cuaderno se puede ver en el modo de aplicación usando el diseño vertical predeterminado.

Alternar entre el modo de edición y la vista de aplicaciones con un solo clic | Imagen por autor

Esta característica es especialmente útil para crear blogs interactivos, tutoriales y recorridos educativos para bibliotecas. Si alguna vez ha leído AI Explorables, conocerá la sensación de interactuar con el contenido en lugar de simplemente leerlo. Marimo ofrece una sensación similar y el diseño de cuadrícula lo hace aún mejor, ya que puedo arrastrar y soltar resultados para organizar la aplicación como quiero.

Uso del diseño de cuadrícula para personalizar la visualización de la aplicación en marimo | Imagen por autor

5. Administrador de paquetes eficiente, para que no haya más dolores de cabeza por dependencias

Marimo viene con un administrador de paquetes incorporado que me permite instalar las bibliotecas que faltan directamente desde la computadora portátil. Si un módulo no está disponible, marimo muestra un pequeño mensaje y puedo instalarlo con un clic. Esto elimina el habitual ir y venir con los terminales.

administrador de paquetes incorporado en marimo | Imagen por autor

Marimo también se ocupa de la reproducibilidad por mí. Cuando ejecuto un cuaderno con el indicador –sandbox, realiza un seguimiento de todos los paquetes y sus versiones exactas y los guarda dentro del archivo del cuaderno como un comentario de nivel superior. No es necesario un archivo de requisitos.txt separado porque el portátil ya incluye todo lo que necesita.

Los metadatos de dependencia se encuentran dentro del propio cuaderno y se muestran claramente cuando abre el archivo marimo como un script Python normal. | Imagen por autor

6. Utilidades integradas para trabajar con DataFrames.

Si pasa mucho tiempo explorando datos, esta es una de esas características que inmediatamente se siente como una bendición. Cuando muestra un marco de datos en marimo, la vista predeterminada es completamente interactiva y viene con varias herramientas útiles listas para usar, como desplazamiento, paginación, histogramas automáticos para columnas numéricas y clasificación y filtrado simples desde los encabezados de las columnas. Para mí, esto acelera el proceso de EDA, ya que la exploración visual a menudo proporciona mejores conocimientos.

Vista interactiva de marco de datos en marimo con clasificación, filtrado e histogramas integrados | Imagen de Auhtor

Marimo también me permite convertir un DataFrame en un elemento de entrada interactivo. Usando mo.ui.table, puedo seleccionar filas y usar esas selecciones en cálculos posteriores. Las selecciones se actualizan de forma reactiva, lo que significa que el resto de mi portátil también se actualiza automáticamente.

Selección de filas interactiva con mo.ui.table, alimentación directa a las celdas posteriores | Imagen por autor

Si quiero compartir un cuaderno con una parte interesada de la empresa, marimo incluye un editor de marco de datos de interfaz de usuario que les permite arrastrar y soltar agregaciones y transformaciones sin escribir ningún código. Incluso genera el código Python equivalente para cada paso.

El editor de marcos de datos UI de Marimo permite a los usuarios empresariales explorar datos sin escribir código | Imagen de autor

Y espera, eso no es todo. También hay una utilidad Explorador de datos que me permite crear visualizaciones rápidas directamente desde DataFrame.

Uso del Explorador de datos para seleccionar columnas y generar imágenes instantáneas | Imagen por autor

Todo esto hace que la exploración de datos en las primeras etapas sea mucho más rápida. En lugar de hacer malabares con bibliotecas o escribir código repetitivo solo para comprender un conjunto de datos, puedo comenzar a analizar y visualizar de inmediato dentro del cuaderno.

7. Vea la documentación mientras escribe

Para mí, una de las características más subestimadas de los portátiles marimo ha sido el panel Live Docs. Puedo ver cadenas de documentos, parámetros y ejemplos de funciones sin llamar a las utilidades de ayuda.

El panel también es interactivo, por lo que puedo desplazarme por largas cadenas de documentos, consultar ejemplos y copiar fragmentos en mi cuaderno. Si la cadena de documentación tiene ejemplos formateados, marimo los detecta y me permite copiarlos directamente en una nueva celda, lo cual ha sido muy útil al aprender nuevas bibliotecas.

Live Docs en acción, mostrando documentación en tiempo real mientras escribo | Imagen por autor

8. SQL dentro del cuaderno

Marimo tiene un gran soporte para SQL. Puedo quedarme en un cuaderno y mezclar SQL y Python de una forma muy natural. Puedo escribir una consulta SQL dentro de una celda SQL, ejecutarla y obtener la misma vista de tabla limpia que ofrece marimo para DataFrames.

También puedo ejecutar SQL en archivos locales a través de DuckDB. Una simple selección * de “file.csv” simplemente funciona. Si quiero conectarme a una base de datos real, puedo hacerlo desde el panel lateral. Marimo me permite agregar diferentes fuentes de datos y, una vez agregadas, las tablas aparecen directamente en el cuaderno.

Ejecutar SQL en DataFrames y archivos locales directamente dentro de Marimo sin salir del notebook | Imagen por autor

9. Molab: cuadernos marimo en la nube

Molab es para los portátiles marimo, lo que Google Colab es para los portátiles Jupyter. Obtienes todas las bondades de los cuadernos marimo en la nube. Puede abrir Molab en molab.marimo.io, crear nuevos cuadernos o abrir los que creó anteriormente. Es una excelente opción cuando quiero hacer funcionar una computadora portátil rápidamente o evitar ejecutar cosas en mi máquina. Muchos paquetes populares de Python están preinstalados, las computadoras portátiles tienen almacenamiento persistente y puedo compartirlos, descargarlos o cargarlos fácilmente.

molab: cuadernos marimo en la nube | Imagen por autor

Otra característica interesante es la integración de GitHub. Puede ir a la URL de Molab y reemplazar molab.marimo.io/notebooks con molab.marimo.io/github y le permitirá abrir cualquier cuaderno, Jupyter o marimo, que esté alojado en GitHub en Molab. Sin embargo, por ahora no hay soporte para GPU, como en Colab, pero estoy seguro de que es algo en lo que el equipo estará trabajando.

10. Integración de LLM personalizable

Marimo también tiene integradas algunas funciones de codificación asistida por IA realmente útiles, que han sido muy útiles para mí. Para ser honesto, Jupyter también tiene una extensión de JupyterLab para funciones de IA llamada JupyterAI (y sí, también he escrito sobre eso), pero tener soporte de IA integrado en marimo me elimina gran parte de la fricción.

Utilizo la IA en marimo principalmente para dos cosas. La primera es generar nuevos cuadernos cuando quiero probar una nueva biblioteca o hacer una demostración rápida. Me ahorra tiempo ya que no tengo que buscar conjuntos de datos de juguetes ni configurar todo desde cero.

Generando cuadernos completos mediante IA en marimo | Imagen por autor

El segundo es refactorizar y depurar. El asistente de inteligencia artificial de Marimo tiene el contexto completo de mi computadora portátil, por lo que puede leer mi código y ayudarme a arreglarlo o limpiarlo directamente dentro de la computadora portátil.

Asistente de IA en marimo | Imagen por autor

También me gusta poder elegir diferentes modelos para chatear y editar, y establecer mis propias reglas sobre cómo quiero que se escriba el código. Y si quiero evitar los modelos propietarios, Ollama también funciona bien como proveedor.

Conclusión

No estoy conectado con el equipo de marimo y esta no es una publicación paga, sino mi experiencia usándola en proyectos reales. Esta es una lectura larga porque quería compartir cómo marimo ha hecho que mi cuaderno funcione mejor en la práctica. Sólo menciono las partes que más me ayudaron. Los documentos son mucho más profundos y son el mejor lugar para explorar todo lo que marimo tiene para ofrecer.