<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Table of Contents
<p><div class="lev1 toc-item"><a href="#Introducción-a-Jupyter-Notebook" data-toc-modified-id="Introducción-a-Jupyter-Notebook-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Introducción a Jupyter Notebook</a></div><div class="lev2 toc-item"><a href="#¿Qué-es-Jupyter-Notebook?" data-toc-modified-id="¿Qué-es-Jupyter-Notebook?-11"><span class="toc-item-num">1.1&nbsp;&nbsp;</span>¿Qué es Jupyter Notebook?</a></div><div class="lev2 toc-item"><a href="#¿Qué-es-un-notebook-science?" data-toc-modified-id="¿Qué-es-un-notebook-science?-12"><span class="toc-item-num">1.2&nbsp;&nbsp;</span>¿Qué es un notebook science?</a></div><div class="lev2 toc-item"><a href="#Estructura-del-notebook-science" data-toc-modified-id="Estructura-del-notebook-science-13"><span class="toc-item-num">1.3&nbsp;&nbsp;</span>Estructura del notebook science</a></div><div class="lev2 toc-item"><a href="#Comando-mágicos" data-toc-modified-id="Comando-mágicos-14"><span class="toc-item-num">1.4&nbsp;&nbsp;</span>Comando mágicos</a></div><div class="lev3 toc-item"><a href="#Ejecutar-códigos-con-otros-kernels" data-toc-modified-id="Ejecutar-códigos-con-otros-kernels-141"><span class="toc-item-num">1.4.1&nbsp;&nbsp;</span>Ejecutar códigos con otros kernels</a></div><div class="lev2 toc-item"><a href="#Cargar-datos" data-toc-modified-id="Cargar-datos-15"><span class="toc-item-num">1.5&nbsp;&nbsp;</span>Cargar datos</a></div><div class="lev2 toc-item"><a href="#Gráficos" data-toc-modified-id="Gráficos-16"><span class="toc-item-num">1.6&nbsp;&nbsp;</span>Gráficos</a></div><div class="lev2 toc-item"><a href="#Widgets" data-toc-modified-id="Widgets-17"><span class="toc-item-num">1.7&nbsp;&nbsp;</span>Widgets</a></div><div class="lev2 toc-item"><a href="#Help" data-toc-modified-id="Help-18"><span class="toc-item-num">1.8&nbsp;&nbsp;</span>Help</a></div><div class="lev2 toc-item"><a href="#LaTeX" data-toc-modified-id="LaTeX-19"><span class="toc-item-num">1.9&nbsp;&nbsp;</span>LaTeX</a></div><div class="lev2 toc-item"><a href="#Instalación" data-toc-modified-id="Instalación-110"><span class="toc-item-num">1.10&nbsp;&nbsp;</span>Instalación</a></div><div class="lev1 toc-item"><a href="#Referencias" data-toc-modified-id="Referencias-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Referencias</a></div>
# Introducción a Jupyter Notebook
## ¿Qué es Jupyter Notebook?
> El IPython Notebook es ahora conocido como el Jupyter Notebook. Es un entorno computacional interactivo, en el que se pueden combinar ejecución de código, texto enriquecido, matemáticas, gráficos y contenidos multimedia [1].
## ¿Qué es un notebook science?
> El Open Notebook Science es la práctica de hacer que el registro primario completo de un proyecto de investigación este disponible públicamente, en línea y tal como está registrado. Esto consiste en colocar el notebook personal, de laboratorio o del investigador en línea junto con todos los datos crudos y procesados así como cualquier material asociado, tal como se genera este material. El enfoque puede resumirse por el lema "ninguna información privilegiada". Este es el extremo lógico de enfoques transparentes a la investigación e incluye explícitamente la puesta a disposición de experimentos inéditos fallidos, menos importantes y de otra índole; llamados "datos oscuros". La práctica de la ciencia del cuaderno abierto, aunque no es la norma de la comunidad académica, ha ganado considerable atención en la investigación reciente general, and peer-reviewed y de medios de comunicación revisados como parte de una tendencia general hacia enfoques más abiertos en la práctica de la investigación y publicación. La Ciencia del cuaderno abierto, por tanto, puede ser descrito como parte de un más amplio movimiento de ciencia abierta que incluye la promoción y adopción de la publicación de acceso abierto, datos abiertos, datos de crowdsourcing y ciencia ciudadana. Está inspirado en parte por el éxito del software de código abierto y se basa en muchas de sus ideas [2].
## Estructura del notebook science
Una manera sencilla de probar Jupyter sin tenerlo instalado en la computadora 
es por medio de un servicio web gratuito
Step1:  Ejecutar códigos con otros kernels
En la celda de código también es posible ejecutar códigos de otras lenguajes.
A continuación, algunas comandos mágicos para ejecutar comandos de otros 
lenguajes
Step2:  Cargar datos
Step3:  Gráficos
Step4:  Widgets
Step5:  Para más informaciones sobre ipywidgets, consulte el manual de usuario [6].
Help
Para ver la documentación de una determinada función o clase puedes ejecutar el comando
<ASSISTANT_TASK:>
Python Code:
a = 1
b = 2.2
c = 3
d = 'a'
%who
def f1(n):
    for x in range(n):
        pass
