Jupyter Notebook: documentos web para análisis de datos, código en vivo y mucho más
Que los procesos de trabajo en equipo sean sencillos tiene una importancia esencial en muchas industrias. Por ello, las herramientas para comunicarse y organizar las diferentes versiones de las etapas de trabajo y datos de un proyecto se han vuelto indispensables. Existen varias aplicaciones de ciencia de datos y de simulación cuyo objetivo es intentar satisfacer estas demandas. Por ejemplo, Jupyter Notebook es una aplicación web que sirve a modo de puente constante entre el código y los textos explicativos. De este modo, los usuarios pueden crear y compartir en tiempo real código, ecuaciones, visualizaciones, etc., junto con los textos explicativos. ¿Qué hay detrás de esta aplicación de código abierto desarrollada y gestionada por el Proyecto Jupyter?
¿Qué es Jupyter Notebook?
Jupyter Notebook es una aplicación cliente-servidor lanzada en 2015 por la organización sin ánimo de lucro Proyecto Jupyter. Permite crear y compartir documentos web en formato JSON que siguen un esquema versionado y una lista ordenada de celdas de entrada y de salida. Estas celdas albergan, entre otras cosas, código, texto (en formato Markdown), fórmulas matemáticas y ecuaciones, o también contenido multimedia (Rich Media). El programa se ejecuta desde la aplicación web cliente que funciona en cualquier navegador estándar. El requisito previo es instalar y ejecutar en el sistema el servidor Jupyter Notebook. Los documentos creados en Jupyter pueden exportarse, entre otros formatos, a HTML, PDF, Markdown o Python y también pueden compartirse con otros usuarios por correo electrónico, utilizando Dropbox o GitHub o mediante el visor integrado de Jupyter Notebook.
El nombre del proyecto “Jupyter” proviene de unir los 3 lenguajes de programación de núcleo Julia, Python y R.
Los dos componentes principales de Jupyter Notebook son un conjunto de núcleos (Interpreter) y el Dashboard. Cada núcleo o kernel es un motor de ejecución para un lenguaje que se encarga de procesar las solicitudes y devolver las respuestas apropiadas. El kernel por defecto es IPython, un intérprete de líneas de comandos que permite trabajar con Python. Gracias a los 50 kernels restantes, es posible trabajar también con otros lenguajes como C++, R, Julia, Ruby, JavaScript, CoffeeScript, PHP o Java. Por un lado, el Dashboard (panel de control) funciona como una interfaz de administración de cada uno de los kernels y, por otro, como un centro de control desde donde es posible crear nuevos documentos o abrir proyectos existentes. Jupyter Notebook está disponible bajo una licencia BSD modificada, por lo que cualquier usuario puede usarlo gratuitamente.
¿En qué se diferencia Jupyter Notebook de JupyterHub y JupyterLab?
Jupyter Notebook no es la única aplicación de código abierto que ofrece el Proyecto Jupyter: JupyterHub y JupyterLab son dos servicios adicionales que ofrece el equipo de desarrollo y que están estrechamente vinculados al entorno de trabajo interactivo para el desarrollo de código.
JupyterHub es un servidor con proxy multiusuario que interconecta varias instancias Jupyter Notebook. Puede estar alojado en la nube o en nuestro propio hardware y lo que permite es utilizar un entorno compartido del Notebook. El administrador del servidor se encarga de gestionar el acceso compartido a cada uno de los documentos según considere oportuno (se puede implementar un método de autenticación) y el resto de los usuarios individuales pueden concentrarse por completo en realizar sus tareas. Se puede encontrar información detallada sobre cómo instalar y alojar JupyterHub en el repositorio GitHub oficial del entorno multiusuario.
JupyterLab es el sucesor oficial de Jupyter Notebook, pero a la larga acabará reemplazando al programa clásico. Las diferencias entre ambos residen en que JupyterLab ofrece más opciones de personalización e interacción y en él es más sencillo aún implementar extensiones. Además de los editores de texto, terminales y otros componentes que pueden abrirse y visualizarse al mismo tiempo que los documentos de Notebook, la nueva interfaz de usuario, gracias a su nuevo diseño, incluye también accesos directos a Google Drive y otros servicios en la nube, nuevas opciones en el menú y atajos de teclado para que el trabajo en el entorno de código sea aún más fácil.
¿Para qué se utiliza Jupyter Notebook?
Jupyter Notebook proporciona un entorno pensado para satisfacer necesidades concretas y ajustarse al flujo de trabajo de la ciencia de datos y la simulación numérica. En una sola interfaz, los usuarios pueden escribir, documentar y ejecutar código, visualizar datos, realizar cálculos y ver los resultados. Concretamente, la fase de prototipado incluye la ventaja de que el código se organiza en celdas independientes, es decir, es posible probar bloques concretos de código de forma individual. Gracias a que existen muchos kernels o núcleos adicionales, Jupyter no se limita al lenguaje de programación Python, lo que aporta muchísima flexibilidad a la hora de crear código y de hacer análisis.
Algunos de los principales usos que se da a Jupyter Notebook:
- Depuración de datos: distinguir entre los datos que son importantes y los que no lo son al ejecutar un análisis de big data.
- Modelización estadística: método matemático para estimar la probabilidad de distribución de una característica concreta.
- Creación y entrenamiento de modelos de aprendizaje automático: diseño, programación y entrenamiento de modelos basados en aprendizaje automático
- Visualización de datos: representación gráfica de datos para visualizar con claridad patrones, tendencias, interdependencias, etc.
¿Cómo funciona Jupyter Notebook?
Si deseas sacar el máximo partido de todo lo que Jupyter Notebook puede ofrecerte, primero tienes que instalar la aplicación cliente-servidor del entorno de código en tu sistema (o, si lo prefieres, en la nube). El único requisito es tener instalado también la versión actualizada de Python. Por esta razón, el equipo de Jupyter recomienda descargar la distribución Anaconda que incluye Jupyter Notebook y Python, además de otros paquetes de software para ciencia de datos y cálculos científicos. Tras la instalación, se puede iniciar el servidor del Notebook utilizando la línea de comando y luego el Dashboard en el navegador que prefieras mediante el URL 'http://localhost:8888'.
Ahí, los usuarios podrán crear nuevas carpetas en el directorio de Jupyter Notebook, abrir el editor de texto y el terminal integrados o crear un nuevo Proyecto Jupyter. Los proyectos de nueva creación contienen al principio nada más que un único campo de entrada vacío. Mediante la barra del menú se pueden añadir nuevos campos, importar bibliotecas o incrustar widgets (elementos interactivos). Además, en la barra hay botones que permiten ejecutar y detener los códigos ya finalizados, guardar o exportar el documento completo y seleccionar el kernel subyacente.
En la página de inicio oficial de Jupyter puedes probar Jupyter Notebook sin tener que instalarlo.
Echa un vistazo a todos los beneficios de Jupyter Notebook
Si has escrito un script y quieres probarlo en tiempo real, visualizar los datos o hacer algún cálculo matemático complejo, Jupyter Notebook pone al alcance de tus manos una solución de alto nivel. Los resultados pueden exportarse con tan solo unos clics a varios formatos o enviarse directamente mediante correo electrónico. Los usuarios del servicio multiusuario JupyterHub pueden también colaborar en los Notebooks para que el proyecto esté lo más integrado posible dentro del equipo. Como Jupyter ha sido desarrollado en Python, los especialistas en este lenguaje tendrán una ventaja al utilizar esta aplicación de código abierto y, gracias a los diferentes intérpretes de otros lenguajes que están integrados, será posible crear código de forma sencilla en otros lenguajes como C++, PHP o Java.
Un resumen de los beneficios de Jupyter Notebook:
- Código abierto (licencia BSD modificada)
- Gratuito
- Funciona en el navegador
- Código en vivo (Live-Code)
- Diferentes opciones a la hora de exportar y compartir los resultados
- Control de versiones
- Permite colaboración (JupyterHub)
- Soporta más de 50 lenguajes de programación