4  Jupyter Notebook para Python

En esta sección se aprenderá como usar Jupyter Notebook para ayudar a la implementación de flujos de trabajos que sean reproducibles, además familiarizarse con la interfaz de Jupyter Notebook para crear, comentar y ejecutar códigos en bloques y de celdas Markdown.

4.1 Introducción a Jupyter

Después de completar este capítulo serás capaz de:

  • Ejecutar y navegar a través de la consola de Jupyter Notebook.

  • Abrir y crear nuevos archivos (.ipynb) de Jupyter Notebook.

  • Ejecutar código y celdas Markdown dentro de Jupyter Notebook para correr código Python y dibujar texto Markdown.

  • Administrar archivos y directorios usando Jupyter Notebook.

Jupyter Notebook para la ciencia abierta reproducible

Recordando un poco la parte introductoria, sabemos que Jupyter Notebook es una plataforma abierta que contiene un grupo de herramientas:

  • Jupyter Notebook: es una aplicación web que permite crear y compartir documentos (archivos de Jupyter Notebook) que contienen códigos interactivos, ecuaciones, visualizaciones y comentarios.

  • Jupyter Lab: es una aplicación web que te permite acceder a múltiples archivos de Jupyter Notebook, así como a otro tipo de códigos y archivos.

  • Jupyter Hub: es una versión multipersona de Jupyter Notebook y Lab que se pueden correr en un servidor.

El formato de Jupyter Notebook (.ipynb) permite combinar texto descriptivo, bloques de código y salidas interactivas en solo un archivo. Cuando se ejecuta el código, se generan las salidas, incluyendo gráficos y tablas dentro del archivo notebook. El notebook puede ser exportado a un archivo .pdf o .html y compartirlo como un reporte, o únicamente mostrando el código para que otras personas lo puedan ejecutar. Es posible usar archivos .ipynb para documentar los flujos de trabajos y para compartir código para el procesamiento de datos, análisis o visualización.

Combine Markdown y código en Jupyter Notebooks para documentar flujos de trabajos

