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:
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:
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.
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")
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 """
print(txt)
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:
%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:
from time import sleep
for i in range(5):
print(str(i)+' segundos')
sleep(1)
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.
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.
Me alegro de que te haya ayudado 🙂