Manual Jupyter Spanish

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 38

DownloadManual Jupyter Spanish
Open PDF In BrowserView PDF
Universidad Complutense de Madrid

MANUAL DE USO DE JUPYTER NOTEBOOK
PARA APLICACIONES DOCENTES

Autores:
Eduardo Cabrera Granado
Elena Dı́az Garcı́a

Índice general
Introducción

1

Jupyter Notebook

3

Python

11

Gestión de cursos

21

Propuestas Docentes

27

Conclusiones

31

Referencias

33

Introducción
El proyecto de código abierto Jupyter pretende generar una plataforma computacional que permita utilizar diferentes lenguajes (su nombre proviene de unir los
3 lenguajes quizás más populares en cálculo cientı́fico: Julia, Python y R). El pilar
en el que se sustenta es la interfaz web Jupyter Notebook, que aglutina la ejecución
de código, inclusión de texto junto a ecuaciones en LaTeX (vı́a MathJax), video, y
todo lo que se pueda visualizar con un navegador. Su funcionalidad, por otro lado,
puede ser extendida gracias a herramientas como nbconvert , encargada de gestionar
la conversión a formatos como LaTeX, PDF o presentaciones web basadas en Reveal.js, o ipywidgets que proporciona widgets interactivos dentro del documento. Su
desarrollo ha sido patrocinado por compañı́as como Micro- soft o Google ası́ como
impulsado por el proyecto de infraestructura europea Horizonte 2020 denominado
OpenDreamKit. Su uso en entornos docentes ha crecido en popularidad debido a
su gran flexibilidad, fácil acceso a través del navegador y las posibilidades añadidas
de separar el propio documento del núcleo de cálculo en el lenguaje escogido. Esta
arquitectura permite abandonar la instalación local. El profesor puede hacer uso
de un servidor externo (o su propio ordenador) para proporcionar a los estudiantes
lecciones, presentaciones, o tareas interactivas. Esta caracterı́stica permite eliminar
una de las grandes barreras de acceso que se presentan al incluir un nuevo tipo de
documento o programa, como es su instalación en el equipo personal del estudiante.
Utilizando este tipo de documentos se pueden generar lecciones o material de apoyo
al estudio individual ricos en contenido, ası́ como material de trabajo colaborativo
que incluya elementos de cálculo numérico. Dado que resulta inevitable que un estudiante del área de ciencias necesite trabajar con algún tipo de programa de cálculo a

2

Introducción

lo largo de su carrera universitaria ası́ como en su futuro laboral, la inclusión de este
tipo de elementos permite al alumno comenzar a familiarizarse con ellos, adquiriendo por tanto una competencia transversal de gran valor para su formación. Además,
proporciona otro nivel más de profundización en los contenidos de la asignatura, que
podrá ser explorado por aquellos estudiantes con una mayor motivación, aunque no
se requiera para el desarrollo normal del curso.
A lo largo del presente manual veremos las caracterı́sticas generales de la interfaz
Jupyter Notebook, su instalación y uso para proporcionar lecciones y ejercicios útiles
en estudios cientı́ficos. A su vez, se describirán varias opciones para proporcionar
un servidor de este tipo de documentos accesible por los estudiantes a través del
ordenador, ası́ como añadidos especı́ficos para docencia como es la gestión de un
curso ı́ntegramente realizado en Jupyter Notebooks.

Jupyter Notebook

Jupyter Notebook es una interfaz web de código abierto que permite la inclusión de
texto, vı́deo, audio, imágenes ası́ como la ejecución de código a través del navegador
en múltiples lenguajes. Esta ejecución se realiza mediante la comunicación con un
núcleo (Kernel) de cálculo. Aunque en principio, el equipo de desarrollo de Jupyter
Notebook incluye por defecto únicamente el núcleo de cálculo Python, el carácter
abierto del proyecto ha permitido aumentar el número de núcleos disponibles [1],
incluyendo, por ejemplo Octave, Julia, R, Haskell, Ruby, C/C++, Fortran, Java,
SageMath, Scala, o también Matlab y Mathematica. Esta interfaz, agnóstica del
lenguaje (de ahı́ su nombre al unir 3 de los lenguajes de programación de código
abierto más utilizados en el ámbito cientı́fico: Ju-lia, Py-thon y R), puede suponer
por tanto una estandarización para mostrar el contenido de cursos cientı́ficos, sin
encontrarse limitado a la adopción de un único lenguaje.

