No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Categóricos

14/18
Recursos

Seaborn ofrece diferentes gráficos para graficar datos categóricos o variables de texto. A continuación verás el código que podrás usar para gráficar este tipo de datos.

Tipos de datos categóricos para graficar en Seaborn

Empieza importando los datos que necesitas de las librerías

import seaborn as sns
import matplotlib.pyplot as plt 

tips = sns.load_dataset('tips')
tips.head(2)

Gráfica de cantidad

sns.countplot(data = tips, x= 'day', hue='sex'); 
countplot.JPG

Diagrama de puntos

sns.swarmplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', dodge=True); 
swarm.JPG

Diagrama de caja

sns.boxplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', dodge=True);
caja.JPG
  • Se pueden combinar distintos gráficos
sns.boxplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', dodge=True);
sns.swarmplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', dodge=True, color = '0', marker= '<';');
juntos.JPG
  • Violín: parecido a Boxplot, pero no muestra los cuartiles, sino como se concentran los datos con comparación split
sns.violinplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', split=True);
comparar.JPG
  • Catplot, con kind podemos cambiar el tipo de gráfico y se puede agregar otra variable col
sns.catplot(data= tips, x= 'day', y = 'total_bill', hue= 'sex', dodge=True, kind= 'box', col= 'time');
catplot.JPG

Aportes 30

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Para cualquier grafico en lugar de poner plt.show() para evitar que se vean esas palabras “raras” simplemente pongan ; después de código como se ve en la imagen de abajo.

Me dió curiosidad la variable size. Que es la cantidad de personas que participaron del encuentro para comer. Según una descripción que encontré del dataset: https://vincentarelbundock.github.io/Rdatasets/doc/reshape2/tips.html

sns.catplot(data=tips, x="day", hue="size", col="time", kind= "count" )
plt.show()

En el gráfico se puede ver que en estos encuentros para comer predominan con bastante margen las parejas. Seguido por los grupos de 2 o 3 personas. Es menos frecuente que salga una persona sola a comer.
La mayoría de estos encuentros se dan los Jueves al mediodía , los Sábados a la noche y los Domingos a la noche.
Los Jueves al mediodía debe ser el encuentro debe ser más de carácter laboral. Por eso no ocurre lo mismo el Viernes al mediodía que la gente está pensando más en el fin de semana.
Los sábados a la noche lo atribuyo más a solteros, solteras y parejas con ganas de divertirse. En cambio el domingo a la noche podría haber más salida de grupo familiar. Habría que tener datos de la edad de los participantes para chequear esto.

Quede enamorado de esta fórmula:

sns.catplot(data=tips,x="day",y="total_bill",hue="sex",dodge=True,kind="box",col="time");


que curioso es la imagen con los mínimos parámetros

plt.figure(figsize= (6,6))
sns.swarmplot(data = tips)

lo que me asombro de esta clase es que los graficos anteriores mostraban mucha mas propina de los hombres, en esta se vio que era por outlier

Información resumida de esta clase
#EstudiantesDePlatzi

  • Con el comando countplot creo una gráfica en donde puedo ver el conteo de mi variable categórica

  • Con el parámetro hue puedo segmentar por otra variable

  • Para ver un gráfico de dispersión, uso el comando stripplot

  • Con el comando boxplot obtengo un gráfico de caja, este gráfico me sirve para ver la distribución por percentiles

  • Puedo combinar gráficos uno encima de otro

  • Puedo obtener un gráfico de tipo violín utilizando el comando violinplot

  • Con el comando catplot le estoy diciendo a seaborn que me sugiera un gráfico para variables categóricas. Puedo cambiar el tipo de gráfico en sus parámetros con la palabra clave kind

  • Con el parámetro col puedo definir otra variable y me va a crear otro gráfico para comparar

De nuevo con respecto a la fecha de realizado el curso, el parámetro color quedó deprecado y se utiliza es el parámetro palette=‘dark’ y se ve muchísimo mejor el gráfico

mi código para poder personalizar los colores

sns.violinplot(data=tips ,x='day',y='total_bill',hue='sex',palette={"Male": "#452", "Female": ".85"},split=True)

Un pequeño aporte de algunos gráficos:

