Bienvenid@s a Jupyter


Los cuadernos de Jupyter son una herramienta interactiva que te permite preparar documentos con código ejecutable, ecuaciones, texto, imágenes, videos, entre otros, que te ayuda a enriquecer o explicar la lógica detallada de tu código.

Los cuadernos de jupyter son comúnmente usados en: ciencia, análisis de datos y educación. Eso no significa que son de uso exclusivo para esos casos, en mi experiencia los cuadernos me han ayudado a organizar mis pensamientos y visualizar mejor los datos que analizo.

Tal vez te preguntes ¿qué puede hacer Jupyter por mí? Bueno, aquí hay unas cuántas ventajas de usar Jupyter:

  • Trabajar en tu lenguaje preferido.

    • Jupyter tiene soporte para más de 40 lenguajes de programación, incluyendo los que son populares para el análisis de datos como Python (obviamente), R, Julia y Scala. Así que si por algún extraño motivo decides que no te gustó python (lo dudo :P) puedes seguir disfrutando las libretas de jupyter.
  • Compartir tus libretas con quien quieras.

    • En donde quieras y como quieras. Esto significa que puedes escribir tareas y reportes en tus libretas y mandarlos a alguien específico o subirlos a tu repositorio de Github y que todo el mundo sepa lo que hiciste. Esto es como reproducibilidad al máximo...
  • Convierte tus libretas a archivos de diferentas formatos.

    • Puedes convertir tus libretas a documentos estáticos como HTML, LaTeX, PDF, Markdown, reStructuredText,etc. La documentación está en este vínculo y la forma fácil de hacerlo es:
    - Click en "File"

    - Pon el cursos sobre "Download as"

    - Selecciona la opción que prefieras.

  • Widgets interactivos

    • Puedes crear salidas con videos, barras para cambiar valores... Exploraremos esto más adelante.

Ahora que ya sabes lo que Jupyter es, vamos a usarlo!!

Formato y ejecución de celdas

los cuadernos de Jupyter se manejan con celdas y es importante saber que cada celda puede ser de distintos tipos, unas van a ser de código (ya sea python, r, julia o el kernel deseado) y otras de markdown.

Lo primero que vas a hacer es dar click en la celda anterior y en esta para que notes que ambas son celdas de markdown.

Puedes notar que hay formas para que en el documento aparezcan enlaces, listas, palabras resaltadas en negritas, encabezados. Aunado a esto puedes insertar fórmulas en LaTex, código en HTML, imágenes, tablas y código no ejecutable pero resaltado con la sintaxis apropiada.

Ejemplos con estilos usados normalmente

Encabezados

Si escribes esto:

# Encabezado 1
## Encabezado 2
### Encabezado 3
... 
###### Encabezado 6

Obtienes esto:

Encabezado 1

Encabezado 2

Encabezado 3

...

Encabezado 6

Modificaciones en las letras

Puedes hacer que las letras se vean en negritas, cursivas o tachadas de la siguiente forma:

**Negritas** o __Negritas__
*Cursivas* o _Cursivas_
~~Tachado~~

Negrita, Negrita, Cursiva, Cursiva, Tachada

Listas

Puedes listar objetos ya sea con puntos o con números de la siguiente forma

- Objeto 1
    - Sub objeto
    - Otro sub objeto
- Objeto 2

1. Objeto 1
2. Objeto 2

  • Objeto 1
    • sub objeto
    • otro sub objeto
  • Objeto 2

Enlaces a páginas

Para insertar enlaces a páginas relevantes puedes hacerlo directamente copiando y pegando el url o puedes hacer que una palabra esté ligada a un vínculo de a siguiente forma

[palabra](dirección)

Cheatsheet de Markdown. En esta página puedes encontrar la forma de hacer muchas cosas más

Ejercicio 1

Crea una tabla que tenga como encabezados:

  1. Miembro
  2. Edad
  3. Género

De todos los miembros de tu familia

Las celdas por default van a estar en modo de código pero puedes cambiarla de dos formas, una en la barra que está llena de íconos hay una parte que dice Code, esta nada más tienes que hacer un click y cambiarlo a Markdown. La seguna es usando el teclado y lo que debes de hacer es seleccionar tu celda, presionar la tecla Esc, presionar la letra m y presionar Enter para empezar a escribir...

Una vez que terminaste de escribir, puedes ejecutar cada celda ya sea presionando Shift + Enter o con el boton de "play" en la barra de herramientas


In [ ]:

Ya que vimos la parte de Markdown veamos la parte de código.

