Seaborn - Guía rápida
En el mundo de Analytics, la mejor forma de obtener información es visualizando los datos. Los datos se pueden visualizar representándolos como diagramas que son fáciles de entender, explorar y captar. Estos datos ayudan a llamar la atención sobre elementos clave.
Para analizar un conjunto de datos usando Python, utilizamos Matplotlib, una biblioteca de trazado 2D ampliamente implementada. Asimismo, Seaborn es una biblioteca de visualización en Python. Está construido sobre Matplotlib.
Seaborn Vs Matplotlib
Se resume que si Matplotlib "intenta hacer las cosas fáciles fáciles y las difíciles posibles", Seaborn intenta hacer que un conjunto bien definido de cosas difíciles también sea fácil ".
Seaborn ayuda a resolver los dos problemas principales que enfrenta Matplotlib; los problemas son -
- Parámetros predeterminados de Matplotlib
- Trabajar con marcos de datos
Como Seaborn complementa y amplía Matplotlib, la curva de aprendizaje es bastante gradual. Si conoce Matplotlib, ya está a la mitad de Seaborn.
Características importantes de Seaborn
Seaborn se basa en la biblioteca de visualización central de Python, Matplotlib. Está destinado a servir como complemento y no como reemplazo. Sin embargo, Seaborn viene con algunas características muy importantes. Veamos algunos de ellos aquí. Las funciones ayudan en:
- Temas integrados para diseñar gráficos matplotlib
- Visualización de datos univariados y bivariados
- Ajustar y visualizar modelos de regresión lineal
- Trazar datos estadísticos de series de tiempo
- Seaborn funciona bien con estructuras de datos NumPy y Pandas
- Viene con temas integrados para diseñar gráficos Matplotlib
En la mayoría de los casos, seguirá usando Matplotlib para un trazado simple. Se recomienda el conocimiento de Matplotlib para modificar los gráficos predeterminados de Seaborn.
En este capítulo, analizaremos la configuración del entorno para Seaborn. Comencemos con la instalación y entendamos cómo comenzar a medida que avanzamos.
Instalar Seaborn y comenzar
En esta sección, comprenderemos los pasos involucrados en la instalación de Seaborn.
Usando Pip Installer
Para instalar la última versión de Seaborn, puede usar pip -
pip install seaborn
Para Windows, Linux y Mac con Anaconda
Anaconda (de https://www.anaconda.com/es una distribución gratuita de Python para SciPy stack. También está disponible para Linux y Mac.
También es posible instalar la versión publicada usando conda -
conda install seaborn
Para instalar la versión de desarrollo de Seaborn directamente desde github
https://github.com/mwaskom/seaborn"
Dependencias
Considere las siguientes dependencias de Seaborn:
- Python 2.7 o 3.4+
- numpy
- scipy
- pandas
- matplotlib
En este capítulo, analizaremos cómo importar conjuntos de datos y bibliotecas. Comencemos por comprender cómo importar bibliotecas.
Importación de bibliotecas
Comencemos por importar Pandas, que es una gran biblioteca para administrar conjuntos de datos relacionales (formato de tabla). Seaborn es útil cuando se trata de DataFrames, que es la estructura de datos más utilizada para el análisis de datos.
El siguiente comando te ayudará a importar Pandas:
# Pandas for managing datasets
import pandas as pd
Ahora, importemos la biblioteca Matplotlib, que nos ayuda a personalizar nuestros gráficos.
# Matplotlib for additional customization
from matplotlib import pyplot as plt
Importaremos la biblioteca de Seaborn con el siguiente comando:
# Seaborn for plotting and styling
import seaborn as sb
Importación de conjuntos de datos
Hemos importado las bibliotecas necesarias. En esta sección, entenderemos cómo importar los conjuntos de datos necesarios.
Seaborn viene con algunos conjuntos de datos importantes en la biblioteca. Cuando se instala Seaborn, los conjuntos de datos se descargan automáticamente.
Puede utilizar cualquiera de estos conjuntos de datos para su aprendizaje. Con la ayuda de la siguiente función, puede cargar el conjunto de datos requerido
load_dataset()
Importando datos como Pandas DataFrame
En esta sección, importaremos un conjunto de datos. Este conjunto de datos se carga como Pandas DataFrame de forma predeterminada. Si hay alguna función en Pandas DataFrame, funciona en este DataFrame.
La siguiente línea de código le ayudará a importar el conjunto de datos:
# Seaborn for plotting and styling
import seaborn as sb
df = sb.load_dataset('tips')
print df.head()
La línea de código anterior generará el siguiente resultado:
total_bill tip sex smoker day time size
0 16.99 1.01 Female No Sun Dinner 2
1 10.34 1.66 Male No Sun Dinner 3
2 21.01 3.50 Male No Sun Dinner 3
3 23.68 3.31 Male No Sun Dinner 2
4 24.59 3.61 Female No Sun Dinner 4
Para ver todos los conjuntos de datos disponibles en la biblioteca de Seaborn, puede utilizar el siguiente comando con el get_dataset_names() funciona como se muestra a continuación -
import seaborn as sb
print sb.get_dataset_names()
La línea de código anterior devolverá la lista de conjuntos de datos disponibles como la siguiente salida
[u'anscombe', u'attention', u'brain_networks', u'car_crashes', u'dots',
u'exercise', u'flights', u'fmri', u'gammas', u'iris', u'planets', u'tips',
u'titanic']
DataFramesalmacenar datos en forma de cuadrículas rectangulares mediante las cuales los datos se pueden ver fácilmente. Cada fila de la cuadrícula rectangular contiene valores de una instancia y cada columna de la cuadrícula es un vector que contiene datos para una variable específica. Esto significa que las filas de un DataFrame no necesitan contener valores del mismo tipo de datos, pueden ser numéricos, de caracteres, lógicos, etc. Los DataFrames para Python vienen con la biblioteca Pandas y se definen como estructuras de datos etiquetadas bidimensionales. con tipos de columnas potencialmente diferentes.
Para obtener más detalles sobre DataFrames, visite nuestro tutorial sobre pandas.
Visualizar datos es un paso y hacer que los datos visualizados sean más agradables es otro paso. La visualización juega un papel vital en la comunicación de conocimientos cuantitativos a una audiencia para captar su atención.
Estética significa un conjunto de principios relacionados con la naturaleza y la apreciación de la belleza, especialmente en el arte. La visualización es un arte de representar datos de la forma más eficaz y sencilla posible.
La biblioteca de Matplotlib admite en gran medida la personalización, pero saber qué configuraciones modificar para lograr una trama atractiva y anticipada es lo que uno debe tener en cuenta para hacer uso de ella. A diferencia de Matplotlib, Seaborn viene con temas personalizados y una interfaz de alto nivel para personalizar y controlar el aspecto de las figuras de Matplotlib.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sinplot()
plt.show()
Así es como se ve una trama con los valores predeterminados de Matplotlib:
Para cambiar el mismo gráfico a los valores predeterminados de Seaborn, use el set() función -
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set()
sinplot()
plt.show()
Salida
Las dos figuras anteriores muestran la diferencia en los gráficos predeterminados de Matplotlib y Seaborn. La representación de los datos es la misma, pero el estilo de representación varía en ambos.
Básicamente, Seaborn divide los parámetros de Matplotlib en dos grupos
- Estilos de trama
- Escala de parcela
Estilos de figuras de Seaborn
La interfaz para manipular los estilos es set_style(). Con esta función puede establecer el tema de la trama. Según la última versión actualizada, a continuación se muestran los cinco temas disponibles.
- Darkgrid
- Whitegrid
- Dark
- White
- Ticks
Intentemos aplicar un tema de la lista mencionada anteriormente. El tema predeterminado de la trama serádarkgrid que hemos visto en el ejemplo anterior.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("whitegrid")
sinplot()
plt.show()
Salida
La diferencia entre los dos gráficos anteriores es el color de fondo
Eliminación de espinas de ejes
En los temas de blanco y garrapatas, podemos eliminar las espinas del eje superior y derecho usando el despine() función.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sinplot()
sb.despine()
plt.show()
Salida
En los gráficos regulares, usamos solo los ejes izquierdo e inferior. Utilizando eldespine() función, podemos evitar las espinas innecesarias de los ejes derecho y superior, que no es compatible con Matplotlib.
Anulando los elementos
Si desea personalizar los estilos de Seaborn, puede pasar un diccionario de parámetros al set_style() función. Los parámetros disponibles se ven usandoaxes_style() función.
Ejemplo
import seaborn as sb
print sb.axes_style
Salida
{'axes.axisbelow' : False,
'axes.edgecolor' : 'white',
'axes.facecolor' : '#EAEAF2',
'axes.grid' : True,
'axes.labelcolor' : '.15',
'axes.linewidth' : 0.0,
'figure.facecolor' : 'white',
'font.family' : [u'sans-serif'],
'font.sans-serif' : [u'Arial', u'Liberation
Sans', u'Bitstream Vera Sans', u'sans-serif'],
'grid.color' : 'white',
'grid.linestyle' : u'-',
'image.cmap' : u'Greys',
'legend.frameon' : False,
'legend.numpoints' : 1,
'legend.scatterpoints': 1,
'lines.solid_capstyle': u'round',
'text.color' : '.15',
'xtick.color' : '.15',
'xtick.direction' : u'out',
'xtick.major.size' : 0.0,
'xtick.minor.size' : 0.0,
'ytick.color' : '.15',
'ytick.direction' : u'out',
'ytick.major.size' : 0.0,
'ytick.minor.size' : 0.0}
La alteración de los valores de cualquiera de los parámetros alterará el estilo del gráfico.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip=1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
Salida
Escalar elementos de la gráfica
También tenemos control sobre los elementos de la trama y podemos controlar la escala de la trama usando el set_context()función. Tenemos cuatro plantillas preestablecidas para contextos, según el tamaño relativo, los contextos se nombran de la siguiente manera
- Paper
- Notebook
- Talk
- Poster
De forma predeterminada, el contexto se establece en cuaderno; y se utilizó en las parcelas anteriores.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("darkgrid", {'axes.axisbelow': False})
sinplot()
sb.despine()
plt.show()
Salida
El tamaño de salida de la parcela real es mayor en tamaño en comparación con las parcelas anteriores.
Note - Debido a la escala de las imágenes en nuestra página web, es posible que se pierda la diferencia real en nuestros gráficos de ejemplo.
El color juega un papel importante que cualquier otro aspecto en las visualizaciones. Cuando se usa de manera efectiva, el color agrega más valor al gráfico. Una paleta significa una superficie plana sobre la que un pintor arregla y mezcla pinturas.
Paleta de colores de construcción
Seaborn proporciona una función llamada color_palette(), que se puede utilizar para dar color a las tramas y agregarle más valor estético.
Uso
seaborn.color_palette(palette = None, n_colors = None, desat = None)
Parámetro
La siguiente tabla enumera los parámetros para la construcción de la paleta de colores:
No Señor. | Palatte y descripción |
---|---|
1 | n_colors Número de colores en la paleta. Si es Ninguno, el valor predeterminado dependerá de cómo se especifique la paleta. Por defecto, el valor den_colors es de 6 colores. |
2 | desat Proporción para desaturar cada color. |
Regreso
Retorno se refiere a la lista de tuplas RGB. A continuación se muestran las paletas de Seaborn disponibles:
- Deep
- Muted
- Bright
- Pastel
- Dark
- Colorblind
Además de estos, también se puede generar una nueva paleta
Es difícil decidir qué paleta se debe usar para un conjunto de datos dado sin conocer las características de los datos. Siendo conscientes de ello, clasificaremos las diferentes formas de usocolor_palette() tipos -
- qualitative
- sequential
- diverging
Tenemos otra función seaborn.palplot()que se ocupa de las paletas de colores. Esta función traza la paleta de colores como una matriz horizontal. Sabremos más sobreseaborn.palplot() en los siguientes ejemplos.
Paletas de colores cualitativos
Las paletas cualitativas o categóricas son las más adecuadas para trazar los datos categóricos.
Ejemplo
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(current_palette)
plt.show()
Salida
No hemos pasado ningún parámetro en color_palette();por defecto, estamos viendo 6 colores. Puede ver el número deseado de colores pasando un valor aln_colorsparámetro. Aquí elpalplot() se utiliza para trazar la matriz de colores horizontalmente.
Paletas de colores secuenciales
Los gráficos secuenciales son adecuados para expresar la distribución de datos que van desde valores relativamente más bajos hasta valores más altos dentro de un rango.
Agregar un carácter adicional 's' al color pasado al parámetro de color trazará la trama secuencial.
Ejemplo
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("Greens"))
plt.show()
Note −Necesitamos agregar 's' al parámetro como 'Verdes' en el ejemplo anterior.
Paleta de colores divergentes
Las paletas divergentes utilizan dos colores diferentes. Cada color representa una variación en el valor que va desde un punto común en cualquier dirección.
Suponga que grafica los datos que van de -1 a 1. Los valores de -1 a 0 toman un color y 0 a +1 toman otro color.
De forma predeterminada, los valores están centrados desde cero. Puede controlarlo con el centro de parámetros pasando un valor.
Ejemplo
from matplotlib import pyplot as plt
import seaborn as sb
current_palette = sb.color_palette()
sb.palplot(sb.color_palette("BrBG", 7))
plt.show()
Salida
Configuración de la paleta de colores predeterminada
Las funciones color_palette() tiene un compañero llamado set_palette()La relación entre ellos es similar a los pares cubiertos en el capítulo de estética. Los argumentos son los mismos para ambosset_palette() y color_palette(), pero los parámetros predeterminados de Matplotlib se cambian para que la paleta se use para todos los gráficos.
Ejemplo
import numpy as np
from matplotlib import pyplot as plt
def sinplot(flip = 1):
x = np.linspace(0, 14, 100)
for i in range(1, 5):
plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
import seaborn as sb
sb.set_style("white")
sb.set_palette("husl")
sinplot()
plt.show()
Salida
Trazado de distribución univariante
La distribución de datos es lo más importante que debemos comprender al analizar los datos. Aquí, veremos cómo seaborn nos ayuda a comprender la distribución univariante de los datos.
Función distplot()proporciona la forma más conveniente de echar un vistazo rápido a la distribución univariante. Esta función trazará un histograma que se ajusta a la estimación de la densidad del núcleo de los datos.
Uso
seaborn.distplot()
Parámetros
La siguiente tabla enumera los parámetros y su descripción:
No Señor. | Descripción de parámetros |
---|---|
1 | data Serie, matriz 1d o lista |
2 | bins Especificación de contenedores de hist |
3 | hist bool |
4 | kde bool |
Estos son parámetros básicos e importantes a tener en cuenta.
Los histogramas representan la distribución de datos formando contenedores a lo largo del rango de datos y luego dibujando barras para mostrar el número de observaciones que caen en cada contenedor.
Seaborn viene con algunos conjuntos de datos y hemos utilizado pocos conjuntos de datos en nuestros capítulos anteriores. Hemos aprendido cómo cargar el conjunto de datos y cómo buscar la lista de conjuntos de datos disponibles.
Seaborn viene con algunos conjuntos de datos y hemos utilizado pocos conjuntos de datos en nuestros capítulos anteriores. Hemos aprendido cómo cargar el conjunto de datos y cómo buscar la lista de conjuntos de datos disponibles.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],kde = False)
plt.show()
Salida
Aquí, kdela bandera está establecida en Falso. Como resultado, se eliminará la representación de la gráfica de estimación del kernel y solo se representará el histograma.
La estimación de densidad de kernel (KDE) es una forma de estimar la función de densidad de probabilidad de una variable aleatoria continua. Se utiliza para análisis no paramétricos.
Establecer el hist bandera a Falso en distplot producirá la gráfica de estimación de densidad de kernel.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'],hist=False)
plt.show()
Salida
Ajuste de distribución paramétrica
distplot() se utiliza para visualizar la distribución paramétrica de un conjunto de datos.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.distplot(df['petal_length'])
plt.show()
Salida
Trazado de distribución bivariada
La distribución bivariada se utiliza para determinar la relación entre dos variables. Se trata principalmente de la relación entre dos variables y cómo se comporta una variable con respecto a la otra.
La mejor manera de analizar la distribución bivariada en seaborn es utilizando el jointplot() función.
Jointplot crea una figura de varios paneles que proyecta la relación bivariada entre dos variables y también la distribución univariante de cada variable en ejes separados.
Gráfico de dispersión
El diagrama de dispersión es la forma más conveniente de visualizar la distribución donde cada observación se representa en un diagrama bidimensional a través de los ejes xey.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df)
plt.show()
Salida
La figura anterior muestra la relación entre el petal_length y petal_widthen los datos de Iris. Una tendencia en el gráfico dice que existe una correlación positiva entre las variables en estudio.
Parcela Hexbin
El agrupamiento hexagonal se utiliza en el análisis de datos bivariados cuando la densidad de los datos es escasa, es decir, cuando los datos están muy dispersos y son difíciles de analizar mediante diagramas de dispersión.
Un parámetro de adición llamado 'tipo' y valor 'hex' traza el diagrama de hexbin.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()
Estimación de la densidad del kernel
La estimación de la densidad del kernel es una forma no paramétrica de estimar la distribución de una variable. En seaborn, podemos trazar un kde usandojointplot().
Pase el valor 'kde' al tipo de parámetro para trazar la gráfica del núcleo.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.jointplot(x = 'petal_length',y = 'petal_width',data = df,kind = 'hex')
plt.show()
Salida
Los conjuntos de datos en estudio en tiempo real contienen muchas variables. En tales casos, se debe analizar la relación entre todas y cada una de las variables. Trazar la distribución bivariada para (n, 2) combinaciones será un proceso muy complejo y que llevará mucho tiempo.
Para trazar múltiples distribuciones bivariadas por pares en un conjunto de datos, puede usar el pairplot()función. Esto muestra la relación para (n, 2) combinación de variables en un DataFrame como una matriz de gráficos y los gráficos diagonales son los gráficos univariados.
Ejes
En esta sección, aprenderemos qué son los ejes, su uso, parámetros, etc.
Uso
seaborn.pairplot(data,…)
Parámetros
La siguiente tabla enumera los parámetros de los ejes:
No Señor. | Descripción de parámetros |
---|---|
1 | data Marco de datos |
2 | hue Variable en datos para mapear aspectos de la trama a diferentes colores. |
3 | palette Conjunto de colores para mapear la variable de tono |
4 | kind Tipo de trama para las relaciones de no identidad. {'dispersión', 'reg'} |
5 | diag_kind Tipo de trama para las subtramas diagonales. {'hist', 'kde'} |
Excepto los datos, todos los demás parámetros son opcionales. Hay algunos otros parámetros quepairplotpoder aceptar. Los mencionados anteriormente son params de uso frecuente.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.set_style("ticks")
sb.pairplot(df,hue = 'species',diag_kind = "kde",kind = "scatter",palette = "husl")
plt.show()
Salida
Podemos observar las variaciones en cada parcela. Los gráficos están en formato de matriz donde el nombre de la fila representa el eje xy el nombre de la columna representa el eje y.
Las gráficas diagonales son gráficas de densidad de kernel donde las otras gráficas son gráficas de dispersión como se mencionó.
En nuestros capítulos anteriores aprendimos sobre diagramas de dispersión, diagramas de hexbin y diagramas de kde que se utilizan para analizar las variables continuas en estudio. Estos gráficos no son adecuados cuando la variable en estudio es categórica.
Cuando una o ambas variables en estudio son categóricas, usamos gráficos como striplot (), swarmplot (), etc. Seaborn proporciona una interfaz para hacerlo.
Gráficos de dispersión categóricos
En esta sección, aprenderemos sobre diagramas de dispersión categóricos.
stripplot ()
stripplot () se utiliza cuando una de las variables en estudio es categórica. Representa los datos en orden ordenado a lo largo de cualquiera de los ejes.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df)
plt.show()
Salida
En el gráfico anterior, podemos ver claramente la diferencia de petal_lengthen cada especie. Pero, el principal problema con el diagrama de dispersión anterior es que los puntos en el diagrama de dispersión se superponen. Usamos el parámetro 'Jitter' para manejar este tipo de escenario.
Jitter agrega algo de ruido aleatorio a los datos. Este parámetro ajustará las posiciones a lo largo del eje categórico.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.stripplot(x = "species", y = "petal_length", data = df, jitter = Ture)
plt.show()
Salida
Ahora, la distribución de puntos se puede ver fácilmente.
Swarmplot ()
Otra opción que se puede utilizar como alternativa a 'Jitter' es función swarmplot(). Esta función coloca cada punto del gráfico de dispersión en el eje categórico y, por lo tanto, evita puntos superpuestos:
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()
Salida
En los gráficos de dispersión categóricos que tratamos en el capítulo anterior, el enfoque se vuelve limitado en la información que puede proporcionar sobre la distribución de valores dentro de cada categoría. Ahora, yendo más allá, veamos qué puede facilitarnos la realización de comparaciones en categorías.
Diagramas de caja
Boxplot es una forma conveniente de visualizar la distribución de datos a través de sus cuartiles.
Los diagramas de caja suelen tener líneas verticales que se extienden desde las cajas y que se denominan bigotes. Estos bigotes indican variabilidad fuera de los cuartiles superior e inferior, por lo tanto, los diagramas de caja también se denominan comobox-and-whisker trama y box-and-whisker diagrama. Cualquier valor atípico en los datos se representa como puntos individuales.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.swarmplot(x = "species", y = "petal_length", data = df)
plt.show()
Salida
Los puntos en la gráfica indican el valor atípico.
Tramas de violín
Los gráficos de violín son una combinación del gráfico de caja con las estimaciones de densidad del núcleo. Por lo tanto, estos gráficos son más fáciles de analizar y comprender la distribución de los datos.
Usemos el conjunto de datos de sugerencias llamado para aprender más sobre las tramas de violín. Este conjunto de datos contiene la información relacionada con los consejos dados por los clientes en un restaurante.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill", data=df)
plt.show()
Salida
Los valores de los cuartiles y bigotes del diagrama de caja se muestran dentro del violín. Como la trama del violín usa KDE, la parte más ancha del violín indica que la densidad más alta y la región estrecha representa una densidad relativamente más baja. El rango intercuartil en el diagrama de caja y la porción de mayor densidad en kde caen en la misma región de cada categoría de diagrama de violín.
El gráfico anterior muestra la distribución de total_bill en cuatro días de la semana. Pero, además de eso, si queremos ver cómo se comporta la distribución con respecto al sexo, explorémosla en el siguiente ejemplo.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y = "total_bill",hue = 'sex', data = df)
plt.show()
Salida
Ahora podemos ver claramente el comportamiento de gasto entre hombres y mujeres. Podemos decir fácilmente que los hombres ganan más facturas que las mujeres mirando la trama.
Y, si la variable de tono tiene solo dos clases, podemos embellecer la trama dividiendo cada violín en dos en lugar de dos violines en un día determinado. Cualquiera de las partes del violín se refiere a cada clase en la variable de tono.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.violinplot(x = "day", y="total_bill",hue = 'sex', data = df)
plt.show()
Salida
En la mayoría de las situaciones, tratamos con estimaciones de la distribución total de los datos. Pero cuando se trata de la estimación de tendencia central, necesitamos una forma específica de resumir la distribución. La media y la mediana son las técnicas más utilizadas para estimar la tendencia central de la distribución.
En todas las tramas que aprendimos en el apartado anterior, realizamos la visualización de toda la distribución. Ahora, analicemos las parcelas con las que podemos estimar la tendencia central de la distribución.
Gráfico de barras
los barplot()muestra la relación entre una variable categórica y una variable continua. Los datos se representan en barras rectangulares donde la longitud de la barra representa la proporción de los datos en esa categoría.
El diagrama de barras representa la estimación de la tendencia central. Usemos el conjunto de datos 'titánico' para aprender diagramas de barras.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.barplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()
Salida
En el ejemplo anterior, podemos ver que el número promedio de supervivencias de hombres y mujeres en cada clase. De la trama podemos entender que sobrevivieron más hembras que machos. Tanto en machos como en hembras, la mayor parte de las supervivencias son de primera clase.
Un caso especial en el diagrama de barras es mostrar el número de observaciones en cada categoría en lugar de calcular una estadística para una segunda variable. Para esto usamoscountplot().
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.countplot(x = " class ", data = df, palette = "Blues");
plt.show()
Salida
Plot dice que el número de pasajeros en la tercera clase es mayor que en la primera y segunda clase.
Gráficos de puntos
Los gráficos de puntos sirven igual que los gráficos de barras pero con un estilo diferente. En lugar de la barra completa, el valor de la estimación está representado por el punto a una cierta altura en el otro eje.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.pointplot(x = "sex", y = "survived", hue = "class", data = df)
plt.show()
Salida
Siempre es preferible utilizar conjuntos de datos "largos desde" o "ordenados". Pero en los momentos en que no nos queda otra opción que utilizar un conjunto de datos de "formato ancho", las mismas funciones también se pueden aplicar a datos de "formato amplio" en una variedad de formatos, incluidos Pandas Data Frames o NumPy bidimensional. matrices. Estos objetos deben pasarse directamente al parámetro de datos, las variables xey deben especificarse como cadenas
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()
Salida
Además, estas funciones aceptan vectores de objetos Pandas o NumPy en lugar de variables en un DataFrame.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
sb.boxplot(data = df, orient = "h")
plt.show()
Salida
La principal ventaja de usar Seaborn para muchos desarrolladores en el mundo de Python es que puede tomar el objeto pandas DataFrame como parámetro.
Los datos categóricos se pueden visualizar usando dos gráficos, puede usar las funciones pointplot(), o la función de nivel superior factorplot().
Factorplot
Factorplot dibuja un gráfico categórico en un FacetGrid. Usando el parámetro 'kind' podemos elegir la trama como boxplot, violinplot, barplot y stripplot. FacetGrid usa la gráfica de puntos de forma predeterminada.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = pulse", hue = "kind",data = df);
plt.show()
Salida
Podemos usar diferentes gráficos para visualizar los mismos datos usando el kind parámetro.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin',data = df);
plt.show()
Salida
En factorplot, los datos se trazan en una cuadrícula de facetas.
¿Qué es Facet Grid?
Facet grid forma una matriz de paneles definidos por fila y columna dividiendo las variables. Debido a los paneles, un solo gráfico se parece a varios gráficos. Es muy útil analizar todas las combinaciones en dos variables discretas.
Visualicemos la definición anterior con un ejemplo.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('exercise')
sb.factorplot(x = "time", y = "pulse", hue = "kind", kind = 'violin', col = "diet", data = df);
plt.show()
Salida
La ventaja de usar Facet es que podemos ingresar otra variable en la gráfica. El gráfico anterior se divide en dos gráficos basados en una tercera variable llamada 'dieta' utilizando el parámetro 'col'.
Podemos hacer muchas facetas de columna y alinearlas con las filas de la cuadrícula -
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('titanic')
sb.factorplot("alive", col = "deck", col_wrap = 3,data = df[df.deck.notnull()],kind = "count")
plt.show()
salida
La mayoría de las veces, utilizamos conjuntos de datos que contienen múltiples variables cuantitativas, y el objetivo de un análisis suele ser relacionar esas variables entre sí. Esto se puede hacer a través de las líneas de regresión.
Mientras construimos los modelos de regresión, a menudo buscamos multicollinearity,donde teníamos que ver la correlación entre todas las combinaciones de variables continuas y tomaremos las acciones necesarias para eliminar la multicolinealidad si existe. En tales casos, las siguientes técnicas ayudan.
Funciones para dibujar modelos de regresión lineal
Hay dos funciones principales en Seaborn para visualizar una relación lineal determinada mediante regresión. Estas funciones sonregplot() y lmplot().
regplot vs lmplot
tramar | lmplot |
---|---|
acepta las variables xey en una variedad de formatos que incluyen matrices numpy simples, objetos de la serie pandas o como referencias a variables en un DataFrame de pandas | tiene datos como parámetro obligatorio y las variables xey deben especificarse como cadenas. Este formato de datos se denomina datos de "formato largo". |
Dibujemos ahora las gráficas.
Ejemplo
Graficar el gráfico de registro y luego empalmar con los mismos datos en este ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.regplot(x = "total_bill", y = "tip", data = df)
sb.lmplot(x = "total_bill", y = "tip", data = df)
plt.show()
Salida
Puede ver la diferencia de tamaño entre dos parcelas.
También podemos ajustar una regresión lineal cuando una de las variables toma valores discretos
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
sb.lmplot(x = "size", y = "tip", data = df)
plt.show()
Salida
Adaptación a diferentes tipos de modelos
El modelo de regresión lineal simple utilizado anteriormente es muy simple de ajustar, pero en la mayoría de los casos, los datos no son lineales y los métodos anteriores no pueden generalizar la línea de regresión.
Usemos el conjunto de datos de Anscombe con las gráficas de regresión:
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x="x", y="y", data=df.query("dataset == 'I'"))
plt.show()
En este caso, los datos se ajustan bien al modelo de regresión lineal con menos varianza.
Veamos otro ejemplo donde los datos tienen una gran desviación, lo que muestra que la línea de mejor ajuste no es buena.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"))
plt.show()
Salida
El gráfico muestra la alta desviación de los puntos de datos de la línea de regresión. Dicho orden superior no lineal se puede visualizar utilizando ellmplot() y regplot()Estos pueden ajustarse a un modelo de regresión polinomial para explorar tipos simples de tendencias no lineales en el conjunto de datos:
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('anscombe')
sb.lmplot(x = "x", y = "y", data = df.query("dataset == 'II'"),order = 2)
plt.show()
Salida
Un enfoque útil para explorar datos de dimensiones medias es dibujar varias instancias de la misma gráfica en diferentes subconjuntos de su conjunto de datos.
Esta técnica se denomina comúnmente como trazado de "celosía" o "enrejado" y está relacionada con la idea de "múltiplos pequeños".
Para usar estas funciones, sus datos deben estar en un Pandas DataFrame.
Trazar pequeños múltiplos de subconjuntos de datos
En el capítulo anterior, hemos visto el ejemplo de FacetGrid donde la clase FacetGrid ayuda a visualizar la distribución de una variable, así como la relación entre múltiples variables por separado dentro de subconjuntos de su conjunto de datos usando múltiples paneles.
Un FacetGrid se puede dibujar con hasta tres dimensiones: fila, columna y tono. Los dos primeros tienen una correspondencia obvia con el conjunto de ejes resultante; Piense en la variable de tono como una tercera dimensión a lo largo de un eje de profundidad, donde se trazan diferentes niveles con diferentes colores.
FacetGrid El objeto toma un marco de datos como entrada y los nombres de las variables que formarán las dimensiones de fila, columna o tono de la cuadrícula.
Las variables deben ser categóricas y los datos de cada nivel de la variable se utilizarán para una faceta a lo largo de ese eje.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
plt.show()
Salida
En el ejemplo anterior, acabamos de inicializar el facetgrid objeto que no dibuja nada sobre ellos.
El enfoque principal para visualizar datos en esta cuadrícula es con el FacetGrid.map()método. Veamos la distribución de sugerencias en cada uno de estos subconjuntos, usando un histograma.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "time")
g.map(plt.hist, "tip")
plt.show()
Salida
El número de parcelas es más de uno debido al parámetro col. Hablamos sobre el parámetro col en nuestros capítulos anteriores.
Para hacer una gráfica relacional, pase los nombres de múltiples variables.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('tips')
g = sb.FacetGrid(df, col = "sex", hue = "smoker")
g.map(plt.scatter, "total_bill", "tip")
plt.show()
Salida
PairGrid nos permite dibujar una cuadrícula de subparcelas usando el mismo tipo de parcela para visualizar datos.
A diferencia de FacetGrid, utiliza un par de variables diferente para cada subparcela. Forma una matriz de subparcelas. A veces también se le llama como "matriz de diagrama de dispersión".
El uso de pairgrid es similar a facetgrid. Primero inicialice la cuadrícula y luego pase la función de trazado.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map(plt.scatter);
plt.show()
También es posible graficar una función diferente en la diagonal para mostrar la distribución univariante de la variable en cada columna.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()
Salida
Podemos personalizar el color de estos gráficos usando otra variable categórica. Por ejemplo, el conjunto de datos de iris tiene cuatro medidas para cada una de las tres especies diferentes de flores de iris para que pueda ver en qué se diferencian.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter);
plt.show()
Salida
Podemos usar una función diferente en los triángulos superior e inferior para ver diferentes aspectos de la relación.
Ejemplo
import pandas as pd
import seaborn as sb
from matplotlib import pyplot as plt
df = sb.load_dataset('iris')
g = sb.PairGrid(df)
g.map_upper(plt.scatter)
g.map_lower(sb.kdeplot, cmap = "Blues_d")
g.map_diag(sb.kdeplot, lw = 3, legend = False);
plt.show()