%%time 
f1(100)
%%timeit
f1(100)
Explanation: Table of Contents
<p><div class="lev1 toc-item"><a href="#Introducción-a-Jupyter-Notebook" data-toc-modified-id="Introducción-a-Jupyter-Notebook-1"><span class="toc-item-num">1&nbsp;&nbsp;</span>Introducción a Jupyter Notebook</a></div><div class="lev2 toc-item"><a href="#¿Qué-es-Jupyter-Notebook?" data-toc-modified-id="¿Qué-es-Jupyter-Notebook?-11"><span class="toc-item-num">1.1&nbsp;&nbsp;</span>¿Qué es Jupyter Notebook?</a></div><div class="lev2 toc-item"><a href="#¿Qué-es-un-notebook-science?" data-toc-modified-id="¿Qué-es-un-notebook-science?-12"><span class="toc-item-num">1.2&nbsp;&nbsp;</span>¿Qué es un notebook science?</a></div><div class="lev2 toc-item"><a href="#Estructura-del-notebook-science" data-toc-modified-id="Estructura-del-notebook-science-13"><span class="toc-item-num">1.3&nbsp;&nbsp;</span>Estructura del notebook science</a></div><div class="lev2 toc-item"><a href="#Comando-mágicos" data-toc-modified-id="Comando-mágicos-14"><span class="toc-item-num">1.4&nbsp;&nbsp;</span>Comando mágicos</a></div><div class="lev3 toc-item"><a href="#Ejecutar-códigos-con-otros-kernels" data-toc-modified-id="Ejecutar-códigos-con-otros-kernels-141"><span class="toc-item-num">1.4.1&nbsp;&nbsp;</span>Ejecutar códigos con otros kernels</a></div><div class="lev2 toc-item"><a href="#Cargar-datos" data-toc-modified-id="Cargar-datos-15"><span class="toc-item-num">1.5&nbsp;&nbsp;</span>Cargar datos</a></div><div class="lev2 toc-item"><a href="#Gráficos" data-toc-modified-id="Gráficos-16"><span class="toc-item-num">1.6&nbsp;&nbsp;</span>Gráficos</a></div><div class="lev2 toc-item"><a href="#Widgets" data-toc-modified-id="Widgets-17"><span class="toc-item-num">1.7&nbsp;&nbsp;</span>Widgets</a></div><div class="lev2 toc-item"><a href="#Help" data-toc-modified-id="Help-18"><span class="toc-item-num">1.8&nbsp;&nbsp;</span>Help</a></div><div class="lev2 toc-item"><a href="#LaTeX" data-toc-modified-id="LaTeX-19"><span class="toc-item-num">1.9&nbsp;&nbsp;</span>LaTeX</a></div><div class="lev2 toc-item"><a href="#Instalación" data-toc-modified-id="Instalación-110"><span class="toc-item-num">1.10&nbsp;&nbsp;</span>Instalación</a></div><div class="lev1 toc-item"><a href="#Referencias" data-toc-modified-id="Referencias-2"><span class="toc-item-num">2&nbsp;&nbsp;</span>Referencias</a></div>
# Introducción a Jupyter Notebook
## ¿Qué es Jupyter Notebook?
> El IPython Notebook es ahora conocido como el Jupyter Notebook. Es un entorno computacional interactivo, en el que se pueden combinar ejecución de código, texto enriquecido, matemáticas, gráficos y contenidos multimedia [1].
## ¿Qué es un notebook science?
> El Open Notebook Science es la práctica de hacer que el registro primario completo de un proyecto de investigación este disponible públicamente, en línea y tal como está registrado. Esto consiste en colocar el notebook personal, de laboratorio o del investigador en línea junto con todos los datos crudos y procesados así como cualquier material asociado, tal como se genera este material. El enfoque puede resumirse por el lema "ninguna información privilegiada". Este es el extremo lógico de enfoques transparentes a la investigación e incluye explícitamente la puesta a disposición de experimentos inéditos fallidos, menos importantes y de otra índole; llamados "datos oscuros". La práctica de la ciencia del cuaderno abierto, aunque no es la norma de la comunidad académica, ha ganado considerable atención en la investigación reciente general, and peer-reviewed y de medios de comunicación revisados como parte de una tendencia general hacia enfoques más abiertos en la práctica de la investigación y publicación. La Ciencia del cuaderno abierto, por tanto, puede ser descrito como parte de un más amplio movimiento de ciencia abierta que incluye la promoción y adopción de la publicación de acceso abierto, datos abiertos, datos de crowdsourcing y ciencia ciudadana. Está inspirado en parte por el éxito del software de código abierto y se basa en muchas de sus ideas [2].
## Estructura del notebook science
Una manera sencilla de probar Jupyter sin tenerlo instalado en la computadora 
es por medio de un servicio web gratuito:
https://try.jupyter.org/
Basicamente el notebook está compuesto por celdas [3]. 
Hay algunos tipos de celdas:
* texto;
* código;
* resultado;
En la celda de texto podemos utilizar formatación con Markdown. Ej:
```md
**negrito**;
*itálico*;
***negrito y itálico***;
```
A parte de formatación de texto, con Markdown podemos inserir imágenes:
![Jupyter Logo](http://jupyter.org/assets/nav_logo.svg)
```md
![Jupyter Logo](http://jupyter.org/assets/nav_logo.svg)
```
```python
print(a+b)
```
## Comando mágicos
Los comando mágicos de Jupyter son comando própios del entorno Jupyter,
y empiezan por % o %%. 
Ejemplo de algunos comandos mágicos [4]:
* Ejecutar códigos python (%run)
* Inserir código desde archivo (%load)
* Listar todas variables del escopo global (%who)
* Visualizar tiempo de ejecución (%%time)
* Visualizar tiempo de ejecución (%%timeit)
* Profile (%prun)
* Depuración (%pdb)
* Comandos shell (!)*
End of explanation
%%bash
ls -lah
Explanation: Ejecutar códigos con otros kernels
En la celda de código también es posible ejecutar códigos de otras lenguajes.
A continuación, algunas comandos mágicos para ejecutar comandos de otros 
lenguajes:
%%bash
%%HTML
%%python2
%%python3
%%ruby
%%perl
End of explanation
import pandas as pd
df = pd.read_csv('data/kaggle-titanic.csv')
df.head()
df.info()
df.describe()
Explanation: Cargar datos
End of explanation
from matplotlib import pyplot as plt
df.Survived.value_counts().plot(kind='bar')
plt.show()
import pixiedust
display(df)
Explanation: Gráficos
End of explanation
import numpy as np
π = np.pi
def show_wave(A, f, φ):
    ω = 2*π*f
    t = np.linspace(0, 1, 10000)
    f = A*np.sin(ω*t+φ)
    
    plt.grid(True)
    plt.plot(t, f)
    plt.show()
show_wave(A=5, f=5, φ=2)
import ipywidgets as widgets
from IPython.display import display
params = dict(value=1, min=1, max=100, step=1, continuous_update=False)
wA = widgets.IntSlider(**params)
wf = widgets.IntSlider(**params)
wφ = widgets.IntSlider(value=0, min=0, max=10, step=1, continuous_update=False)
widgets.interact(show_wave, A=wA, f=wf, φ=wφ);
Explanation: Widgets
End of explanation
?str.replace()
help(str.replace)
Explanation: Para más informaciones sobre ipywidgets, consulte el manual de usuario [6].
Help
Para ver la documentación de una determinada función o clase puedes ejecutar el comando:
?str.replace()
Este comando abrirá una sección en la página con la documentación deseada.
Otro modo de ver la documentación es usando la función help, ej.:
help(str.replace)
End of explanation
<END_TASK>