Esta versatilidad ha permitido una adopción creciente tanto en el ámbito docente como investigador. En este último campo, la inclusión de Jupyter Notebooks con
cálculos, datos y figuras adicionales a artı́culos aparecen cada vez más en las revistas
cientı́ficas. Por ejemplo, los datos y cálculos facilitados en este formato por el equipo
de LIGO, dedicado al descubrimiento de las ondas gravitacionales. En lo referente
a su uso docente cabe destacar el curso AeroPython de la Universidad George Washington e impartido por la profesora Lorena Barba enteramente utilizando Jupyter
Notebooks.

4

Jupyter Notebook

Orı́genes
Jupyter Notebook nace como una evolución de la interfaz Ipython Notebook, básicamente con las mismas funcionalidades pero añadiendo la posibilidad de ejecutar
código en múltiples lenguajes. Por otro lado, la interfaz web, común tanto a Jupyter
Notebook como a Ipython Notebook, supone el desarrollo en software libre de un
“cuaderno computacional” al mismo estilo que los cuadernos empleados en el programa Mathematica o en Maple y cuyo primer intento fue realizado por William Stein
para el programa de cálculo Sage (Sage Notebooks). Para este desarrollo, llevado a
cabo por Fernando Pérez y Robert Kern, en la Universidad de Berkeley (California,
EEUU), se basaron en principio en el lenguaje de programación Python, dada su
gran versatilidad, amplia adopción por la comunidad cientı́fica y su carácter libre.
Aunque en un principio el desarrollo no se centró en una interfaz web, sino en proporcionar un intérprete de comandos interactivo para el lenguaje Python (denominado
IPython), a partir de 2010 el trabajo del equipo de desarrollo de IPython permite
la aparición de la interfaz Jupyter Notebook.
Desde entonces, el desarrollo de estos “cuadernos computacionales”, ası́ como su
uso, no ha parado de crecer. Por ejemplo, la plataforma de desarrollo de proyectos
libres más importante actualmente, GitHub, permite la visualización de Jupyter
Notebooks directamente en su página web, alojando más de un millón de este tipo
de documentos, de libre acceso, en sus servidores.

Descripción de la interfaz
Al ejecutar Jupyter Notebook en el ordenador, aparecerá, en nuestro navegador una
primera página denominada Jupyter Dashboard. En ella podremos ver la lista de
archivos disponibles en la carpeta en donde hayamos ejecutado nuestro programa.
Además, en caso de tener instalados añadidos (extensiones) a nuestro Jupyter Notebook, como por ejemplo el gestor de cursos y corrección automática Nbgrader,
también nos aparecerá en esta página de acceso. Otro elemento importante es el
botón, en la esquina superior derecha, para subir archivos al servidor. En caso de

5
ejecutarse Jupyter Notebook localmente, este botón no presenta una gran funcionalidad, pero sı́ para el caso en que accedamos a estos documentos desde otro ordenador
y a través del navegador.
Para generar un primer Jupyter Notebook, pincharemos en New y elegiremos el
núcleo de cálculo entre aquellos que tengamos instalados. Por defecto únicamente
tendremos Python. Un ejemplo de un documento tipo Jupyter Notebook puede
visualizarse en la Figura 1.

Figura 1. Ejemplo de un documento Jupyter Notebook.

En la parte superior del documento disponemos de los distintos menús para
controlar tanto la edición, como para descargar el documento en varios formatos (por
ejemplo, PDF) ası́ como insertar o borrar partes del documento. También incluye
la elección y el control del núcleo de cálculo (pudiendo pararlo si ası́ se desea) y un
botón de ayuda que cubre gran parte de las caracterı́sticas de Jupyter Notebook.
El documento en sı́ se divide en distintas celdas, el comportamiento de las cuales puede seleccionarse entre distintas opciones: tı́tulo (de diversos tamaños), texto
(plano o enriquecido utilizando el lenguaje Markdown) o código. Aparte de estas opciones, las librerı́as especı́ficas permiten importar imágenes o vı́deos, incluir enlaces
a recursos web o incluso incrustar una página web completa dentro del documento.
Para insertar texto con formato, la opción elegida por Jupyter Notebook es
utilizar el lenguaje Markdown. De este modo, por ejemplo, se pueden incluir listas,
texto en negrita o cursiva, tablas o imágenes. La cantidad de tutoriales en la red
sobre este lenguaje es inmenso por lo que nos centraremos en indicar cómo se utiliza

