Primeros pasos con Jupyter Notebook

Índice de contenidos

1. Introducción

Jupyter Notebook, en adelante Jupyter, es un entorno de trabajo interactivo que permite desarrollar código en Python (por defecto, aunque veremos más adelante cómo permitir otros lenguajes) de manera dinámica, a la vez que integrar en un mismo documento tanto bloques de código como texto, gráficas o imágenes. Es un SaaS utilizado ampliamente en análisis numérico, estadística y machine learning, entre otros campos de la informática y las matemáticas.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 15′ (2.2 Ghz Intel Core i7, 16GB DDR3).
  • Sistema Operativo: Mac OS High Sierra 10.13

3. Instalación

Lo primero que necesitamos es tener instalado Python 3, que podemos descargar de su web oficial. Una vez hecho, actualizamos vía terminal el gestor de paquetes de Python e instalamos Jupyter. Al arrancarlo, se abrirá una nueva ventana en nuestro navegador predefinido, y la terminal quedará bloqueada con el proceso. Podemos abrirlo en otro navegador, para lo cual se nos indica la URL en la salida por pantalla.

4. Creando un cuaderno

Como arrancamos Jupyter desde la terminal, se abrirá el workspace en la carpeta en la que estemos (que generalmente será nuestro home de usuario). Es conveniente saber que no permite navegar a carpetas superiores a la inicial. Con el botón New, podemos crear:

  • Carpetas (recomendable para organizar todo).
  • Archivos de texto (con un editor bastante simple).
  • Terminales.
  • Cuadernos, que es la opción que vamos a estudiar en este tutorial.
Cuando creamos un cuaderno, se nos abre en una pestaña nueva. La interfaz es muy sencilla, con una barra de menú y herramientas y una celda vacía, que es la unidad básica de trabajo con Jupyter. En una celda, podremos escribir una o varias líneas de código, y ejecutarla. También podemos escribir texto plano, y eliminar la celda del flujo de ejecución del cuaderno o hacer que se muestre de manera diferente si queremos que funcione como título, separador de sección, etc. Lo veremos más adelante. Es importante remarcar que tenemos dos modos de trabajo en Jupyter:
  • Edición, que permite modificar el contenido de las celdas, como si fuera un editor de texto. La celda que tengamos seleccionada se muestra en verde. Podemos entrar en el mismo seleccionando una celda y pulsando Enter.
  • Mando, que nos permite ejecutar celdas o modificar el cuaderno y su estructura. La celda seleccionada se muestra en azul. Podemos volver al modo de mando pulsando Esc.
Para ejecutar una celda, haremos Control + Enter, o si queremos pasar automáticamente a la siguiente después de ejecutarla, podemos hacer Shift + Enter. Para saber cuándo una celda se ha ejecutado, está en ello o ya ha terminado, podemos mirar la cabecera de la celda:
  • Si solamente aparece In [ ], quiere decir que aún no se ha ejecutado.
  • Si lo que tenemos es In [*], entonces está en proceso de ejecución.
  • Si aparece un número entre los corchetes, ya ha terminado de ejecutar. La única pega es que podemos haber hecho cambios posteriores a su ejecución, y esto no se indica de ninguna manera.
Todos los atajos de teclado disponibles están en el botón

5. Escribiendo código

Es importante, a la par que evidente, tener instalados los paquetes de Python que queramos utilizar. Una vez hecho, podemos importarlos al cuaderno. Para los ejemplos utilizados en este tutorial, será necesario instalar los paquetes matplotlib, numpy y emoji. Recuerdo que la instalación de los mismos se hace igual que instalamos jupyter al principio del tutorial, es decir:

Podemos escribir cualquier tipo de algoritmo, como podría ser una búsqueda binaria:

5.1. LaTeX

Para mostrar código LaTeX en nuestro cuaderno, simplemente tenemos que escribir entre dólares (simples o dobles, según queramos), y marcar la celda como texto plano (Markdown).

5.2. Otros lenguajes

Para poder trabajar en Jupyter con otros lenguajes, se han desarrollado diferentes _kernels_. Los más utilizados, aparte del propio python, son:

  • Haskell: kernel ihaskell.
  • Javascript: kernel ijavascript.
  • Julia: kernel ijulia.
Para añadirlos, debemos utilizar los siguientes comandos:

Una vez instalados, simplemente seleccionamos el kernel deseado en la barra de menú de Jupyter.

6. Gráficas

La librería matplotlib.pyplot nos ofrece multitud de opciones a la hora de trabajar con gráficas, desde pintar varias funciones en la misma figura, con diferentes colores o diseños, hasta indicar por ejemplo el máximo de una función.

7. Texto

Varias cositas referentes a la escritura de texto plano:

  • Como se ha mencionado antes, se debe indicar que el tipo de celda es Markdown.
  • Podemos separar el contenido del documento con cabeceras para secciones, subsecciones, subsubsecciones… Es tan fácil como añadir de una a cinco almohadillas (#) al principio de la línea, tantas como el nivel que queramos tenga el título.


  • Podemos añadir imágenes, indicando anchura, alineación, etc., con el comando

  • Si queremos mostrar una lista, con guión + espacio se formateará correctamente.
  • ¡Podemos incluso añadir emojis!

  • 8. Conclusiones

    Como podemos ver, Jupyter es una herramienta bastante completa, que nos permite crear documentos que combinen código ejecutable, representaciones gráficas de su ejecución y texto plano. También es muy sencillo de utilizar (siempre y cuando ya sepas programar en Python, claro), así que ¿a qué esperas?

    P.S.: como extra, te dejo aquí este tutorial formateado en Jupyter. ¡Que lo disfrutes!

    Adictosaltrabajo.com – Jupyter.ipynb