Código:

sns.catplot(data=tips, x='day', y='total_bill', hue='sex', dodge=True, kind='swarm', col='time', palette={"Male": "g", "Female": "m"}) 
plt.show()


Código:

sns.catplot(data=tips, x='day', y='total_bill', hue='sex', dodge=True, kind='point', col='time', palette={"Male": "g", "Female": "m"},markers=["^", "o"],linestyles=[":", "--"]) 
plt.show()

De verdad que después de usar años exel, y quebrarme la cabeza tratando de pensar como hacer estas gráficas categóricas de forma eficiente, acá con un par de lineas de código esta hecho.
Creo que me enamore de Seaborn!!!

Otro cambio para la versión v0.14.0: \<ipython-input-21-3aec641f31ef>:3: FutureWarning: Setting a gradient palette using color= is deprecated and will be removed in v0.14.0. Set `palette='dark:0'` for the same effect. sns.swarmplot(data=tips, x='day', y='total\_bill', hue='sex', dodge=True, color="0") quiere decir que en vez de usar 'color' ahora debemos usar 'palette'
Bueno, este es mi aporte. En este caso quise saber si había diferencia de propinas para hombres y mujeres, dependiendo de la hora para el lunch o dinner. ```python sns.catplot(data=tips, x='sex', y='tip', col='time', dodge=True, color='#8cc145') plt.show() ```![](https://static.platzi.com/media/user_upload/image-46972c86-f6a9-44ea-9aa5-40de25b70a2f.jpg)

Me encanto esta clase con respecto al desarrollo y funcionamiento del tema. No sabia que las graficas de seaborn pueden combinarse y trabajar con una cantidad sin fin de categorias.

Saluden a color= que se va…!

NO es que el boxplot también grafique o funcione con variables numéricas, el boxplot solo grafica o funciona con variables numéricas (cuantitativas). Aunque para comparar se pueden establecer nivles en base a variables categóricas.

Apuntes de la case

Count

sns.countplot(data=tips,
              x='day',
              hue='sex')

Strip

sns.stripplot(data=tips,
              x='day',
              y='total_bill',
              dodge=True,
              hue='sex')

Swarm

sns.swarmplot(data=tips,
              x='day',
              y='total_bill',
              dodge=True,
              hue='sex')

Box

sns.boxplot(data=tips,
              x='day',
              y='total_bill',
              dodge=True,
              hue='sex')

Violin

sns.violinplot(data=tips,
              x='day',
              y='total_bill',
              dodge=True,
              hue='sex',
              palette='pastel',
              split=True)

Lo mejor siempre va para el final: CATPLOT

plt.figure(figsize = (10, 6))
sns.catplot(data = tips,
              x = 'day',
              y = 'total_bill',
              dodge = True,
              hue = 'sex',
              palette = 'pastel',
              kind = 'violin',
# kind in [box, bar, swarm, violin, strip]
              split = True,
              col= 'time')

Es posible ver la importancia del Boxplot en el análisis de medias de tendencia central. Acá un ejemplo![](

14. Categóricos

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset('tips')
tips.head()

sns.countplot(data=tips,x='day',hue='sex');

plt.figure(figsize=(6,6))
sns.stripplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True);

plt.figure(figsize=(6,6))
sns.swarmplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True);

plt.figure(figsize=(6,6))
sns.boxplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True);
sns.swarmplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True,color='0',marker='<');

plt.figure(figsize=(6,6))
sns.violinplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True,palette='dark',split=True);

sns.violinplot(data=tips,x='day',y='total_bill');

sns.catplot(data=tips,x='day',y='total_bill',hue='sex',dodge=True,kind='box',col='time'); # Mas utilizado

7:53 -> Ya no se usa color=“0”, ahora de debe usar palette=‘dark:0’

En futuras versiones el color=“0” dejará de funcionar , por lo que deben cambiar su código a palette=‘dark:0’

Buena clase, catplot efectivamente es muy versatil.

Al mirar el datasset tips, con el comando pd.value_counts(tips[‘sex’]) obtengo: Male 157
Female 87
Name: sex, dtype: int64.
Es evidente que la población de mujeres que se evaluó es menor al numero de hombres, por lo que no puedo generalizar que los hombres dan mas propinas que las mujeres, por lo que es mejor usar un gráfico de proporciones para poder hacer un mejor comparativo.