6

Jupyter Notebook

para las opciones de formato más utilizadas:
• Texto en negrita/cursiva: El texto en negrita se indica entre dos pares de
asteriscos. De este modo **palabra** aparecerá como palabra. Por otro lado,
el texto en cursiva se indica entre dos asteriscos simples, es decir *palabra*
aparecerá como palabra.
• Listas: Las listas en Markdown se realizan indicando un asterisco o un número seguido de un punto si se desean listas numeradas. Markdown organiza
automáticamente los items asignándoles el número correcto.
• Inclusión de imágenes: La sintaxis para incluir imágenes en Markdown es
![nombre alternativo](dirección de la imagen) en donde el nombre alternativo aparecerá en caso de que no se pueda cargar la imágen y la dirección
puede referirse a una imagen local o un enlace en Internet.
• Inclusión de código HTML: El lenguaje Markdown es un subconjunto del lenguaje HTML y en donde se necesite un mayor control del formato, se puede
incluir directamente en HTML.
• Enlaces: Las celdas de texto pueden contener enlaces, tanto a otras partes del
documento, como a páginas en internet u otros archivos locales. Su sintaxis es
[texto](dirección del enlace).
• Fórmulas matemáticas: Gracias al uso de MathJax, se puede incluir código
en LaTeX para mostrar todo tipo de fórmulas y expresiones matemáticas.
Las fórmulas dentro de una lı́nea de texto se escriben entre sı́mbolos de dolar
($...$) mientras que las expresiones separadas del texto utilizan sı́mbolos de
dolar dobles ($$...$$).
Estas posibilidades permiten utilizar las celdas de texto de manera versátil documentando el código de otras celdas o, por ejemplo, explicando detalladamente algún
concepto teórico, del que después se puede presentar un ejercicio.
La creación de una nueva celda provoca la aparición automática de una celda
de código. El lenguaje que se utiliza viene determinado por la elección del núcleo

7
para todo el documento. Actualmente, mezclar dos lenguajes de programación en el
mismo documento no está soportado.

Instalación
Uno de los requisitos que el sistema donde se instale Jupyter Notebook ha de poseer es disponer de Python. Aunque los documentos permiten la ejecución en otros
lenguajes de programación, algunas de las funciones de Jupyter Notebook están implementadas en este lenguaje. Dada su enorme popularidad en el ámbito cientı́fico,
suites de cálculo cientı́fico ofreciendo gran cantidad de módulos de Python han aparecido en los últimos años. Dentro de ellas, quizás la más conocida es Anaconda, de
la empresa Continuum Analytics. Este pack de módulos de Python dispone a su vez
de un gestor de paquetes y ha facilitado enormemente la instalación y gestión de
librerı́as de Python relacionadas con aplicaciones cientı́ficas.
Uno de los módulos por defecto que Anaconda instala es Jupyter Notebook por
lo que la instalación recomendada, independientemente del sistema operativo, es
instalar dicha distribución de Python cientı́fico. Para ello, la página de descarga de
Anaconda [2] permite obtener gratuitamente este producto. Siguiendo los pasos de
instalación, podemos tener disponible Jupyter Notebook, el cual podemos ejecutar
escribiendo jupyter notebook en una consola.

Plataformas online para su uso sin instalación
Aunque la instalación de Jupyter Notebook se ha simplificado enormemente en los
últimos años, una de las caracterı́sticas esenciales en su uso docente es la separación
de esta interfaz del núcleo de cálculo, lo cual hace que el estudiante pueda consultar,
mediante un navegador, los documentos interactivos en este formato que se ejecutan
en otro ordenador, bien sea el del profesor o un servidor facilitado por un servicio en
la nube. A continuación se enumeran algunas de estas alternativas. Nos centraremos
en aquellas que no se restrinjan a mostrar una versión estática del documento, sino
que permitan la ejecución de código en ellos. Ejemplos del primer caso, podrı́an ser

8

Jupyter Notebook

