[mathjax]

Jupyter Notebook es un modo muy fácil de empezar con data science y programar en Python, te permite correr código en diferentes órdenes y combinarlo con texto, gráficas e incluso algunos elementos web que pueden ser muy prácticos para presentar datos. De ahí que sea notebook.

Instalando Jupyter Notebook

No me voy a concentrar en cómo instalar Jupyter. Puedes instalarlo pendiante pip si ya tienes instalado Python o puedes utilizar Anaconda. Si necesitas instalar Python y estas en macOS puedes instalarlo utilizando brew. Recuerda instalar Python 3.

Pandas y Jupyter estan incluidos con Anaconda. Anaconda es un paquete de varias herramietas de data science por lo cual para la mayoría de los usuarios va a ser la forma más fácil de instalar todo.

¿Qué podemos hacer con Jupyter y Pandas?

Hacer este artículo!

Si! Además de aquí en el blog, este artículo lo cree utilizando Jupyter Notebook. Puedes ver una versión de ella en NBviwer o GitHub (más sobre esas dos cosas adelante).

El resto del artículo esta escrito como si estuvieras leyendo esto en una libreta de Jupyter

Ser el backbone de Five Thirty Eight

Five Thirty Eight es el sitio de periodismo de datos, para algunos de los ejemplos este artículo tomé datos de su Github que utilizaron aquí.

Importar Datos

Para empezar pandas puede adquirir datos de básicamente cualquier lado. Se pueden introducir datos a mano, importar CSVs, leer datos estilo excel que hayas copiado, JSONs, HTMLs, hacer queries de SQL, o conectarse a Google BigQuery y más.

Vamos a empezar importando un CSV sencillo e imprimiendolo cómo tabla.

from IPython.display import display, GeoJSON
import pandas as pd # Por convención lo importamos como pd, porque escribir pandas cada dos lineas es demasiado

t = pd.read_csv('StarWars.csv')
t

Para empezar la tabla quedó formateada automáticamente. Podemos hacer algunas estadisticas sencillas como

# De las 1187 personas encuestadas ¿Cuantas han visto alguna película de Star Wars?

t['Have you seen any of the 6 films in the Star Wars franchise?'].value_counts()

Yes 936 No 250 Response 1 Name: Have you seen any of the 6 films in the Star Wars franchise?, dtype: int64

O podemos saber muy fácilmente cual, segun nuestros datos, es la pelicula más vista de Star Wars es Empire Strikes Back

watched = t.iloc[:, 3:9].describe().transpose()
watched

Hacer Gráficas

from bokeh.plotting import figure, output_notebook, show
from bokeh.models import ColumnDataSource,LabelSet
output_notebook()


source = ColumnDataSource(data=dict(y=watched["top"],
                                   right=watched["freq"],
                                   freq=watched["freq"]))

labels = LabelSet(x='right', y='y', text='freq', level='glyph',
             x_offset=2, y_offset=5, source=source, render_mode='canvas')

p = figure(plot_width=850, y_range=watched['top'])

p.hbar(y="y", right="right", height=0.5, source=source)
p.add_layout(labels)
show(p)

Mostrar mapas

Solo tienes que activar este complemento de Jupyter.

jupyter labextension install @jupyterlab/geojson-extension

Después de agregarlo solo tienes que importar el display de GeoJSON y tus mapas se mostrarán automáticamente

from IPython.display import GeoJSON
GeoJSON({"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.20627212524414,19.048082808795396]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.20215225219725,19.054978803148376]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.21605682373047,19.061793386528766]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.22275161743164,19.05359962720829]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.23159217834473,19.0492997698019]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.23433876037598,19.046703575532554]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-98.21288108825684,19.03639952912028]}},{"type":"Feature","properties":{"stroke":"#00fcff","stroke-width":2,"stroke-opacity":1,"fill":"#00fcff","fill-opacity":0.5},"geometry":{"type":"Polygon","coordinates":[[[-98.23416709899902,19.04662244380717],[-98.21296691894531,19.03672407576917],[-98.20635795593262,19.048407332603105],[-98.20206642150879,19.055141058387473],[-98.21648597717285,19.062523503853996],[-98.22223663330077,19.053761883796376],[-98.23142051696776,19.0492997698019],[-98.23416709899902,19.04662244380717]]]}}]})

Escribir con Latex dentro de Jupyter Notebook

O más bien escribir equaciones empleando la notación de Latex. Esto es muy útil para data science, pues porque matemáticas, puedes ver un ejemplo en el artículo de Arkham.

\int_y^x f(t) dt = x f(x) - y f(y) - \int_y^x t f'(t) dt

Presentaciones con Jupyter

Puedes hasta hacer tus presentaciones con Jupyter y si se trata de código hacerlas con Jupyter tiene mucho sentido. De hecho, esta libreta también es una presentación y la puedes ver en modo de presentación aquí.

Considera las ventajas de hacer las cosas solo una vez y tener inmediatamente una presentación de tu trabajo. Sobre todo si estas haciendo data science, dónde la parte gráfica es muy importante, hacer esto es un ahorro impresionante de tiempo y energía.

Compartir tus libretas en linea con NBViwer & GitHub

Esta parte es de mis favoritas, de hecho es algo que he utilizado en varios trabajos para compartir información. Al subir tu libreta a Github será rendereada automáticamente, como aquí y puedes poner ese link en nbviwer que es una interfáz más limpia y te permite ver las libretas en modo de presentación, como aquí.

Para que algunas cosas específicas se vean correctamente en linea, por ejemplo los mapas, seguramente necesitas agregar algunas lineas de Javascript. Pero no es nada complicado, en ese caso te recomiendo utilizar nbviewer porque github no siempre te va a permitir renderear algunos de esos elementos.

¡Y utilizar otros lenguajes!

Jupyter no solo soporta Python. Si estas intersado en data science posiblemente quieras utilizar R y lo puedes hacer con Jupyter. Pero también puedes utilizar Julia, Scala, Haskell, Ruby, Bash…. y muchos otros.

El artículo de Arkham también lo hice inicialmente utilizando Jupyter y estas son ejemplos delibretas utilizando Ruby y Julia.

Espero que esta introducción a Jupyter te sea útil. Y como siempre puedes dejar tus comentarios.

Aprende Sheets: Curso práctico de Hojas de cálculo de Google
Aprende Sheets: Curso práctico de Hojas de cálculo de Google