domingo, 1 de abril de 2018

Elementos de un cuaderno de JupyterLab




En esta entrada crearemos otro cuaderno a partir del archivo "Fibonacci.ipynb" de la entrada anterior en el que insertaremos nuevos elementos. En el cuaderno se agregarán celdas con textos, una imagen, una tabla construida con los datos de un archivo CSV, una ecuación, un gráfico de líneas, un enlace web y un vídeo de Youtube.

Para comenzar con la tarea, iniciar Jupyterlab ejecutando desde la línea de comandos:

$ jupyter lab

Una vez que arranque la aplicación web accederemos a la carpeta "Cuadernos" desde "Files" y crearemos una carpeta llamada "imagen" haciendo clic en el icono "New Folder" de la barra de herramientas.

Después, descargaremos la siguiente imagen de la famosa Espiral de Fibonacci a dicha carpeta:


Cualquier archivo del disco local o de un recurso compartido de una red se puede incorporar a la carpeta actual utilizando la opción "Upload Files" (se encuentra a la derecha de "New Folder" en la barra de herramientas). 




También, para mostrar más adelante cómo insertar una tabla con los datos de una archivo CSV crearemos en el editor de textos del panel "Launcher" un archivo de textos "untitled.txt" en la carpeta "Cuadernos" con el siguiente contenido:


Mes,Genealogia,Parejas
1,Nace 1 pareja de conejos (pareja A),1
Fin 1,La pareja A tiene 1 mes de edad. Se cruza la pareja A,1+0=1
Fin 2,La pareja A da a luz a pareja B. Se vuelve a cruzar pareja A,1+1=2
Fin 3,La pareja A da a luz a pareja C. La pareja B cumple 1 mes. Se cruzan las parejas A y B.,2+1=3
Fin 4,"Las parejas A y B dan a luz D y E. La pareja C cumple 1 mes. Se cruzan parejas A, B y C",3+2=5
Fin 5,"A, B y C dan a luz a F, G y H. D y E cumplen un mes. Se cruzan A, B, C, D y E",5+3=8


Para salvar los datos presionar [Control+S]. Para finalizar los preparativos renombrar el archivo "untitled.txt" con "conejos.csv" con la opción "Rename" del menú contextual que aparece al hacer clic con el botón derecho sobre el nombre del archivo.



Un archivo CSV (de Valores Separados por Comas) es un tipo de documento que representa los datos de forma parecida a una tabla, es decir, organizando la información en filas y columnas.

En un archivo CSV los datos de las diferentes columnas son separados habitualmente por un signo de puntuación (una coma, un punto y coma, etc.) u otro carácter que actúa como separador. En cambio, las filas suelen separarse por un salto de línea. Además, muchas veces los datos suelen ir precedidos por un encabezado con los nombres de campos o identificadores de columnas, como puede apreciarse en el ejemplo.

Un archivo CSV almacena la información en un formato accesible que facilita el intercambio entre aplicaciones. Es frecuente en muchos programas que manejan datos contar con una opción para importar o exportar la información en dicho formato. También, las aplicaciones ofimáticas de hojas de cálculos (Calc, Google Sheets, Gnumeric, Calligra Sheets, Excel, etc.) incorporan opciones para abrir y guardar la información en formato CSV.

A continuación, hacer clic con el botón derecho sobre el nombre del archivo "Fibonacci.ipynb" para mostrar el menú contextual y seleccionar la opción "Duplicate" para crear una copia del mismo: "Fibonacci-Copy1.ipynb". Después, volver a mostrar el menú contextual y seleccionar "Rename" para renombrar el cuaderno como "Fibonacci-2.ipynb". Por último, abrir la copia del cuaderno haciendo doble clic sobre su nombre.


Insertar una imagen y un texto




Para insertar la imagen de la espiral de Fibonnaci con una descripción seleccionar la última celda y agregar una nueva al final del cuaderno del tipo "Markdown" haciendo clic en el botón "+". En ella incluir el siguiente código que ejecutaremos con [Control+Enter]:


![title](imagen/espiral.png "Espiral de Fibonacci")

La **Espiral de Fibonacci** se puede construir a partir de los rectángulos de Fibonacci con los números de la sucesión.


Insertar una tabla con datos de un archivo CSV




Para insertar una tabla con los datos del archivo "conejos.csv" agregar una celda al final del cuaderno del tipo "Markdown" haciendo clic en el botón "+" con el siguiente texto y ejecutar con [Control+Enter]:


