Trabajar en Ciencia de datospuede ser difícil compartir ideas de conjuntos de datos complejos utilizando solo figuras estáticas. Todas las facetas que describen la forma y el significado de los datos interesantes no siempre se capturan en un puñado de figuras previamente generadas. Si bien tenemos tecnologías poderosas disponibles para presentar figuras interactivas, donde un espectador puede girar, filtrar, zoom y explorar datos complejos, siempre vienen con compensaciones.
Aquí presento mi experiencia usando una biblioteca de Python recientemente lanzada –marimo– que abre nuevas oportunidades emocionantes para publicar visualizaciones interactivas en todo el campo de la ciencia de los datos.
Visualización de datos interactivos
Las compensaciones a considerar al seleccionar un enfoque para presentar visualizaciones de datos se pueden dividir en tres categorías:
- Capacidades – ¿Qué visualizaciones e interactividad puedo presentar al usuario?
- Costo de publicación – ¿Cuáles son los recursos necesarios para mostrar esta visualización a los usuarios (por ejemplo, ejecutar servidores, alojamiento de sitios web)?
- Facilidad de uso– ¿Cuánto de un nuevo conjunto de habilidades / base de código necesito aprender por adelantado?
Javascriptes la base de la interactividad portátil. Cada usuario tiene un navegador web instalado en su computadora y hay muchos marcos diferentes disponibles para mostrar cualquier grado de interactividad o visualización que pueda imaginar (por ejemplo, esto Galería de cosas increíbles que la gente ha hecho con tres.js). Dado que la aplicación se ejecuta en la computadora del usuario, no se necesitan servidores costosos. Sin embargo, un inconveniente significativo para la comunidad de ciencia de datos es la facilidad de uso, ya que JS no tiene muchas de las bibliotecas de alto nivel (es decir, fáciles de usar) que los científicos de datos utilizan para la manipulación de datos, el trazado y la interactividad.
Pitón proporciona un punto útil de comparación. Por su Popularidad continuamente crecientealgunos han llamado a esto el “Era de Python”. Para los científicos de datos en particular, Python está junto a R como uno de los idiomas fundamentales para ejercer datos complejos de manera rápida y efectiva. Si bien Python puede ser más fácil de usar que JavaScript, hay menos opciones para presentar visualizaciones interactivas. Algunos proyectos populares que proporcionan interactividad y visualización han sido Matraz, Estrellarse y Racionalizar(también vale la pena mencionar –bokeh, Holoviews, altairy tramamente ). La mayor compensación para usar Python ha sido el costo para la publicación: entregar la herramienta a los usuarios. De la misma manera que brillo requieren una computadora en ejecución para servir a la visualización, estos marcos basados en Python se han basado exclusivamente en servidor. Esto de ninguna manera es prohibitivo para los autores con un presupuesto para gastar, pero limita el número de usuarios que pueden aprovechar un proyecto en particular.
Pyodida es un terreno intermedio intrigante: código de python que se ejecuta directamente en el navegador web utilizando Aviso web (Wasm). Hay limitaciones de recursos (solo 1 hilo y memoria de 2 GB) que hacen que esto sea poco práctico para hacer el trabajo pesado de la ciencia de los datos. Sin embargoesto puede ser más que suficiente para construir visualizaciones y actualizar en función de la entrada del usuario. Debido a que se ejecuta en el navegador, no se requieren servidores para alojar. Las herramientas que usan la pyodida como base son interesantes para explorar porque brindan a los científicos de datos la oportunidad de escribir un código Python que se ejecuta directamente en las computadoras de los usuarios sin tener que instalar o ejecutar nada fuera del navegador web.
Como un aparte, He estado interesado anteriormente enUn proyecto que ha probado este enfoque: stlite , una implementación en el navegador de Streamlit Eso le permite implementar estas aplicaciones flexibles y potentes en una amplia gama de usuarios. Sin embargo, una limitación central es que la línea de transmisión en sí misma es distinta de Stlite (el puerto de racionalización a WASM), lo que significa que no todas las características son compatibles y que el avance del proyecto depende de dos grupos separados que trabajen a lo largo de líneas compatibles.
Presentación: Marimo
Esto nos lleva a Marimo.
El primer público Anuncios de Marimo fueron en enero de 2024, por lo que el proyecto es muy nuevo y tiene una combinación única de características:
- La interfaz se asemeja a un jupyter computadora portátil que será familiar para los usuarios.
- La ejecución de las celdas es reactivode modo que la actualización de una celda volverá a ejecutar todas las celdas que dependen de su salida.
- Entrada de usuario Se puede capturar con un conjunto flexible de componentes de la interfaz de usuario.
- Los cuadernos se pueden convertir rápidamente en aplicacionesocultando el código y mostrando solo los elementos de entrada/salida.
- Las aplicaciones se pueden ejecutar localmente o convertirse en Páginas web estáticasUsando wasm/pyoduro.
Marimo equilibra las compensaciones de la tecnología de una manera que se adapta bien al conjunto de habilidades de los científicos de datos típicos:
- Capacidades– Las funciones de entrada y visual visual del usuario son bastante extensas, admitiendo la entrada del usuarioa través de tramas de Altair y Plotly.
- Costo de publicación– La implementación como páginas web estáticas es básicamente gratuita – no se requieren servidores
- Facilidad de uso– Para los usuarios familiarizados con los cuadernos de Python, Marimo se sentirá muy familiar y será fácil de recoger.
Publicar aplicaciones Marimo en la web
El mejor lugar para comenzar con Marimo es leyendo su extensa documentación.
Como un ejemplo simple del tipo de pantalla que puede ser útil en la ciencia de datos, que consiste en un texto explicativo intercalado con pantallas interactivas, he creado un básico Repositorio de Github. Pruébalo tú mismo aquí .
Usando solo un poco de código, los usuarios pueden:
- Adjuntar conjuntos de datos de origen
- Generar visualizaciones con interactividad flexible
- Escribe texto narrativo que describe sus hallazgos
- Publicar en la web de forma gratuita (es decir, usando páginas de Github)
Para más detalles, lea su Documentación sobre publicación weby Repositorio de plantillas para la implementación en páginas de Github.
Aplicación pública / datos privados
Esta nueva tecnología ofrece una nueva oportunidad emocionante para la colaboración: publique la aplicación públicamente en el mundo, pero los usuarios solo pueden ver conjuntos de datos específicos a los que tienen permiso para acceder.
En lugar de construir un backend de datos dedicado para cada aplicación, los datos del usuario se pueden almacenar en un backend genérico que se puede autenticarse y acceder de forma segura utilizando una biblioteca de clientes de Python, todo contenido en el navegador web del usuario. Por ejemplo, el usuario recibe un enlace de inicio de sesión de OAuth que los autenticará con el backend y permitirá que la aplicación acceda temporalmente a los datos de entrada.
Como prueba de concepto, construí una aplicación de visualización simple que se conecta a la plataforma de datos CIRROque se usa en mi institución para administrar datos científicos. Divulgación completa: Fui parte del equipo que construyó esta plataforma antes de que se produjera como una empresa independiente. De esta manera, los usuarios pueden:
- Cargue la aplicación de visualización pública, alojada en las páginas de GitHub
- Conectarse de forma segura a su almacén de datos privado
- Cargue el conjunto de datos apropiado para la visualización
- Comparta un enlace que dirija a los colaboradores autorizados a los mismos datos
Pruébalo tú mismo aquí.
Como científico de datos, este enfoque de publicar aplicaciones de visualización gratuita y de código abierto que se pueden utilizar para interactuar con conjuntos de datos privados es extremadamente emocionante. Construir y publicar una nueva aplicación puede llevar horas y días en lugar de semanas y años, permitiendo a los investigadores compartir rápidamente sus ideas con los colaboradores y luego publicarlos en el mundo en general.