GitHub [3] o NbViewer [4].
1. CoCalc: Este entorno de computación online [5] proporciona varias herramientas únicas destinadas a un uso docente: permite la edición colaborativa de
documentos Jupyter Notebook, lo que multiplica las posibilidades para realizar
trabajos en grupo y dispone de un gestor de cursos y tareas, lo que simplifica
la tarea del profesor para proporcionar tanto material de apoyo, como para
calificar tareas y distribuir una retroalimentación a los estudiantes. Además, es
gratuito y por tanto los estudiantes siguen manteniendo su cuenta al finalizar
el curso, lo que permite el acceso a las simulaciones y explicaciones que pueden resultar de utilidad en otras asignaturas de cursos posteriores. También
dispone de paquetes de cursos de pago en donde se ofrece acceso a servidores
más estables que en las cuentas gratuitas y más recursos computacionales.
2. Gryd: Este servicio [6] ofrece cuentas gratuitas para estudiantes ası́ como un
paquete académico para la gestión de cursos utilizando nbgrader, aunque su
precio no se encuentra publicado actualmente.
3. Google Colab: Aunque actualmente su acceso se encuentra restringido [7]
Google Colab proporciona un servidor de Jupyter Notebooks donde se incluye
la opción de editar colaborativamente un mismo documento, al estilo de Google
Documents. Esta funcionalidad lo hace especialmente atractivo como servicio
destinado a trabajos en grupo durante el desarrollo de un curso universitario.
4. MyBinder: Este servicio [8] permite la creación de un servidor temporal para ejecutar los documentos Jupyter Notebooks alojados en un repositorio en
GitHub. Es completamente gratuito.
5. JupyterHub: Más que un servicio online, JupyterHub es una de herramienta
más dentro del ecosistema Jupyter, enfocado a proporcionar un servidor multiusuario para poder ser utilizado en clase o por un equipo de investigación, por
ejemplo. Sobre esta herramienta dedicamos un capı́tulo aparte en este mismo
manual por lo que su discusión se pospone a ese punto.

9

Exportar a otros formatos
Aunque los documentos generados por Jupyter Notebook son fácilmente accesibles a través de un navegador, en ocasiones es necesario o útil disponer
de otros formatos, por ejemplo, utilizar un archivo Python ejecutable. Con
el fin de facilitar la conversión de los notebooks, Jupyter dispone desde la
versión 1.0 (versión actual a dı́a de hoy) de la herramienta nbconvert, que
permite exportar los documentos hechos en Jupyter Notebook a otros formatos. Concretamente, la herramienta incluida en la instalación de Jupyter
Notebook denominada nbconvert proporciona la conversión a documentos
estáticos (es decir, las celdas no pueden ejecutarse), en formato HTML, LaTeX, Markdown, reStructuredText, script de Python ejecutable y, finalmente,
en formato presentación. El uso de esta herramienta requiere la instalación
de un nuevo paquete denominado Pandoc, que puede instalarse a través del
gestor de paquetes de las distintas distribuciones Linux o bien, a través de su
página web [9].
El funcionamiento de esta herramienta puede realizarse mediante una terminal
o consola, o bien directamente desde el documento, a través del menú File
->Download as..., aunque para explotar todas sus capacidades indicamos a
continuación la sintaxis para su uso en una terminal. Esta es,
$ jupyter nbconvert --to FORMAT notebook.ipynb
donde FORMAT es el formato que se desea obtener. Por ejemplo, si queremos
convertir nuestro documento a un archivo en LaTeX, escribirı́amos:
$ jupyter nbconvert --to latex notebook.ipynb
Una vez generado el archivo .tex podemos convertirlo a pdf mediante, por
ejemplo, pdflatex o cualquier editor de LaTeX. Si queremos realizar realizar
la conversión a formato pdf directamente, podemos añadirlo a la anterior instrucción, quedando,
$ jupyter nbconvert --to latex notebook.ipynb --post PDF

10

Jupyter Notebook
También es posible modificar las plantillas de nuestro archivo LaTeX generado
a formato libro por ejemplo añadiendo --template book. Es necesario hacer
notar que el formato presentación no genera un archivo PowerPoint o similar,
sino una presentación Reveal.js en HTML, que requiere para su visualización
que el ordenador muestre la presentación en el navegador. Este requisito se
cumple si añadimos a la lı́nea anterior la opción --post serve. Este tipo
de presentaciones, aunque más difı́ciles de mostrar por la necesidad de que
el ordenador actúe como servidor de esa página en HTML, dan un mayor
número de opciones que las presentaciones tradicionales y son más sencillas de
compartir a través de diferentes sistemas operativos y plataformas.
Para más información, se pueden consultar los siguientes enlaces [10, 11].

