Visualización de Datos con Altair
Una corta introducción.
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
?
Altair
es una biblioteca de python
de código abierto para la visualización de datos basada en Vega
y Vega-Lite
.
Altair
utiliza 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 python
y 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
depandas
- un objeto de clase
Data
dealtair
- datos en formato
JSON
ocsv
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. Altair
reconoce 4 tipos de datos: cuantitativo (Q), ordinal (O), nominal (N) y temporal (T).
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 estrictosimport 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.