Cada vez que creas una libreta nueva tu puedes decir en qué lenguaje quieres tu kernel, en nuestro caso sólo veremos python 3 porque no hemos instalado ningún otro kernel para jupyter pero si te interesa puedes ver cómo hacerlo aquí Así que el código que veremos a continuación es en python.


In [ ]:
# Lo primero que ejecutarás será 'Hola Jupyter'
print('Hola Jupyter')

Cada celda la puedes usar para escribir el código que tu quieras y si de repente se te olvida alguna función o tienes duda de si el nombre es correcto IPython es muy amable en ese sentido.

Para saber acerca de una función, es decir cuál es su salida o los parámetros que necesita puedes usar el signo de interrogación al final del nombre de la función.

Ejercicio 2

En la siguiente celda busca las siguientes funciones: sum, max, round, mean. No olvides ejecutar la celda después de haber escrito las funciones.


In [ ]:


In [ ]:


In [ ]:


In [ ]:

Como te pudiste dar cuenta, cuando no encuentra la función te da un error...

En IPython, y por lo tanto en Jupyter, hay una utilidad de completar con Tab. Esto quiere decir que si tu empiezas a escribir el nombre de una variable, función o atributo, no tienes que escribirlo todo, puedes empezar con unas cuantas letras y automáticamente (si es lo único que empieza de esa forma) lo va a completar por ti. Todos los flojos y/o olvidadizos amamos esta herramienta. En caso de que haya varias opciones no se va a completar, pero si lo vuelves a oprimir te va a mostrar en la celda todas las opciones que tienes...


In [ ]:
variable = 50
saludo = 'Hola'

Ejercicio 3

Empieza a escribir las primeras tres letras de cada elemento de la celda anterior y presiona tab para ver si se puede autocompletar


In [ ]:

También hay funciones mágicas que nos permitirán hacer diversas tareas como mostrar las gráficas que se produzcan en el código dentro de una celda, medir el tiempo de ejecución del código y cambiar del directorio de trabajo, entre otras.

para ver qué funciones mágicas hay en Jupyter sólo tienes que escribir

%magic

Todas las funciones "mágicas" empiezan con el signo de porcentaje %


In [ ]:

Gráficas

Ahora veremos unos ejemplos de gráficas y cómo hacerlas interactivas. Estos ejemplos fueron tomados de la libreta para demostración de nature


In [ ]:
# Importa matplotlib (paquete para graficar) y numpy (paquete para arreglos).
# Fíjate en el la función mágica para que aparezca nuestra gráfica en la celda.
%matplotlib inline
import matplotlib.pyplot as plt 
import numpy as np

# Crea un arreglo de 30 valores para x que va de 0 a 5. 
x = np.linspace(0, 5, 30)
y = x**2

# grafica y versus x
fig, ax = plt.subplots(nrows=1, ncols=1)
ax.plot(x, y, color='red')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title('A simple graph of $y=x^2$')

La gráfica que estás viendo sigue la siguiente ecuación $$y=x^2$$

Ejercicio 4

Edita el código de arriba y vuélvelo a correr pero ahora intenta reemplazar la expresión: y = x**2

con: y=np.sin(x)

Gráficas interactivas


In [ ]:
# Importa matplotlib y numpy 
# con la misma "magia".
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

# Importa la función interactiva de IPython usada
# para construir los widgets interactivos
from IPython.html.widgets import interact

def plot_sine(frequency=4.0, grid_points=12, plot_original=True):
    """
    Grafica muestras discretas de una curva sinoidal en ``[0, 1]``.
    """
    x = np.linspace(0, 1, grid_points + 2)
    y = np.sin(2 * frequency * np.pi * x)

    xf = np.linspace(0, 1, 1000)
    yf = np.sin(2 * frequency * np.pi * xf)

    fig, ax = plt.subplots(figsize=(8, 6))
    ax.set_xlabel('x')
    ax.set_ylabel('signal')
    ax.set_title('Aliasing in discretely sampled periodic signal')

    if plot_original:
        ax.plot(xf, yf, color='red', linestyle='solid', linewidth=2)

    ax.plot(x,  y,  marker='o', linewidth=2)

# la función interactiva construye automáticamente una interfase de usuario para explorar
# la gráfica de la función de seno.
interact(plot_sine, frequency=(1.0, 22.0, 0.5), grid_points=(10, 16, 1), plot_original=True)

Esto apenas es una probadita de todo lo que se puede hacer con Jupyter y python. Espero que les haya gustado y los exhorto a conocer más acerca de estas funciones.

Gracias por su atención


In [ ]: