Arriving Education (Remix) parte de mi serie de Visualizaciones de Datos #100Viz.

Visualización de Datos con Altair

Sergio Sánchez
Ciencia y Datos
4 min readDec 4, 2018

--

Una corta introducción.

Figura 1: Charles Joseph Minard: “Carte Figurative des pertes succesives en hommes de l’Armée Française dans la campagne de Russie 1812–1813”, Paris, 1869.

La visualización de datos efectiva es una habilidad técnica cada día más codiciada. No es sólo una herramienta útil para presentar resultados sino también para la exploración eficáz de los mismos. Los gráficos bien diseñados son capaces de transferir una gran cantidad de información en poco tiempo. Toma por ejemplo la figura 1.

La figura 1, de Charles Joseph Minard, es una visualización de la marcha de Napoleón a Rusia. De izquierda a derecha puedes ver como la cantidad de soldados va disminuyendo (en dorado) conforme pasa el tiempo y se acercan a Rusia. En el panel inferior Minard también esta visualizando la temperatura del día. Minard esta representando 6 dimensiones de sus datos:

  • cambio en la cantidad de soldados
  • la dirección de el ejercito
  • locación en un plano bidimensional — (X, Y), o en este caso de locación geografica, longitud y latitud.
  • temperatura
  • tiempo / fecha

Esta transferencia de información es casi instantánea algo que sería imposible leyendo una tabla de 6 columnas con la misma información en forma de números.

¿Qué es altair?

Altaires una biblioteca de pythonde código abierto para la visualización de datos basada en Vegay Vega-Lite.

Altairutiliza lo que se conoce como “gramática de gráficos”. El énfasis es en describir la apariencia visual y el comportamiento interactivo de tu visualización.

Altair en esencia lo que hace es tomar tu código pythony lo traduce a formato JSON que puede ser interpretado por Vega-Lite .

Anatomía de un Gráfico

Cada gráfico en altair es compuesto al describir un mínimo de tres elementos:

  • Datos
  • Marcadores
  • Codificaciones

Datos

Altair acepta datasets de 3 maneras:

  • un DataFrame de pandas
  • un objeto de clase Data de altair
  • datos en formato JSON o csv de manera directa

Nosotros trabajaremos con DataFrames de pandas.

Pandas es una de las mejores opciones para trabajar con estructuras de datos en python. El nombre pandas proviene de Python Data Analysis Library. pandas esta basada en numpy(de Numeric Python) la cual provee estructuras de datos (arrays o matrices) las cuales pandas utiliza para crear DataFrames. Un DataFrame es una estructura de datos en la cual se pueden guardar datos de distintos tipos (cadenas de caractéres (strings), integers, floats, y más) en cada columna. Es similar a una tabla o una planilla de Excel o Google Spreadsheets.

Como es una estructura de python claro que su índice comienza en 0.

Marcadores

El marcador en un gráfico es la representación visual de tus datos. Altair ofrece los siguientes marcadores hasta el momento: área, barra, circulo, geofigura, línea, punto, rectángulo, cuadrado, regla, texto, tic.

Codificaciones

Un gráfico es una representación visual de tus datos. Es esencial conectar tu información a un elemento visual en el gráfico. En altair eso se le conoce como encode o codificar tus datos. Es el proceso de asignar valores (en este caso columnas de tu DataFrame) a elementos posicionales (como el eje X o Y) o propiedades de tu marcador (como el color o el tamaño). Altair es una biblioteca para crear gráficos altamente configurables asi que simplemente enlistar todas las codificaciones posibles sería una manera muy ineficáz de aprender. La mejor manera de aprender es haciendo.

Tipos de Datos

altair hace un buen trabajo deduciendo el tipo de datos con el que estas trabajando al igual que pandas. Pero también puedes especificar el tipo de datos en tus gráficos. Altairreconoce 4 tipos de datos: cuantitativo (Q), ordinal (O), nominal (N) y temporal (T).

Anatomía de un Gráfico, Visualización de Datos con Altair.

Así es como se produce un gráfico de barras en altair:

# primero importamos las bibliotecas necesarias
# estos alias son convenciones populares
# pero no son requisitos estrictos
import pandas as pd
import altair as alt

Si estas trabajando con este notebook en un jupyter notebook y no el jupyter lab requerirás ejecutar el siguiente código también.

alt.renderers.enable("notebook")

Los datos con los que vamos a trabajar son de INEGI. En este caso, el número de personas en el país desde 1910.

datos = pd.read_csv("../../datos/poblacion.csv")

Visualización

alt.Chart(datos).mark_bar().encode(
x = "Periodo:Q",
y = "Número de personas:Q"
)

Nota que utilizamos

x = "Periodo:Q",
y = "Número de personas:Q",

en nuestro gráfico. La Q le esta indicando a altair que interprete los valores de la columna "Periodo" y "Número de personas" como datos de tipo cuantitativo (Q).

Esta nota es la primera de una serie de artículos en los cuales estaremos explorando altair. La visualización de datos es una parte fundamental de el conjunto de habilidades de cualquier científico de datos y altair es una biblioteca muy poderosa para la visualización de datos. Espero aprendan algo de esta serie.

Dudas, sugerencias o comentarios son bienvenidos aquí mismo en Medium o a través de twitter.

--

--

Sergio Sánchez
Ciencia y Datos

data visualization analyst + public policy wonk + hip hop head from Tijuana, Baja California. Currently located in the San Francisco Bay Area.