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:
El Jupyter Notebook IDE, es una aplicación web que permite generar un ambiente de trabajo donde se puede escribir y ejecutar código.
Archivos
.ipynbde Jupyter, son un tipo de archivos que se pueden usar para almacenar código Python y Markdown para proyectos individuales o flujos de trabajos.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
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.
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.
Es posible revisar que tipo de celdas estamos trabajando con solo hacer clic y mirar en la barra de herramientas.
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.
Esto levanta una sesión de Jupyter Notebook en el navegador. Es necesario dejar abierto el Terminal mientras se está trabajando en el 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.
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).
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.
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.
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.
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).
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.
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.
Si se ejecuta la sintaxis resulta:
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.
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.
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.
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.
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.
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.
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.
Renombrar archivos de Jupyter Notebook
Para renombrar archivos también se cuenta con dos alternativas:
Desde el menú File del Notebook.
Desde la pestaña Files en el explorador de Jupyter.
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.
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.
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.
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.
Una lista completa de los atajos puede ser obtenida desde el menu Help/Show Keyboard Shortcuts.