sns.catplot(data=tips,x='day',y='total_bill',hue='sex', dodge=True, kind='strip', col='time')
plt.show()

Recuerden que para hacer estas gráficas es importante tener en cuenta la sobrecarga cognitiva de la persona o el grupo de personas a las que vamos a presentar los datos. Si bien en la clase se muestran varios gráficos juntos a manera de ejemplo en la práctica es importante mostrar la información de forma clara para que el receptor entienda el mensaje que queremos comunicar.

El profesor al final de la clase menciona que estamos trabajando con tres variables, pero en realidad son cuatro (mejor aun). Por un lado tenemos a las variables categoricas: time, day, sex; y todas estas en relación al total bill

Seaborn ofrece diferentes gráficos para graficar datos categóricos o variables de texto. A continuación verás el código que podrás usar para graficar este tipo de datos.
Tipos de datos categóricos para graficar en Seaborn
Empieza importando los datos que necesitas de las librerías
________________________________________
[3]
1 s
import matplotlib.pyplot as plt
import seaborn as sns
________________________________________
[4]
1 s
titanic = sns.load_dataset("titanic")
titanic.head(10)
________________________________________
[5]
0 s
sns.countplot(data=titanic,x="class",hue="sex")
plt.show()
________________________________________
[6]
0 s
sns.countplot(data=titanic,y="embark_town",hue="sex")
plt.show()
________________________________________
[7]
0 s
plt.figure(figsize=(6,6))
sns.stripplot(data=titanic,x="class",y="fare",hue="sex",dodge=True)
plt.show()
#esta uan forma de analisar la distribucion que tengo con respecto a otras variables 
________________________________________
[ ]
plt.figure(figsize=(8,8))
sns.swarmplot(data=titanic,x="class",y="fare",hue="sex",dodge=True)
plt.show()
#con esta grafica tenemos una mejor manara de analisar la concentracion de los datos 
________________________________________
[ ]
sns.boxplot(data=titanic,y="age")
plt.show()
________________________________________
[ ]
plt.figure(figsize=(8,8))
sns.boxplot(data=titanic,x="class",y="fare",hue="sex",dodge=True)
sns.swarmplot(data=titanic,x="class",y="fare",hue="sex",dodge=True,color="0",marker=">")
plt.show()
#como sabemos aca podemos ver la distribucion estadistica por percentoles y cuartiles 
#podemos comvinar variables categoricas para tener un analisis con diferentes variables 
________________________________________
[8]
plt.figure(figsize=(6,6))
sns.violinplot(data=titanic,x="class",y="fare",hue="sex",dodge=True,palette="pastel")
plt.show()
#esta grafica es llamada violin, que me indica como se estan concentrando los datos, cada vez que sube mas son mucjo mas los datos que se concentran 
#y es muy parecido al rango intercuartílico 
________________________________________
[9]
from numpy.lib.shape_base import split
plt.figure(figsize=(6,6))
sns.violinplot(data=titanic,x="class",y="fare",hue="sex",split=True,palette="pastel")
plt.show()
#con el parametro (split) pdemos combinar los variables en un solo grafico de violin 
________________________________________
[11]
sns.violinplot(data=titanic,y="age")
plt.show()
#tambien puedo graficar variables numéricas  
________________________________________
[23]
plt.figure(figsize=(8,8))
sns.catplot(data=titanic,x="class",y="fare",hue="sex",dodge=True,kind="bar",col="survived")
plt.show()
#con (catplt), puedotrabajar diferentes graficas, agregandoles solamente el parametro de la grafica que queremos 
#es muy parecedo al de displot, solo con decirle que tipo de grafico quiero trabajar 
#puedo trabajar todos las graficas que trabajamos anteriormente solo con el parametro de la grafica que queremos graficar 
#aca estamos trabajando con tres distintas variables que con solo agregar un parametro me muestra mucha informacion
________________________________________
en esta clase aprendimos a trabajar con distintas graficas que maneja Seaborn, para diagramar datos categóricos que son variables de tipo texto


Ejemplos graficos