El uso de Markdown (lenguaje de marcado basado en texto plano: Markdown - https://markdown.es/) usado junto con código Python en Jupyter Notebook tiene muchas ventajas:

  • Legible para personas: se hace mucho más fácil leer un reporte que contiene texto y figuras. Agregando texto Markdown al código, el proyecto se hace más amigable y fácil de entender.

  • Sintaxis simple: Markdown utiliza un formato simple que puede ser aprendido rápidamente, esto permite reducir la curva de aprendizaje para los archivos Jupyter Notebook.

  • Útil recordatorio a futuro: cuando se codifica es una buena práctica considerarse a sí mismo en el futuro, de esta manera si se deja un código bien documentado con todos sus pasos necesarios para ejecutarse, tú mismo, no tendrás que recordar que pasos, asunciones, o pruebas se hicieron para completar el flujo de trabajo.

  • Fácil de modificar: es fácil extender o refinar los análisis combinados dentro de un archivo Jupyter modificando el código existente o añadiendo nuevo.

  • Formatos de exportación flexibles: los análisis que resulten de los archivos Jupyter pueden ser distribuidos en varios formatos como HTML, PDF o diapositivas.

  • Fácil de compartir: si tus análisis están contenidos y documentados dentro de uno o más notebooks, se hace más fácil compartirlos con los colegas. Tus colegas podrán fácilmente reproducir tu flujo de trabajo.

Jupyter Notebook es útil para tus colegas

La conexión que se hace entre datos, códigos y resultados, hace que Jupyter sea poderoso. Es posible compartir tu flujo de trabajo de manera integral con tus colegas de trabajo, además ellos pueden ver tu flujo de procesos. Además, es posible escribir reportes usando archivos .ipynb que pueden contener análisis de los datos y resultados. El documento puede ser enriquecido agregando texto, tal como se haría en Word para describir tu flujo de trabajo, discutir tus resultados y presentar tus conclusiones.

Jupyter Notebook es útil para ti en el futuro

Los archivos .ipynb son muy eficientes, por ejemplo, si quieres hacer cambios en los flujos del trabajo, simplemente modifica el código, documenta los cambios y ejecuta de nuevo. Lo vas a agradecer en el futuro. Esto porque te permite agregar la documentación para poder recordar tus procesos.

Convertir Notebooks a archivos intercambiables HTML

Es posible guardar como .html los archivos Jupyter que contienen código Markdown. Cuando se graba un notebook como .html, se crea una página web con códigos, resultados, además de representarse adecuadamente el texto Markdown. De esta manera puedes compartir con un colega tus flujos de trabajo, sin tener que volver a correr los análisis.

¿Qué es un Jupyter Notebook?

Jupyter Notebook es un ambiente de desarrollo integrado (IDE) que permite escribir código, navegar en tu computador, inspeccionar las variables y mucho más. Un IDE es diferente de un editor de texto, ya que permite tener interacción entre la escritura, prueba y depuración del código. Existen muchos IDE’s que pueden ser usados como Spyder o PyCharm, sin embargo, acá usaremos Jupyter Notebook.

Ventajas de Jupyter Notebook

Permite a los usuarios muchas funcionalidades, entre ellas:

  • Escribir y ejecutar código interactivamente.

  • Documentar los aspectos del flujo de trabajo, utilizando una combinación de códigos y texto.

  • Compartir el trabajo con colegas para que puedan ver el código, las salidas y permitir la colaboración en los flujos de trabajos.

Jupyter Notebook hace la codificación y documentación más eficiente

Permite ahorrar tiempo, ya que se puede:

  • Atajos, Jupyter posee muchos atajos para la ejecución de código, agregar nuevas celdas o formatear el notebook.

  • Autocompletar, está disponible para encontrar fácilmente los nombres de las funciones y los argumentos de esas funciones, así como las variables que están almacenadas en el entorno de trabajo. Esto hace que escribir código sea más fácil y menos propenso a cometer errores.

  • Integración con Markdown, ya se ha indicado que se puede combinar texto y código en el mismo documento, permitiendo que el documento pueda ser más fácil de entender y que los flujos sean más reproducibles.

Componentes de Jupyter Notebook

Los componentes incluyen:

  1. El Jupyter Notebook IDE, es una aplicación web que permite generar un ambiente de trabajo donde se puede escribir y ejecutar código.

  2. Archivos .ipynb de Jupyter, son un tipo de archivos que se pueden usar para almacenar código Python y Markdown para proyectos individuales o flujos de trabajos.

  3. Kernels o núcleos, que permiten correr el código en un lenguaje específico. Jupyter puede soportar sobre 40 lenguajes. En nuestro caso vamos a trabajar con el kernel de Python en el IDE.

Estructura de los archivos Jupyter Notebook

El IDE Jupyter Notebook permite organizar y ejecutar nuestro trabajo utilizando archivos con la extensión .ipynb. Un archivo .ipynb en el IDE presenta principalmente tres partes:

  • Barra de menú

  • Barra de herramientas

  • Celdas

Figura 4.1: Interfaz del IDE Jupyter.

Markdown y código en celdas en los Jupyter Notebook

Además de las barras de menú y herramientas, un Jupyter Notebook consiste en un conjunto de celdas, a las cuales se les puede especificar para que almacenen documentación como texto del tipo Markdown, o código de programación en Python. El texto que se escribe utilizando Markdown puede ser dibujado en una celda que es del tipo Markdown.

Figura 4.2: Texto Markdown en Jupyter.
Figura 4.3: Resultado de texto Markdown en Jupyter.

Además, como ya se ha indicado, se puede ejecutar código de Python en las celdas de Jupyter. El código generalmente es escrito en bloques. Cuando se corre una celda con código, los resultados se entregan abajo.

Figura 4.4: Ejecución de código Python en celdas Jupyter.

Es posible revisar que tipo de celdas estamos trabajando con solo hacer clic y mirar en la barra de herramientas.

Figura 4.5: Revisión del tipo de celda en Jupyter.

4.2 Empezando con Jupyter Notebook para Python

  • En esta lección vamos a aprender cómo ejecutar y cerrar una sesión de Jupyter Notebook.

  • Navegar en la consola de Jupyter.

  • Abrir y crear archivos Jupyter Notebook (.ipynb).

Ejecutar Jupyter Notebook desde el Terminal

Para esto se necesita primero cargar el Terminal, es recomendable, aunque no necesario cambiarse al directorio de trabajo desde el Terminal. Antes de ejecutar Jupyter, es necesario activar el entorno de trabajo pythongeo instalado sesiones atrás. Una vez activado el entorno, solo se escribe Jupyter Notebook en el Terminal y se presiona Enter.

Figura 4.6: Ejecutar una sesión de Jupyter Notebook en el Terminal.

Esto levanta una sesión de Jupyter Notebook en el navegador. Es necesario dejar abierto el Terminal mientras se está trabajando en el notebook.

Figura 4.7: Mensajes del Terminal al levantar sesión de Jupyter Notebook.

La GUI de Jupyter sirve como la página de inicio del Jupyter Notebook. Su propósito principal es mostrar los notebooks y archivos que hay en el directorio de trabajo. Aunque la interfaz parece de una aplicación online, no lo es, el notebook se ejecuta localmente sin necesidad de una conexión a internet.

Figura 4.8: Página de inicio de Jupyter Notebook.

Crear nuevos archivos Jupyter Notebook

Se pueden crear nuevos archivos .ipynb desde la GUI de Jupyter. En la parte superior izquierda hay dos botones: New y Upload. El primero es para generar un nuevo notebook en el directorio de trabajo y el segundo sirve para importar un notebook, aunque este se encuentre afuera del directorio raíz (desde donde se abrió Jupyter Notebook).

Figura 4.11: Jupyter Notebook importado.
Figura 4.12: Nuevo Jupyter Notebook.

Abrir archivos Jupyter Notebook

Se pueden abrir notebooks existentes en el directorio de trabajo, para esto solo basta con hacer clic en el nombre del archivo .ipynb en el directorio de trabajo y se abrirá una nueva ventana. Si no se ve el archivo que buscas, puede que sea necesario que cambies de directorio desde la GUI de Jupyter, o reiniciar Jupyter desde el Terminal, pero ahora desde el directorio donde se encuentre el archivo que buscas.

Cerrar la sesión de Jupyter

Para cerrar y apagar tus archivos de Jupyter Notebook, se pueden cerrar directamente desde el navegador, pero aun así será necesario que apagues el notebook desde la GUI de Jupyter. En la GUI se muestran los archivos notebooks que están activos (con un punto verde), al seleccionarlos en lista puedes apagarlos con la opción shutdown kernel que aparece al presionar el botón derecho del mouse.

Figura 4.13: Cerrar sesión de Jupyter Notebook en el Browser.

Luego que todos los notebooks estén cerrados y apagados es necesario que apagues la sesión de Jupyter en el servidor local. Para eso debes ir al menú File del GUI y seleccionar Shut Down.

Figura 4.14: Cerrando sesión de Jupyter Notebook en el Terminal.

4.3 Escribiendo Python y Markdown en Jupyter Notebook

Después de revisar esta lección podrás:

  • Crear nuevas celdas con código y Markdown dentro de un Jupyter Notebook.

  • Correr celdas con código y Markdown dentro de un notebook para ejecutar código de Python y dibujar texto de Markdown.

  • Lista de atajos para tareas que son comunes en Jupyter.

Trabajando con código Python y celdas Markdown en Jupyter Notebook

Es necesario recordar que los archivos de Jupyter Notebook consisten en un grupo de celdas que pueden almacenar texto o código.

  • Celdas de texto: permiten escribir y dibujar sintaxis Markdown. Acá es donde se puede describir el flujo de trabajo.

  • Celdas de código: permiten escribir y ejecutar código de un lenguaje de programación (ejemplo, Python, R, Julia, etc.).

Creando nuevas celdas

Es posible usar las herramientas del menú o los atajos del teclado para crear nuevas celdas dentro del notebook. Acá solo se muestran algunas, pero pueden explorarse desde el menú Edit.

Figura 4.15: Atajos de teclado en Jupyter Notebook.

La selección por defecto es un tipo de celda de código, sin embargo, se puede cambiar el tipo de celda haciendo clic en ella y luego seleccionado el nuevo tipo de celda (ej, Markdown). Las opciones de tipo de celdas incluyen: Código, Markdown, Raw (texto que no se va a interpretar, ni ejecutar).

Figura 4.16: Seleccionando tipos de celdas en Jupyter Notebook.

Ejecutando celdas

Es posible ejecutar cualquier celda en Jupyter Notebook (no importa si contiene código o Markdown), utilizando la barra de menú o los atajos del teclado.

Figura 4.17: Atajos de teclado para ejecutar una celda.
Figura 4.18: Celda de Markdown en Jupyter.
Figura 4.19: Ejecución de celda de Markdown en Jupyter.
Figura 4.20: Celda de Python en Jupyter.

Celdas Markdown

Se puede correr celdas Markdown de la misma manera que se corren celdas de código. Sin embargo, cuando se corren celdas Markdown, el texto formateado con su sintaxis se dibuja de forma más estilizada. Esto puede reflejarse en las fuentes de las cabeceras en negrita, itálicas o de mayor tamaño. Las celdas Markdown no entregan salidas o resultados. Por ejemplo, se presentan 3 cabeceras de distintos tamaños.

Figura 4.21: Celda de Markdown en Jupyter.

Si se ejecuta la sintaxis resulta:

Figura 4.22: Ejecución de celda de Markdown en Jupyter.

Ordenando las celdas en Jupyter Notebook

La IDE de Jupyter permite reordenar las celdas dentro del notebook para una mejor ejecución y entendimiento del código o flujo de trabajo. Para eso basta hacer clic sobre la celda a reordenar y utilizar los iconos de las flechas para moverla.

Figura 4.23: Celda de Markdown+ y Python* en Jupyter.

Limpiando los resultados en Jupyter Notebook

En algunas ocasiones queremos limpiar los resultados que se han producido, para esto basta con presionar el botón derecho sobre la celda y buscar las opciones tanto para la celda actual, como para todas las celdas en el notebook.

Figura 4.24: Limpiando resultados de una celda.

4.4 Gestionando directorios en la consola de Jupyter Notebook

Luego de completar esta lección, el estudiante será capaz de:

  • Crear y renombrar directorios desde el GUI de Jupyter.

  • Mover y borrar directorios utilizando el GUI de Jupyter.

Creando directorios en Jupyter Notebook

Para crear un nuevo directorio, solo se debe ir al GUI y en el botón New, indicar Folder. Es importante mencionar que los nuevos directorios creados son nombrados como Untitled Folder.

Figura 4.25: Creando un directorio.

Renombrando directorios en Jupyter Notebook

Para renombrar un directorio, se selecciona la casilla a la izquierda del nombre del directorio, se presiona el botón Rename y se escribe el nuevo nombre.

Figura 4.26: Renombrando un directorio.

Moviendo directorios en Jupyter Notebook

Se pueden mover directorios desde la GUI del explorador de Jupyter, para eso se selecciona el directorio en cuestión y se arrastra a la carpeta donde deseamos moverlo.

Figura 4.27: Moviendo un directorio.

Borrando directorios en Jupyter Notebook

Además de lo indicado anteriormente, podemos eliminar directorios desde el explorador de Jupyter. La forma de eliminarlos funciona igual a las operaciones ya descritas, seleccionado la casilla y presionando el botón Delete. Se debe poner cuidado al eliminar directorios porque se elimina todo el contenido de su interior, incluyendo archivos y subdirectorios.

Figura 4.28: Borrando un directorio.

4.5 Gestionando archivos de Jupyter Notebook

Al finalizar la lección podrá:

  • Grabar, renombrar y borrar archivos de Jupyter Notebook.

  • Mover archivos usando el explorador de Jupyter.

  • Convertir archivos Jupyter en formatos más amigables (.pdf, .html).

Grabar archivos de Jupyter Notebook

Después de trabajar o hacer cambios sobre un archivo de Jupyter (.ipynb) se puede grabar usando el menú o alguna combinación de teclas.

Figura 4.29: Guardando un archivo.

Renombrar archivos de Jupyter Notebook

Para renombrar archivos también se cuenta con dos alternativas:

  1. Desde el menú File del Notebook.

  2. Desde la pestaña Files en el explorador de Jupyter.

Figura 4.30: Renombrando un archivo.

Borrar archivos de Jupyter Notebook

Los archivos (.ipynb) se pueden borrar desde el explorador de Jupyter, seleccionado el archivo en la caja y luego pinchando el botón Delete que aparece en el menú File. La selección de archivos puede ser también múltiple.

Figura 4.31: Borrando un archivo.

Mover archivos de Jupyter Notebook

Los archivos de Notebook se pueden mover usando el explorador Jupyter, para esto solo basta con seleccionar el archivo y arrastrar a la carpeta de destino.

Figura 4.32: Moviendo un archivo.

Descargar y exportar archivos de Jupyter Notebook desde la consola local

En algunas ocasiones será necesario descargar y compartir tu Notebook con otras personas para que puedan reproducirlo o modificarlo. Otras veces, será necesario exportarlo en un formato que no requiera Jupyter, por ejemplo (.html). Este formato puede ser muy útil para compartir los comentarios en Markdown, o los resultados de tu código, tal cual lo harías en tu Notebook. En este formato solo hace falta tener un navegador que lea el .html e incluso no es necesario estar conectado a Internet. Para bajar el archivo o exportarlo, debes ir al Notebook y desde el Menú File seleccionar el formato de salida.

Figura 4.33: Descargando un archivo.

4.6 Atajos del teclado en Jupyter Notebook

Al finalizar la lección, serás capaz de:

  • Listar una serie de atajos en el teclado que son útiles para Jupyter.

Lista de atajos para Jupyter Notebook

Es posible manipular las herramientas de Jupyter usando los menús desplegables o los atajos con el teclado. La lista que aparece a continuación son tareas comunes que se pueden desarrollar en Jupyter.

Figura 4.34: Atajos del teclado en Jupyter Notebook.

Una lista completa de los atajos puede ser obtenida desde el menu Help/Show Keyboard Shortcuts.

Figura 4.35: Atajos completos del teclado en Jupyter Notebook.