Jupyter Notebook

Jupyter Notebook es una aplicación web de código abierto que permite incluir texto, vídeo, audio e imágenes además, de ofrecer la posibilidad de ejecutar código en diferentes lenguajes de programación.

Por defecto, provee el kernel de Python incluido. Sin embargo soporta otros kernels como Octave, Julia, R, Haskell, Ruby, C/C++, Fortan, Java, SageMath, Scala, Matlab, Mathematica y LaTeX.

Su arquitectura es la principal ventaja de esta aplicación. Esta nos permite alojar toda la instalación de kernels, librerías y herramientas necesarias en un servidor (también se puede integrar con docker), evitando así que cada integrante por ejemplo, de un equipo de Data Science deba configurar todo su entorno de trabajo localmente en su ordenador.

Se conectan directamente desde sus ordenadores al entorno del servidor vía navegador y ya tienen toda la configuración básica necesaria lista para trabajar.

Todo el código desarrollado en un notebook se puede exportar en formatos como: HTML, LateX, pdf, reStructuredText y presentaciones.

         Visualización Jupyter Notebook en HTML

Para trabajar con Jupyter Notebooks es muy importante definir un flujo y metodología para que el equipo de Data Science sea más eficiente gracias a la flexibilidad que proporciona el uso de notebooks a la hora de realizar los análisis. 

Si se define correctamente, será sencillo mantener, compartir y controlar las diferentes versiones del proyecto que haya realizado cada integrante del equipo.

Con esto y una buena integración con servicios de hosting basados en Git, mejorará la visualización y rapidez de acceso de los avances logrados en los análisis durante las diferentes etapas de desarrollo.

Tipos de Notebooks

Dev Notebooks

En este tipo de notebook, cada desarrollador realizará sus análisis y exploraciones.  

  • Cada notebook mantiene un registro histórico del análisis explorado.
  • El notebook se usará para experimentar durante el desarrollo del proyecto.
  • Cada notebook pertenece a un único autor del equipo y este debe indicar su autoría.
  • Si se alarga demasiado, es recomendable crear una página nueva.
  • Si durante el proyecto los cuadernos se pueden dividir por temas según el tipo de análisis realizado, es recomendable hacerlo.

Una vez depurados los análisis, se almacena el contenido final en un Report notebook.

Report Notebooks

  • Contienen las versiones ya pulidas de los desarrollos realizados en las Dev Notebooks.
  • Almacena los resultados y conclusiones  del análisis final desarrollado por cada miembro del equipo en las Dev Notebooks.
  • Todo el equipo de Data Science tiene acceso a este report.

Trabajando de esta forma, la idea es ir subiendo los avances a Git permitiendo así que cada integrante del equipo tenga su rama para ir subiendo los avances realizados en sus Dev Notebooks.

Entonces cada integrante del proyecto podrá consultar los avances de los análisis realizados por sus compañeros cuando estos hacen un pull-request y entre todos validar si ya se puede pasar el contenido a la rama que contiene el Report Notebook.

Es recomendable hacer el commit de los ficheros en .py en vez de .ipynb (extensión de python notebooks), ya que se visualizan mejor las modificaciones del código.

Ejemplo nomenclatura de ficheros

05-04-2019-mo-production-vs-hours-worked.py
0504-2019-mo-production-vs-hours-worked.ipynb
fecha-iniciales_developer-nombre_fichero.extensión

Igualmente, si así quiere el equipo puede subir los ficheros .ipynb para tener una previsualización estática del notebook. 

Cuando y por qué utilizar Jupyter Notebook

Una vez explicado todo esto, os podéis preguntar ¿por qué debería utilizar Jupyter NoteBooks?

Porque cuando se está realizando una investigación en equipo, acabarás teniendo las conclusiones de esta en un informe final, además, de fomentar el trabajo en equipo durante la fase de  investigación y explotación del dato. 

Una vez obtenidas conclusiones sólidas, toca pasar del prototipado a la implementación de estas investigaciones en un producto de mercado real. 

En definitiva, defiendo el uso de Jupyter Notebooks para análisis exploratorios de los datos y para establecer unas conclusiones. Además, posteriormente se debe crear una librería o un módulo con cierto nivel de complejidad y estabilidad, para integrarlo en un producto de mercado siguiendo los principios de la ingeniería del software obteniendo una implementación robusta.

Plataformas online con Jupyter

A parte de definir uno mismo la configuración deseada para tu entorno de Jupyter Notebooks, el mercado ofrece alternativas para trabajar con este tipo de ficheros sin tener que configurar ni instalar ningún tipo de kernel.

Como contra estás sujeto a los kernels que ofrezcan estas plataformas, pero puedes empezar a trabajar directamente utilizando estos servicios online.

  • CoCalc: servicio online que proporciona diferentes herramientas para un propósito de uso educativo. Permite editar Jupyter Notebooks de forma colaborativa.
  • JupytherHub: herramienta ofrecida por Jupyter Team que provee un servicio multi usuario.  Se enfocada al sector educativo.
  • Azure Notebooks: a diferencia del servicio de Google tiene los kernels de Python, F# y R. Eso sí, no te proporciona la misma potencia de procesamiento computacional que Google.
  • Colab by Google: entorno de Jupyter Notebook gratuito de google en el cloud. El sistema de colaboración de notebook es muy parecido al de Google Docs. De momento soporta Python 2.7 y 3.7.  Ofrecen GPU computing gratuito utilizando una GPU Tesla K80.
  • MyBinder: servidor que permite cargar todas las Jupyter Notebooks alojadas en un repositorio de GitHub para interactuar en vivo con los contenidos del repositorio.

Para más información sobre como instalar Jupyter Notebook, extensiones y otros ejemplos de su potencial:

  1. Jupyter Notebook Tutorial by DataCamp
  2. Jupyter Lab extensions
  3. Jupyter Notebook Documentation
  4. Jupyter Notebook community – Reddit
  5. Ejemplo de galería de Jupyter Notebooks en Github
  6. Introducción a Colab
  7. Lorena Barba , <<AeroPython >> George Washington University
  8. Python Data Science Handbook by Jake VanderPlas

Adria Garcia

Adria Garcia

Share on facebook
Share on twitter
Share on linkedin
Share on email
4 min
Suscríbete a nuestra newsletter

Los mejores artículos de analítica digital para potenciar tu negocio.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas relacionadas