Que los procesos de trabajo en equipo sean sencillos tiene una im­po­r­ta­n­cia esencial en muchas in­du­s­trias. Por ello, las he­rra­mie­n­tas para co­mu­ni­car­se y organizar las di­fe­re­n­tes versiones de las etapas de trabajo y datos de un proyecto se han vuelto in­di­s­pe­n­sa­bles. Existen varias apli­ca­cio­nes de ciencia de datos y de si­mu­la­ción cuyo objetivo es intentar sa­ti­s­fa­cer estas demandas. Por ejemplo, Jupyter Notebook es una apli­ca­ción web que sirve a modo de puente constante entre el código y los textos ex­pli­ca­ti­vos. De este modo, los usuarios pueden crear y compartir en tiempo real código, ecua­cio­nes, vi­sua­li­za­cio­nes, etc., junto con los textos ex­pli­ca­ti­vos. ¿Qué hay detrás de esta apli­ca­ción de código abierto de­sa­rro­lla­da y ge­s­tio­na­da por el Proyecto Jupyter?

¿Qué es Jupyter Notebook?

Jupyter Notebook es una apli­ca­ción cliente-servidor lanzada en 2015 por la or­ga­ni­za­ción sin ánimo de lucro Proyecto Jupyter. Permite crear y compartir do­cu­me­n­tos web en formato JSON que siguen un esquema ve­r­sio­na­do 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 ma­te­má­ti­cas y ecua­cio­nes, o también contenido mu­l­ti­me­dia (Rich Media). El programa se ejecuta desde la apli­ca­ció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 do­cu­me­n­tos creados en Jupyter pueden ex­po­r­tar­se, entre otros formatos, a HTML, PDF, Markdown o Python y también pueden co­m­pa­r­ti­r­se con otros usuarios por correo ele­c­tró­ni­co, uti­li­za­n­do Dropbox o GitHub o mediante el visor integrado de Jupyter Notebook.

Nota

El nombre del proyecto “Jupyter” proviene de unir los 3 lenguajes de pro­gra­ma­ción de núcleo Julia, Python y R.

Los dos co­m­po­ne­n­tes pri­n­ci­pa­les de Jupyter Notebook son un conjunto de núcleos (In­te­r­pre­ter) y el Dashboard. Cada núcleo o kernel es un motor de ejecución para un lenguaje que se encarga de procesar las so­li­ci­tu­des y devolver las re­s­pue­s­tas apro­pia­das. El kernel por defecto es IPython, un in­té­r­pre­te 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, Ja­va­S­cri­pt, Co­f­fee­S­cri­pt, PHP o Java. Por un lado, el Dashboard (panel de control) funciona como una interfaz de ad­mi­ni­s­tra­ción de cada uno de los kernels y, por otro, como un centro de control desde donde es posible crear nuevos do­cu­me­n­tos o abrir proyectos exi­s­te­n­tes. Jupyter Notebook está di­s­po­ni­ble bajo una licencia BSD mo­di­fi­ca­da, por lo que cualquier usuario puede usarlo gra­tui­ta­me­n­te.

¿En qué se di­fe­re­n­cia Jupyter Notebook de Ju­p­y­te­rHub y Ju­p­y­te­r­Lab?

Jupyter Notebook no es la única apli­ca­ción de código abierto que ofrece el Proyecto Jupyter: Ju­p­y­te­rHub y Ju­p­y­te­r­Lab son dos servicios adi­cio­na­les que ofrece el equipo de de­sa­rro­llo y que están es­tre­cha­me­n­te vi­n­cu­la­dos al entorno de trabajo in­ter­ac­ti­vo para el de­sa­rro­llo de código.

Ju­p­y­te­rHub es un servidor con proxy mu­l­tiu­sua­rio que in­te­r­co­ne­c­ta varias in­s­ta­n­cias Jupyter Notebook. Puede estar alojado en la nube o en nuestro propio hardware y lo que permite es utilizar un entorno co­m­pa­r­ti­do del Notebook. El ad­mi­ni­s­tra­dor del servidor se encarga de gestionar el acceso co­m­pa­r­ti­do a cada uno de los do­cu­me­n­tos según considere oportuno (se puede im­ple­me­n­tar un método de au­te­n­ti­ca­ción) y el resto de los usuarios in­di­vi­dua­les pueden co­n­ce­n­trar­se por completo en realizar sus tareas. Se puede encontrar in­fo­r­ma­ción detallada sobre cómo instalar y alojar Ju­p­y­te­rHub en el re­po­si­to­rio GitHub oficial del entorno mu­l­tiu­sua­rio.

Ju­p­y­te­r­Lab es el sucesor oficial de Jupyter Notebook, pero a la larga acabará re­em­pla­za­n­do al programa clásico. Las di­fe­re­n­cias entre ambos residen en que Ju­p­y­te­r­Lab ofrece más opciones de pe­r­so­na­li­za­ción e in­ter­ac­ción y en él es más sencillo aún im­ple­me­n­tar ex­te­n­sio­nes. Además de los editores de texto, te­r­mi­na­les y otros co­m­po­ne­n­tes que pueden abrirse y vi­sua­li­zar­se al mismo tiempo que los do­cu­me­n­tos 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 pro­po­r­cio­na un entorno pensado para sa­ti­s­fa­cer ne­ce­si­da­des concretas y ajustarse al flujo de trabajo de la ciencia de datos y la si­mu­la­ción numérica. En una sola interfaz, los usuarios pueden escribir, do­cu­me­n­tar y ejecutar código, vi­sua­li­zar datos, realizar cálculos y ver los re­su­l­ta­dos. Co­n­cre­ta­me­n­te, la fase de pro­to­ti­pa­do incluye la ventaja de que el código se organiza en celdas in­de­pe­n­die­n­tes, es decir, es posible probar bloques concretos de código de forma in­di­vi­dual. Gracias a que existen muchos kernels o núcleos adi­cio­na­les, Jupyter no se limita al lenguaje de pro­gra­ma­ción Python, lo que aporta muchísima fle­xi­bi­li­dad a la hora de crear código y de hacer análisis.

Algunos de los pri­n­ci­pa­les usos que se da a Jupyter Notebook:

  • De­pu­ra­ción de datos: di­s­ti­n­guir entre los datos que son im­po­r­ta­n­tes y los que no lo son al ejecutar un análisis de big data.
  • Mo­de­li­za­ción es­ta­dí­s­ti­ca: método ma­te­má­ti­co para estimar la pro­ba­bi­li­dad de di­s­tri­bu­ción de una ca­ra­c­te­rí­s­ti­ca concreta.
  • Creación y en­tre­na­mie­n­to de modelos de apre­n­di­za­je au­to­má­ti­co: diseño, pro­gra­ma­ción y en­tre­na­mie­n­to de modelos basados en apre­n­di­za­je au­to­má­ti­co
  • Vi­sua­li­za­ción de datos: re­pre­se­n­ta­ción gráfica de datos para vi­sua­li­zar con claridad patrones, te­n­de­n­cias, in­te­r­de­pe­n­de­n­cias, 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 apli­ca­ció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 ac­tua­li­za­da de Python. Por esta razón, el equipo de Jupyter re­co­mie­n­da descargar la di­s­tri­bu­ción Anaconda que incluye Jupyter Notebook y Python, además de otros paquetes de software para ciencia de datos y cálculos cie­n­tí­fi­cos. Tras la in­s­ta­la­ción, se puede iniciar el servidor del Notebook uti­li­za­n­do 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 di­re­c­to­rio de Jupyter Notebook, abrir el editor de texto y el terminal in­te­gra­dos 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 bi­blio­te­cas o incrustar widgets (elementos in­ter­ac­ti­vos). Además, en la barra hay botones que permiten ejecutar y detener los códigos ya fi­na­li­za­dos, guardar o exportar el documento completo y se­le­c­cio­nar el kernel su­b­ya­ce­n­te.

Consejo

En la página de inicio oficial de Jupyter puedes probar Jupyter Notebook sin tener que in­s­ta­lar­lo.

Echa un vistazo a todos los be­ne­fi­cios de Jupyter Notebook

Si has escrito un script y quieres probarlo en tiempo real, vi­sua­li­zar los datos o hacer algún cálculo ma­te­má­ti­co complejo, Jupyter Notebook pone al alcance de tus manos una solución de alto nivel. Los re­su­l­ta­dos pueden ex­po­r­tar­se con tan solo unos clics a varios formatos o enviarse di­re­c­ta­me­n­te mediante correo ele­c­tró­ni­co. Los usuarios del servicio mu­l­tiu­sua­rio Ju­p­y­te­rHub pueden también colaborar en los Notebooks para que el proyecto esté lo más integrado posible dentro del equipo. Como Jupyter ha sido de­sa­rro­lla­do en Python, los es­pe­cia­li­s­tas en este lenguaje tendrán una ventaja al utilizar esta apli­ca­ción de código abierto y, gracias a los di­fe­re­n­tes in­té­r­pre­tes de otros lenguajes que están in­te­gra­dos, será posible crear código de forma sencilla en otros lenguajes como C++, PHP o Java.

Un resumen de los be­ne­fi­cios de Jupyter Notebook:

  • Código abierto (licencia BSD mo­di­fi­ca­da)
  • Gratuito
  • Funciona en el navegador
  • Código en vivo (Live-Code)
  • Di­fe­re­n­tes opciones a la hora de exportar y compartir los re­su­l­ta­dos
  • Control de versiones
  • Permite co­la­bo­ra­ción (Ju­p­y­te­rHub)
  • Soporta más de 50 lenguajes de pro­gra­ma­ción
Ir al menú principal