LogoEjk

TEST

Introducci贸n a Jupyter (IPython Notebook)

Dec. 27, 2015

En esta entrada, vamos a conocer una de las herramientas m谩s 煤tiles de Python: Jupyter .

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:

jupyter lab

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. 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 """
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()

sin

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.

Return to blog