La sucesión fue descrita y dada a conocer en occidente por Fibonacci como la solución a un problema de la cría de conejos: «Cierto hombre tenía una pareja de conejos en un lugar cerrado y deseaba saber cuántos se podrían reproducir en un año a partir de la pareja inicial, teniendo en cuenta que de forma natural tienen una pareja en un mes, y que a partir del segundo se empiezan a reproducir»

La siguiente tabla describe el proceso de reproducción, mes a mes:


Después, hacer clic en el botón "+" o presionar la tecla [B] para insertar una nueva celda al final del cuaderno del tipo "CODE" con el siguiente código Python y ejecutar con [Control+Enter]:

import pandas as pd
tabla_conejos=pd.read_csv("conejos.csv")
print(tabla_conejos)

En el código anterior se importa Pandas, una biblioteca para manipulación y análisis de datos para Python. Es bastante eficiente en el manejo de archivos CSV, permitiendo obtener los datos de un número de filas desde el comienzo o final de la tabla, seleccionar columnas, filtrar la información, etc.. como en los siguientes ejemplos:

# Obtener las tres primeras filas desde el comienzo de la tabla

tabla_conejos=pd.read_csv('conejos.csv').head(3)
tabla_conejos

# Obtener sólo los datos de las columnas "Mes" y "Parejas"

tabla_conejos=pd.read_csv('conejos.csv', usecols=['Mes', 'Parejas'])
tabla_conejos    


Insertar una ecuación




Para incluir ecuaciones en un cuaderno utilizaremos la codificación LaTex dentro de texto Markdown o con código Python generando las ecuaciones con el módulo Latex:

Para insertar una ecuación en el cuaderno agregar una celda de tipo "Markdown" al final del cuaderno (presionando la tecla [B] con el siguiente texto y ejecutar con [Control+Enter]:


Los números de Fibonacci tienen la función generadora:

$$f(x) = \frac{x}{1 - x - x^2}$$


El carácter $ delimita el comienzo y el final de la ecuación. Además, en este ejemplo el segundo carácter $ en cada extremo hace que cuando se ejecute la celda se muestre la fórmula en el centro de la línea con respecto a los márgenes izquierdo y derecho.

El siguiente código genera la misma fórmula con Latex pero con código Python:

from IPython.display import display, Math, Latex
display(Math(r'f(x) = \frac{x}{1 - x - x^2}')) 


Insertar un gráfico de líneas


 

Para insertar un gráfico de líneas que representa la sucesión de Fibonacci agregar una nueva celda del tipo "CODE" haciendo clic en el botón "+", incluir el siguiente código Python y ejecutar con [Control+Enter]:

import matplotlib.pyplot as plt
sucesion = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
plt.title("Sucesión de Fibonacci")
plt.plot(sucesion)
plt.show()


Insertar un enlace




Para insertar un texto que incluye un enlace web agregar una nueva celda al final del cuaderno del tipo "Markdown" haciendo clic en el botón "+". En ella incluir el siguiente código y ejecutar con [Control+Enter]:

El siguiente video de [Arturo Geometría](https://www.youtube.com/user/ArturoGeometria) muestra el modo de dibujar la Espiral de Fibonacci a partir de los rectángulos:


Insertar un video de Youtube


Para insertar un vídeo de Youtube agregar una nueva celda del tipo "CODE" haciendo clic en el botón "+". En ella incluir el siguiente código Python que se ha contruído copiando el código de inserción que se obtiene en la propia página del video dentro de la función HTML() y ejecutar con [Control+Enter]:


from IPython.display import HTML

HTML('<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/R3KNVxYwBFQ?ecver=1" width="640"></iframe>')


Otra posibilidad es utilizar la función mágica %%HTML en una celda con el código HTML que incrusta el vídeo:


%%html
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/R3KNVxYwBFQ?ecver=1" width="640"></iframe>


Para cerrar el cuaderno y finalizar la sesión de trabajo seleccionar "Close and Shutdown Notebook" en el menú "File". Para detener el servidor web acceder a la consola donde se inició JupyterLab y presionar [Control+C]. Después, cuando aparezca el siguiente mensaje: "Shutdown this notebook server (y/[n])?" presionar la tecla [y].


Ir al índice del tutorial de JupyterLab