Recursos en la red
La cantidad de recursos en la red dedicada a Jupyter Notebooks no para de crecer y
de modificarse con el tiempo. Es por ello que la siguiente lista ha de tomarse como
una muestra, para nada completa, y válida únicamente en las fechas en las que se
ha generado este documento. Sin embargo, y dada la importancia de los sitios web
a los que se refieren los siguientes enlaces, es esperable que, aunque nuevos sitios de
referencia puedan surgir, los resaltados a continuación puedan seguir siendo recursos
útiles en el futuro.
1. Documentación de Jupyter Notebook [12]
2. Subforo en Reddit dedicado a Jupyter Notebooks [13]
3. Galerı́a con una selección de Jupyter Notebooks [14]
4. Página de desarrollo de CoCalc [15]
Dado que el lenguaje principal de los documentos mostrados en el Anexo ha sido
Python, a continuación se muestran algunas de sus caracterı́sticas, especialmente
comparando con otros programas de cálculo como Matlab, también ampliamente
utilizado en los estudios universitarios de carácter cientı́fico.

Python
Among the different alternatives for open source software devoted to computational
programming, Python has become one of the most used options. Thus, learning this
programming language can be very beneficial for students in their future careers.
Moreover, there is a vast amount of scientific modules that are easily imported,
matching the capabilities of Python to those of commercial software.
The most relevant libraries in the scientific environment are:
• SciPy: it groups together many relevant functions for numerical calculations.
• NumPy: it provides specific functions for vector and matrix calculations.
• SymPy: it encompasses all necessary functions for symbolic calculations.
• Matplotlib: it contains tools for 2D and 3D plots (similar to those in MATLAB).
• Mayavi: specific library for 3D plots.
• Pandas: specific library for data management and analysis.
Apart from these, there are numerous libraries designes for specific needs, such
as image processing (openCV), machine learning (scikit-learn) and many more.

Most common commands
We will now enumerate the most common commands in Python to perform scientific
operations in Jupyter Notebook using Pythona as the computational kernel.
a

Notice that we will consider Python 3 as the computational kernel. There are not many diffe-

rences with Python 2, except for some syntax subtleties, an example of which corresponds to the

12

Python
• Library management
– Import all functions within a library: taking the NumPy library as
an example, we would have to write in our document
from numpy import *
There are functions appearing in two different libraries which act differently. Hence, it is sometimes useful to import a library with a distinctive
prefix. Moreover, specially when writing Python scripts, it is good practice to include this prefix for a future reading of the script and to fix
possibly appearing bugs. It is common to choose the prefix np for the
NumPy library. This is accomplished by
import numpy as np
– Import a specific function: sometimes we just want to import a function from a library, instead of the whole library. As an example, let us
consider importing the cosine function from the NumPy library. In this
case, we would write
from numpy import cos
– Advice for educational applications: in general, for scientific subjects, the easiest thing to do would be to use the PyLab environment.
Once executed, this environment automatically imports the most used
functions and allows to write code in a very similar way to MATLAB.
Moreover, in order for the plots to appear in the notebook instead of
in a different tab, it is necessary to include the inline command. Both
aspects are taken care of by writing at the beginning of the file
%pylab inline

b

print command.
b
Another alternative would be to write the following three lines at the beginning of any document:
from numpy import *
from matplotlib.pyplot import *
%matplotlib inline

13
• Commands for numerical calculations:
– Help: we can retrieve more information from a specific function by typing
help(function) or function?
– Printing on screen: in order to display text or the value of a variable,
x, when executing a cell, we would write
print(’Variable x has the value’)
print(x)
– Inserting an image: this is done by importing the function Image. Its
syntax isc
from IPython.display import Image
Image(filename=”TestFigure”)
As an alternative, an image can also be included directly in a Markdown
cell by using Markdown’s syntax, or even with HTML for further customization options, such as changing the size or position of the image in a
cell. In order to include an image in a Markdown cell we would type the
following:
![Alternative Text](files/Test Figure)
Alternative Text in the previous command refers to a text that would
be shown in case the image could not be loaded. The text in parenthesis
corresponds to the directory of the image, which can also be a webpage. If
we want to include an image that is in the same directory as the notebook
is, we have to include the directory after files/.
– Embed a webpage: Jupyter Notebook allows to embed a webpage within the notebook, indicating the width and height of the frame containing
it. In order to do so, we must include the HTML function. An example
would be:
from IPython.display import HTML
c

In this case, the image is considered to be in the same directory as the notebook is, but it is

also possible to insert an image from the Internet.

14

Python
HTML(’