Introducción a Jupyter (IPython Notebook)

Estándar

En esta entrada, vamos a conocer una de las herramientas más útiles de Python: Jupyter (anteriormente conocido como IPython Notebook). La descripción a simple vista muestra una herramienta muy simple: es un intérprete de Python que funciona con celdas independientes de código y texto libre en un navegador web.

En el momento en el que IPython Notebook cambió de nombre a Jupyter, esta herramienta soporta también algunos otros lenguajes de programación.

La grandeza de Jupyter está en que nos permite presentar el código de una forma diferente. En lugar de archivos ejecutables con comentarios, o archivos de texto plano/HTML/LaTex con fragmentos de código estático, una libreta de Jupyter contiene celdas independientes de dos tipos. Por un lado, tenemos celdas de texto libre que nos permiten escribir fragmentos de HTML o LaTex. Por otro lado, tenemos celdas de código en los que podemos introducir líneas de código ejecutable, con un espacio del documento reservado para obtener la salida del código ejecutado.

Las libretas de Jupyter son especialmente útiles para presentar algoritmos o explicar fragmentos de código. Personalmente, lo uso para analizar conjuntos de datos cuya estructura desconozco a priori. Con Jupyter puedo aplicar un fragmento de código sobre los datos, visualizar los resultados y decidir los siguientes pasos. Como dato interesante, estoy escribiendo esta entrada usando Jupyter.

Jupyter se instala automáticamente con las distribuciones gratuitas y comerciales de Python, pero no con la versión "pura". Para conseguirlo en este caso, podemos utilizar pip:

pip install jupyter

Para iniciarlo, debemos abrir una terminal (cmd en Windows) y ejecutar lo siguiente:

ipython notebook

Esto iniciará el servidor y abrirá una ventana del explorador:

Explorador de archivos de Jupyter

Desde esta ventana podremos navegar por el sistema de archivos y crear nuevos directorios. Para crear una nueva libreta, seleccionamos New en la esquina superior derecha y seleccionamos Python como lenguaje de la libreta. Esto abrirá una nueva pestaña en el navegador con una libreta sin título. Veamos esta pantalla:

Edición de una libreta

La primera fila contiene el título (modificable) de la libreta y muestra el estado de los cambios. La segunda fila contiene la barra de menu que controla las celdas y el intérprete. A continuación, una barra de herramientas nos da algunas funciones rápidas, donde podremos definir si una celda es de código o de texto. Hasta este punto, esta entrada ha sido escrita en una celda de texto.

Las celdas de código están numeradas. En ellas se puede escribir código y ejecutarlo bien pulsando el icono de reproducción de la barra superior, o bien con la combinación Mayus+Intro.

In [1]:
print("Esto es una celda de codigo Python")
print("Podemos ejecutar cualquier comando presionando Mayus+Intro")
print("El resultado se mostrara debajo de la celda")
Esto es una celda de codigo Python
Podemos ejecutar cualquier comando presionando Mayus+Intro
El resultado se mostrara debajo de la celda
In [2]:
txt = """Dentro de la misma libreta, todas las celdas de codigo se ejecutan
en la misma instancia de Python, por lo que las variables y las importaciones se mantienen 
en diferentes celdas """
In [3]:
print(txt)
Dentro de la misma libreta, todas las celdas de codigo se ejecutan 
en la misma instancia de Python, por lo que las variables y las importaciones se mantienen 
en diferentes celdas  

Jupyter nos permite hacer una aproximación interactiva y visual a los problemas. Interactiva en tanto que si los resultados de una celda no son los que esperamos, podemos modificarla y volver a ejecutarla sin necesidad de volver a ejecutar el resto de las celdas (a menos que necesitemos resetear el valor de alguna variable). Y visual dado que podemos representar datos con matplotlib:

In [4]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10*np.pi,0.1)
y = np.sin(x)
plt.plot(x,y)
plt.show()

La primera línea de esta celda es un comando mágico de IPython, que modifica el comportamiento del intérprete. En este caso, hemos indicado que queremos que el gráfico representado en la misma libreta, en lugar de en una ventana exterior. Esto es muy útil en presentaciones, pero tiene la limitación de que no se puede cambiar el gráfico ni el nivel de zoom.

La salida se actualiza en vivo, lo cual es útil cuando se ejecuta un código con iteraciones que duran un tiempo considerable:

In [5]:
from time import sleep

for i in range(5):
    print(str(i)+' segundos')
    sleep(1)
0 segundos
1 segundos
2 segundos
3 segundos
4 segundos

Podemos exportar los resultados a HTML, PDF o a un archivo .py (un script tradicional de Python donde cada celda de texto se traduce a comentarios). Siempre podremos volver a la libreta guardada con Jupyter y seguir modificándola y ejecutando.

En esta entrada hemos visto las capacidades de esta gran herramienta. Como puede verse, no tiene demasiadas funcionalidades ni opciones; es un programa bastante simple. Pero abre una nueva dimensión en el uso del código, y eso es lo que lo hace una herramienta muy potente.

2 comentarios en “Introducción a Jupyter (IPython Notebook)

  1. Ana Belén González

    Gracias por una explicación tan sencilla y completa de Jupyter. Estoy empezando a trabajar con Python y Jupyter y me ha resultado de gran ayuda.

Responder a Ana Belén González Cancelar la respuesta

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