Hola, soy Luis y para hoy les traigo un post.
Un tutorial paso a paso
Las visualizaciones de datos son esenciales en el análisis de datos. El famoso dicho «una imagen vale más que mil palabras» también es válido en el ámbito de las visualizaciones de datos.
En esta publicación, explicaré una colección de subtramas bien estructurada y muy informativa: FacetGrid.
FacetGrid es básicamente una cuadrícula de subtramas. Matplotlib
admite la creación de figuras con múltiples ejes y, por lo tanto, permite tener subtramas en una figura. Lo que FacetGrid
pone encima de la estructura de la subtrama de matplotlib
:
- Haciendo el proceso más fácil y fluido (con menos código)
- Transfiriendo la estructura del conjunto de datos a subparcelas
La distribución de una variable o relación entre variables se puede descubrir fácilmente con FacetGrids. Pueden tener hasta tres dimensiones: fila, columna y matiz. Será más claro a medida que analicemos los ejemplos. Entonces, comencemos.
Como siempre, comenzamos con la importación de bibliotecas.
A tener en cuenta: FacetGrid requiere los datos almacenados en un marco de datos de pandas donde cada fila representa una observación y las columnas representan variables. Por lo tanto, también importamos pandas.
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns sns.set(style='darkgrid', color_codes=True) %matplotlib inline
Usaremos el conjunto de datos integrado de «consejos» de seaborn.
tip = sns.load_dataset("tips") tip.head()
El objeto FacetGrid se inicializa pasando un marco de datos y el nombre de las variables para crear la estructura de los ejes. Las variables utilizadas para inicializar el objeto FacetGrid deben ser categórico o discreto.
La estructura de la cuadrícula se crea según el número de categorías. Por ejemplo, la columna «tiempo» tiene dos valores únicos.
tip['time'].value_counts() Dinner 176 Lunch 68 Name: time, dtype: int64
Inicialicemos un objeto FacetGrid pasando la variable «time» al parámetro column.
g = sns.FacetGrid(tip, col='time')
Acabamos de crear una cuadrícula muy simple con dos facetas (cada subparcela es una faceta). El tamaño de las facetas se ajusta mediante altura y aspecto parámetros.
- La altura es la altura de las facetas en pulgadas
- El aspecto es la relación de ancho y alto (ancho = aspecto * alto). El valor predeterminado del aspecto es
1
.
Actualicemos la cuadrícula con facetas más grandes.
g = sns.FacetGrid(tip, col='time', height=5)
Es hora de trazar datos en la cuadrícula usando el método FacetGrid.map ()
. Se necesitan una función de trazado y una (s)
variable (s)
para trazar como argumentos.
g = sns.FacetGrid(tip, col='time', height=5) g.map(plt.hist, "total_bill")
La cuadrícula muestra el histograma de "total_bill"
basado en "tiempo"
. Dependiendo de la función de trazado, es posible que necesitemos pasar múltiples variables para el método de mapa. Por ejemplo, los gráficos de dispersión requieren dos variables.
g = sns.FacetGrid(tip, col='time', height=5) g.map(plt.scatter, "total_bill", "tip")
Agreguemos una dimensión más a la cuadrícula con el parámetro fila .
g = sns.FacetGrid(tip, row='sex', col='time', height=4) g.map(plt.scatter, "total_bill", "tip")
Las columnas de «sexo» y «tiempo» tienen dos valores distintos, por lo que se crea un FacetGrid
de 2x2
. Como podemos ver en el gráfico anterior, las variables “total_bill”
y “propina”
tienen una tendencia similar para hombres y mujeres.
El parámetro matiz
permite agregar una dimensión más a la cuadrícula con colores.
g = sns.FacetGrid(tip, row='sex', col='time', hue='smoker', height=4) g.map(plt.scatter, "total_bill", "tip") g.add_legend()
Ahora tenemos una descripción general de la relación entre las variables "factura_total"
, "propina"
y "fumador"
.
La columna "día"
tiene 4
valores únicos:
tip.day.value_counts() Sat 87 Sun 76 Thur 62 Fri 19 Name: day, dtype: int64
Podemos crear un FacetGrid que muestre la distribución de “total_bill”
en diferentes días. Mostrará si los clientes gastan más en un día en particular.
g = sns.FacetGrid(tip, row='day', row_order = tip.day.value_counts().index, height=1.5, aspect=4)g.map(sns.distplot, "total_bill", hist=False)
Parece que la gente tiende a gastar un poco más los fines de semana. Hemos usado row_order
parámetro para este gráfico. Como sugiere el nombre, determina el orden de las facetas.
En los gráficos anteriores, usamos funciones de trazado de la interfaz matplotlib.pyplot
. Pero, para el último, usamos una función de trazado del paquete seaborn
. Es una característica interesante de FacetGrid
que proporciona flexibilidad adicional.
Hay muchas más funciones que se pueden agregar en FacetGrids
para enriquecer tanto la funcionalidad como la apariencia de las mismas. Si desea profundizar, le sugiero que revise la documentación de Seaborn
en FacetGrid.
Gracias por leer. Avíseme si tiene algún comentario.
Añadir comentario