Jupyter

Funciones Básicas

  • Jupyter Notebook es una herramienta de desarrollo para facilitar la programación.

  • Está orientada a la Computación Científica y a la Ciencia de Datos.

  • Es un entorno de computación interactivo agnóstico, se puede ocupar en R, python o Julia.

  • Jupyter notebook ofrece muchas herramientas que serán de gran utilidad a lo largo de este curso.

Toolbox

Jupyter notebook nos ofrece el siguiente toolbox:

  • File: En él, puede crear un nuevo cuaderno o abrir uno preexistente. Aquí es también a donde iría para cambiar el nombre de un Cuaderno. Creo que el elemento de menú más interesante es la opción Guardar y Checkpoint. Esto le permite crear puntos de control a los que puede retroceder si lo necesita.

  • Edit: Aquí puede cortar, copiar y pegar celdas. Aquí también es donde irías si quisieras eliminar, dividir o fusionar una celda. Puede reordenar celdas aquí también.

  • View: es útil para alternar la visibilidad del encabezado y la barra de herramientas. También puede activar o desactivar los números de línea dentro de las celdas. Aquí también es donde irías si quieres meterte con la barra de herramientas de la celda.

  • Insert: es solo para insertar celdas encima o debajo de la celda seleccionada actualmente.

  • Cell: le permite ejecutar una celda, un grupo de celdas o todas las celdas. También puede ir aquí para cambiar el tipo de celda, aunque personalmente considero que la barra de herramientas es más intuitiva para eso.

  • Kernel: es para trabajar con el kernel que se ejecuta en segundo plano. Aquí puede reiniciar el kernel, volver a conectarlo, apagarlo o incluso cambiar el kernel que está utilizando su computadora portátil.

  • Widgets: es para guardar y borrar el estado del widget. Los widgets son básicamente widgets de JavaScript que puede agregar a sus celdas para crear contenido dinámico utilizando Python (u otro Kernel).

  • Help: es donde debe aprender sobre los atajos de teclado del Notebook, un recorrido por la interfaz de usuario y mucho material de referencia.

A medida que se avance en el cuso se entrará en detalle en cada una de estas herramientas. Ahora se enseñará las virtudes de los notebooks en aspectos de presentación tipo latex (markdown) y algunos atajos importantes que nos ayudarán en el desarrollo de códigos.

Markdown

https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Markdown-mark.svg/800px-Markdown-mark.svg.png

Jupyter Notebook permite que escribamos texto formateado, es decir, texto con cursiva, negritas, títulos de distintos tamaños, etc., de forma simple. Para ello Jupyter nos permite usar Markdown, que es un lenguaje de marcado (markup) muy popular.

Los lenguajes de markup son lenguajes ideados para procesar texto, algunos de los más conocidos son HTML y \(\LaTeX\). Markdown tiene como objetivo ser un lenguaje de sintaxis minimalista, simple de aprender y usar; de esa forma uno puede dar formato al texto pero sin perder demasiado tiempo en los detalles.

La cantidad de tutoriales en la red sobre Markdown es inmenso, por lo que nos centraremos en indicar las opciones que más se utilizan.

  • 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 el código 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 dólar $...$, mientras que las expresiones separadas del texto utilizan símbolos de dólar dobles $$...$$. Los siguientes son ejemplos de fórmulas matemáticas escritas en \(\LaTeX\):

\[p(x) = 3x^2 + 5y^2 + x^2y^2\]
\[e^{\pi i} - 1 = 0\]
\[\lim_{x \rightarrow \infty} 3x+1\]
\[\sum_{n=1}^\infty\frac{1}{n^2}\]
\[\int_0^\infty\frac{\sin x}{x}\,\mathrm{d}x=\frac{\pi}{2}\]
\[\begin{split}R^2 = \begin{pmatrix} c & s \end{pmatrix} \begin{pmatrix} 1 & 0\\ 0 & 1 \end{pmatrix} \begin{pmatrix} c \\ s \end{pmatrix} = c^2 + s^2\end{split}\]

Algunos atajos importantes

Completado mediantes Tabs.

La completación mediante tabs, especialmente para los atributos, es una forma conveniente de explorar la estructura de cualquier objeto con el que esté tratando.

Simplemente escriba object_name. <TAB> para ver los atributos del objeto. Además de los objetos y palabras clave de Python, la finalización de pestañas también funciona en nombres de archivos y directorios.

import collections
collections. # aprete la tecla <𝑇𝐴𝐵>
  File "<ipython-input-2-666d5d09e416>", line 1
    collections. # aprete la tecla <𝑇𝐴𝐵>
                 ^
SyntaxError: invalid syntax

Buscando ayuda

En caso de necesitar ayuda sobre cualquier comando de Python, Jupyter nos ofrece una función llamada help.

En resumen, ¡suele ser más importante saber como buscar información que memorizarla! Por todo esto, Jupyter nos ofrece ayuda sobre cualquier comando agregando un signo de interrogación ? luego del nombre del comando (y luego ejecutar la celda con la combinación de teclas SHIFT + ENTER).

import numpy as np
np.sum?

Magias (magics).

Jupyter posee varias funciones mágicas predefinidas que sirven para simplificar tareas comunes.

Hay dos tipos de magias:

  • Magias por linea (line magics): son comandos que empiezan con el caracter % y que toman como argumentos valores escritos en la misma línea.

  • Magias por celda (cell magics): son comandos que empiezan con los caracteres %%, y que reciben argumentos en la misma línea y en toda la celda.

En general solo se puede usar una sola mágias por celda en cada celda y debe ser escrita en la primer linea de la celda.

Un buen ejemplo de mágia es %lsmagic que lista todas las magias disponibles:

%lsmagic
Available line magics:
%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %conda  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

Tiempo por celda

En varias situaciones resulta necesario medir el tiempo de ejecución de una porción de código. Para ello podemos usar la magia %timeit. Esta magia está disponible tanto para línea como para celda:

%%timeit 
1+1 # timeit repite (adaptativamente) la medición a fin de reducir el error.
8.98 ns ± 0.22 ns per loop (mean ± std. dev. of 7 runs, 100000000 loops each)

Comandos bash

Jupyter permite también mezclar varios lenguajes de programación en una misma notebook. Por ejemplo, podríamos escribir en bash lo siguiente:

%%bash
for i in {3..1}; do
    echo $i
done
echo "Hola desde $BASH"
3
2
1
Hola desde /usr/bin/bash