Introducción al análisis exploratorio de datos

1

¿Qué es y para qué sirve el análisis exploratorio de datos?

2

¿Cómo hacer un análisis exploratorio de datos?

3

Tipos de análisis de datos

4

Tipos de datos y análisis de variables

5

Herramientas de software para el análisis exploratorio de datos

6

Conociendo nuestros datos: palmerpenguins

7

Recolección de datos, limpieza y validación

8

Ejercicio de validación de datos

Quiz: Introducción al análisis exploratorio de datos

Análisis univariado

9

Explorando una variable categórica: conteos y proporciones

10

Estadística descriptiva aplicada: medidas de tendencia central

11

Estadística descriptiva aplicada: medidas de dispersión

12

Ejercicio de obtención de medidas de dispersión

13

Estadística descriptiva aplicada: distribuciones

14

Estadística descriptiva aplicada: funciones de densidad de probabilidad

15

Bonus: Teorema del límite central

Quiz: Análisis univariado

Análisis bivariado

16

Estableciendo relaciones: gráficos de puntos

17

Estableciendo relaciones: gráficos de violín y boxplots

18

Estableciendo relaciones: matrices de correlación

19

Limitantes de los coeficientes de correlación lineal

20

Estableciendo relaciones: análisis de regresión simple

21

Limitaciones del análisis de regresión simple

Quiz: Análisis bivariado

Análisis multivariado

22

Análisis de regresión múltiple

23

Visualización del análisis de regresión múltiple

24

Análisis de regresión logística

25

Paradoja de Simpson

26

¿Qué hacer cuando tengo muchas variables?

Quiz: Análisis multivariado

Conclusiones

27

Diversidad de gráficas al explorar datos

28

Continúa aprendiendo sobre EDA

No tienes acceso a esta clase

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

Estableciendo relaciones: gráficos de violín y boxplots

17/28
Recursos

Aportes 37

Preguntas 1

Ordenar por:

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

Comparación entre las siguientes variables: Islan, and body_mass_g

Como se puede apreciar en el gráfico de scatterplot, muchos datos se sobrelapan en la isla: Dream entre las especies: Adelie y Chinstrap. Además, en las isla Biscoe se nota que la especie Gentoo es mucho más pesada en que la especie Adelie. Por último, en la isla Torgensen, solamente habitan pinguinos de la especie Adelie, aunque esta especie tiene presencia en todas las islas, mientras que Gentoo solamente tiene presencia en la isla Biscoe, y en cambio, Chinstrap tiene presencia solamente en la isla Dream.

Ahora en la gráfica de cajas y bigotes podemos observar que las especies Adelie, y Chinstrap pesan casi lo mismo en cualquier isla, mientras que la espeice Gentoo es la más pesada como se dijo anteriormente.

Por último, en la gráfica de violín y de scatter, podemos deducir que Chinstrap se acerca a una distribución normal, lo mismo con Adelie en las islas de Torgensen y Biscoe, pero en Dream se encuentra un poco hacia la izquierda.

Código de los gráficos

  • Grafico de puntos
sns.scatterplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    hue='variable categorica', #agrega un calor distinto por categoria
    palette=nombre_paleta
)
  • Agrega ruido a los puntos para obtener una mejor visualizacion de como se distribuyen los datos
sns.stripplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    palette=nombre_paleta
)
  • Grafico de boxplots mas grafico de puntos en un mismo grafico
ax = sns.boxplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    palette=nombre_paleta
)

#grafico de puntos
ax = sns.stripplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    color = 'black'    
)
  • Grafico de violin mas grafico de puntos en una misma grafica
ax = sns.violinplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    color='.8'
)

#Grafico de puntos
ax = sns.stripplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    palette=nombre_paleta    
)
  • Grafico de swarmplot. Muestra todos los puntos de los datos
sns.swarmplot(
    data=dataFrame,
    x='variable_categorica',
    y='variable_numerica',
    palette=nombre_paleta 
)

Island vs Body mass:

sns.swarmplot(
    data=processed_penguins_df,
    x='island',
    y='body_mass_g',
    hue='species',
    palette=penguin_color
);

Graficos de violin y boxplots

Cuando las variables son discretas los puntos se acumulan en linea vertical en un scatterplot lo que entrega poca informacion sobre la distribucion de los puntos.

Cuando analizas la relacion entre una variable numerica y una variable discreta conviene utilizar los graficos de boxplots. Para este caso, la variable discreta va representada en el eje de las x y las variable numerica en el eje de las y.

Gráfico y código

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 6))

sns.violinplot(
    data=dfnn,
    x='island',
    y='body_mass_g',
    ax=ax1
)

sns.swarmplot(
    data=dfnn,
    x='island',
    y='body_mass_g',
    hue='sex',
    palette=sex_colour,
    ax=ax1
)

ax1.set_title('Violin Plot and Swarm Plot')

sns.boxplot(
    data=dfnn,
    x='island',
    y='body_mass_g',
    hue='sex',
    palette=sex_colour,
    ax=ax2
)

ax2.set_title('Box Plot')

# Ajustar el diseño de la figura
plt.tight_layout()

plt.show()

Noten que desde que utilizamos una variable categórica (o
variable cualitativa) automáticamente debemos pensar en las gráficas que se utilizan para este tipo de variable:

  • countplot
  • barplot
  • boxplot
  • violinplot
  • stripplot
  • swarmplot
  • factorplot

Eligiendo entonces los plots vistos en clase para ver la relación con una variable cuantitativa.

Conclusion: los pinguinos hembra son menos pesados que los machos y ademas los Gentoo son la especie con mayor peso.

  • Isla Biscoe:

    • En la isla Biscoe se encuentran los pingüinos Gentoo y Adelie
    • Se registraron pingüinos 119 de la especie Gentoo, son los mas pesados dentro de las tres especies con una media de 5050 gr y pesos máximos de 6300 gr.
    • Se registraron pingüinos 44 de la especie Adelie, se destacan por su peso promedio de 3750 gr que es ligeramente superior en comparación a su misma especie en las 2 otras islas.
    • La isla Biscoe consta del mayor registro de pinguinos (163), destaca por tener los pinguinos con peso promedio mas alto.

  • Isla Dream:

    • En la isla Dream se encuentran los pinguinos Chinstrap y Adelie
    • Se registraron pingüinos 68 de la especie Chinstrap sobrepasa su peso promedio (3700 g) y primer cuartil (3487) en comparación a los Adelie. Su distribución es la que más se asemeja a una distribución normal.
    • Se registraron pingüinos 55 de la especie Adelie presentan un peso promedio (3600 g) y peso máximo (4650 g) inferior a su misma especie en las 2 otras islas.
    • La isla Dream consta 123 registros de pingüinos.

  • Isla Torgersen:

    • En la isla Torgersen se encuentran solo los pingüinos Adelie
    • Se registraron pingüinos 47 de la especie Adelie presentan la distribución mas semejante a una normal en comparación de las otras especies y de su misma especie en las otras islas.
  • La especie Adelie no tiene cambios significativos en su masa.

17. Estableciendo relaciones: gráficos de violín y boxplots

¿Qué pasa si tengo una variable discreta?

Se agrega un ruido aleatorio para visualizar mejor los datos

Según los resultados de la función que dejo aquí abajo, encuentro que la especie Adelie se encuentra en las 3 islas, la especie Gentoo solo en la isla Biscoe y la especie Chinstrap solo en la isla Dream.

Los gráficos me muestran que las especies adelie y chinstrap tienen una misma distribución de pesos, mientras que la especie gentoo pesa más que el resto, lo que hace la isla Biscoe se suba el promedio de pesos, ya que solo allí están los Gentoo.

def plot_penguins_weight(data):
    unique_islands = data['island'].unique()  # Obtener las islas únicas

    fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 10))

    # Gráfico 1: Swarmplot
    ax = sns.swarmplot(data=data, x='island', y='body_mass_g', hue='species', palette='Set1', ax=axes[0, 0])
    ax.set_title('Swarmplot')

    # Gráfico 2: Violinplot
    ax = sns.violinplot(data=data, x='island', y='body_mass_g', color='.8', ax=axes[0, 1])
    ax.set_title('Violinplot')

    # Gráfico 3: Stripplot
    ax = sns.stripplot(data=data, x='island', y='body_mass_g', palette='Set1', ax=axes[1, 0])
    ax.set_title('Stripplot')

    # Gráfico 4: Boxplot
    ax = sns.boxplot(data=data, x='body_mass_g', y='island', palette='Set1', ax=axes[1, 1])
    ax.set_title('Boxplot')

    # Ajustar los espacios entre los subgráficos
    plt.tight_layout()

    # Mostrar el gráfico combinado
    plt.show()

# Utilizar la función para graficar por isla
plot_penguins_weight(processed_penguins_df)
  • Los gráficos de violín y los boxplots son dos tipos de gráficos utilizados en estadística y visualización de datos para representar distribuciones de datos y detectar valores atípicos.

  • Un gráfico de violín es un gráfico que muestra la distribución de los datos mediante una curva simétrica que se asemeja a un violín. Este gráfico combina un histograma o un gráfico de densidad en la parte central con dos brazos que representan la densidad de los datos en ambos lados. El grosor del violín en cualquier punto representa la densidad de los datos en ese punto.

  • Un boxplot, por otro lado, muestra la distribución de los datos mediante una caja con dos líneas que se extienden desde ella, conocidos como bigotes. La caja representa el rango intercuartil (IQR) de los datos, es decir, el rango entre el primer y tercer cuartil. La línea que divide la caja en dos partes iguales representa la mediana de los datos. Los bigotes se extienden hasta los valores mínimo y máximo dentro de 1,5 veces el rango intercuartil de los datos. Los valores que están más allá de los bigotes se consideran valores atípicos.

me parece interesante esta combinación:

ax = sns.violinplot(
    data= processed_penguins_df, 
    x="species", 
    y='flipper_length_mm',
    color='0.8'
)

ax = sns.swarmplot(
    data= processed_penguins_df, 
    x="species", 
    y='flipper_length_mm',
    palette=penguin_color
)

el resultado:

Habiendo puesto lo mismo (creo), no se porque me sale los puntos del stripplot en otro sitio.

sns.boxplot(
    data= processed_penguins_df,
    x='flipper_length_mm',
    y= 'species',
    hue='species',
    palette=penguin_color
)

ax = sns.stripplot(
    data= processed_penguins_df,
    x='flipper_length_mm',
    y='species',
    color='.3'
)

Alguien me puede decir el fallo?

Llegué a éste interesante gráfico para el desafío, el cual creo es bastante legible y entendible; Donde podemos observar la distribución del peso de los pingüinos en cada isla y como ésta se ve influenciada por las especies que se encuentran en cada isla según su densidad de población.

Gráfica:


Código:

ax = sns.violinplot(
    data=process_penguins_df,
    x='island',
    y='body_mass_g',
    color='.8'
)

ax = sns.swarmplot(
    data=process_penguins_df,
    x='island',
    y='body_mass_g',
    hue='species',
    palette=penguin_color
)

Use conocimientos previos para tratar de llegar a algunas conclusiones relacionadas con la localización de las diferentes especies y sus pesos.

Suponiendo que los datos no presentan sesgos en cuanto a la captura de estos mismos, podríamos decir que:

  • La isla Biscoe es la mas poblada
  • La distribución de las especies no es igual en todas las islas

  • Existen especies que únicamente habitan una sola isla de las que están presentes en los datos

  • La especie Adelie parece ser muy exitosa pues es la única que tiene presencia en las 3 islas consideradas

  • Nuestra especie de interés Adelie no presenta cambios significativos en su masa entre las diferentes islas, esto lo podemos apreciar porque en todas sus distribuciones son muy similares

  • En cuanto a la isla Biscoe, no solo podemos decir que es la isla mas habitada, si no que también posee a los pingüinos de mayor peso, los pertenecientes a la especie Gentoo, esto podria estar indicando una isla de mayor tamaño y/o un acceso a recursos mucho mayor

De todo esto me queda una pregunta, si las condiciones en la isla Biscoe son tan favorables como insinúa mi análisis, por que no hay presencia de la especie Chinstrap en esta?

**DEEPNOTE** **GRÁFICO DE DISPERSIÓN DE LONGITUD DE ALETA SEGÚN LA ESPECIE.** 1.a) **Código:** sns.scatterplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     hue='species',     palette=penguin\_color ) 1.b) **Descripción línea por línea:** * sns.scatterplot: Se utiliza la función scatterplot de la biblioteca Seaborn para crear un gráfico de dispersión. * data=processed\_penguins\_df: Se especifica el conjunto de datos, en este caso, processed\_penguins\_df. * x='species': Se utiliza la columna species como eje X. * y='flipper\_length\_mm': Se utiliza la columna flipper\_length\_mm como eje Y. * hue='species': Se diferencia visualmente cada categoría de la columna species mediante colores. * palette=penguin\_color: Se establece una paleta de colores personalizada asignada a la variable penguin\_color. 1.c) **Salida:** Un gráfico de dispersión donde los puntos están distribuidos según las especies en el eje X y la longitud de la aleta en el eje Y. Los puntos están coloreados por especie (Adelie, Gentoo, Chinstrap). **GRÁFICO DE DISPERSIÓN AGRUPADO POR ESPECIE.** 1.a) **Código:** sns.stripplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     palette=penguin\_color ) 1.b) **Descripción línea por línea:** * sns.stripplot: Se utiliza la función stripplot de Seaborn para crear un gráfico de dispersión con puntos agrupados según categorías. * data=processed\_penguins\_df: Se especifica el conjunto de datos, processed\_penguins\_df. * x='species': Se utiliza la columna species como eje X. * y='flipper\_length\_mm': Se utiliza la columna flipper\_length\_mm como eje Y. * palette=penguin\_color: Se asigna una paleta de colores personalizada. 1.c) **Salida:** Un gráfico similar al de la Celda 1, pero los puntos están agrupados por categorías del eje X (especies) con un menor solapamiento. **DIAGRAMA DE CAJA DE LA LONGITUD DE ALETAS POR ESPECIE.** 1.a) **Código:** sns.boxplot(     data=processed\_penguins\_df,     x='flipper\_length\_mm',     y='species',     palette=penguin\_color ) 1.b) **Descripción línea por línea:** * sns.boxplot: Se utiliza la función boxplot de Seaborn para crear un diagrama de caja (boxplot). * data=processed\_penguins\_df: Se define el conjunto de datos, processed\_penguins\_df. * x='flipper\_length\_mm': Las longitudes de las aletas (eje X) se representan como distribuciones. * y='species': Las especies se representan como categorías en el eje Y. * palette=penguin\_color: Se asigna una paleta de colores personalizada. 1.c) **Salida:** Diagramas de caja que muestran la distribución, mediana y valores atípicos de las longitudes de aletas para cada especie. **DIAGRAMA COMBINADO DE CAJA Y DISPERSIÓN.** 1.a) **Código:** ax = sns.boxplot(     data=processed\_penguins\_df,     x='flipper\_length\_mm',     y='species',     palette=penguin\_color ) sns.stripplot(     data=processed\_penguins\_df,     x='flipper\_length\_mm',     y='species',     color='k' ) 1.b) **Descripción línea por línea:** * ax = sns.boxplot(...): Se crea un diagrama de caja similar al de la Celda 3. * sns.stripplot(...): Se superpone un gráfico de dispersión (stripplot) sobre el diagrama de caja. * color='k': Los puntos del gráfico de dispersión se colorean de negro (k). 1.c) **Salida:** Una combinación de un diagrama de caja y un gráfico de dispersión. Los puntos individuales están superpuestos en negro, mostrando valores específicos dentro de cada categoría. **GRÁFICO DE VIOLÍN DE LONGITUD DE ALETAS SEGÚN LA ESPECIE.** 1.a) **Código:** ax = sns.violinplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     color='.8' ) 1.b) **Descripción línea por línea:** * sns.violinplot: Se utiliza para crear un gráfico de violín que muestra la distribución de los datos. * data=processed\_penguins\_df: Se especifica el conjunto de datos processed\_penguins\_df. * x='species': El eje X representa las categorías de las especies. * y='flipper\_length\_mm': El eje Y muestra la longitud de las aletas. * color='.8': Se establece un color gris claro (escala de grises). 1.c) **Salida:** Un gráfico de violín para cada especie, mostrando la distribución y densidad de las longitudes de las aletas. **GRÁFICO COMBINADO DE VIOLÍN Y DISPERSIÓN PARA LA LONGITUD DE ALETAS SEGÚN LA ESPECIE.** 1.a) **Código:** ax = sns.violinplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     color='.8' ) ax = sns.stripplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     palette=penguin\_color ) 1.b) **Descripción línea por línea:** * sns.violinplot: Se crea un gráfico de violín como en la Celda 5. * sns.stripplot: Se superpone un gráfico de dispersión sobre el gráfico de violín. * palette=penguin\_color: Se usa una paleta de colores personalizada para diferenciar las especies. 1.c) **Salida:** Un gráfico que combina las distribuciones (gráficos de violín) y los puntos individuales (gráfico de dispersión) de las longitudes de las aletas. **GRÁFICO DE DISPERSIÓN ORDENADO (SWARMPLOT) PARA LA LONGITUD DE ALETAS SEGÚN LA ESPECIE.** 1.a) **Código:** sns.swarmplot(     data=processed\_penguins\_df,     x='species',     y='flipper\_length\_mm',     hue='species',     palette=penguin\_color ) 1.b) **Descripción línea por línea:** * sns.swarmplot: Se utiliza para crear un gráfico de dispersión ordenado, donde los puntos están ligeramente separados para evitar solapamientos. * data=processed\_penguins\_df: Se usa el conjunto de datos processed\_penguins\_df. * x='species': El eje X contiene las categorías de las especies. * y='flipper\_length\_mm': El eje Y muestra las longitudes de las aletas. * hue='species': Los colores diferencian las especies. * palette=penguin\_color: Se aplica una paleta de colores personalizada. 1.c) **Salida:** Un gráfico donde los puntos están separados ligeramente dentro de cada categoría (especie) para mostrar mejor la distribución individual de las longitudes de las aletas.
### **CLASE SOBRE GRÁFICAS Y ANÁLISIS DE VARIABLES** #### **GRÁFICO DE PUNTOS O DISPERSIÓN** * En la clase anterior, aprendiste qué es un gráfico de puntos o de dispersión y su utilidad. * Sin embargo, no siempre tus datos tendrán una distribución uniforme o "bonita". A veces, se formarán patrones como: * **Acumulaciones**: Los datos se agrupan en ciertas secciones. * **Huecos**: Faltan puntos en determinados valores. **Ejemplo**: Al graficar edades, podrías ver puntos en 1, 2, 3, 4, 5, y luego en 7 y 8, pero no en 6 o 10. Esto genera líneas rectas o patrones de acumulación. #### **VARIABLES DISCRETAS Y SU VISUALIZACIÓN** Cuando trabajas con una **variable discreta**, aparecen estos patrones lineales. Para resolverlo y mejorar la interpretación de tus datos, puedes: 1. **Agregar ruido aleatorio**: * Este método separa los puntos acumulados, haciéndolos más visibles. * En las diapositivas, puedes observar cómo al agregar ruido aleatorio, la distribución de datos se muestra de forma más clara. 2. **Utilizar diagramas de caja (*box plot*)**: * Este tipo de gráfica es ideal cuando tienes una **variable discreta** (eje X) y una **variable numérica** (eje Y). * Ejemplo: En clases anteriores sobre análisis univariado, aprendiste cómo estas gráficas muestran la distribución de datos numéricos en función de categorías. #### **APLICACIÓN PRÁCTICA** Si estás trabajando con el conjunto de datos de pingüinos, puedes explorar relaciones como: * Peso de los pingüinos (variable numérica) en función de las islas donde habitan (variable discreta).
Esta visualización nos permite ver el peso de los pingüinos en cada una de las islas, discriminado por el sexo, donde podemos conlcuir que los pingüinos de la isla Biscoe con considerablemente más pesados que los de las otras dos islas. Es curioso ver que incluso los pingüinos de sexo femenino son más pesados que los masculinos de las islas Torgersen y Dream. ![](https://static.platzi.com/media/user_upload/image-2c2aaa69-ef8e-4d3d-acd9-b43a8a56a585.jpg) ```python sns.boxplot( data=processed_penguins_df, x = 'island', y = 'body_mass_g', hue = 'sex', palette= penguin_color ) ```sns.boxplot(    data=processed\_penguins\_df,    x = 'island',    y = 'body\_mass\_g',    hue = 'sex',    palette= penguin\_color    )
```js # Crear la rejilla para las facetas g = sns.FacetGrid(data=processed_penguins_df, col="island", sharey=True, sharex=True, ) # Añadir el gráfico de violín a cada faceta g.map_dataframe( sns.violinplot, x="species", y="body_mass_g", color=".8", inner=None ) # Añadir el gráfico de dispersión (stripplot) encima de los violines g.map_dataframe( sns.stripplot, x="species", y="body_mass_g", hue="species", palette=penguin_color, # dodge=True, # jitter=True ) # Ajustar leyendas y visualización g.add_legend() plt.show() ```![](https://static.platzi.com/media/user_upload/image-7c5daaa5-4aac-45a3-885d-0482c02e3b1a.jpg)
Enjambres y violines: ``` sns.violinplot( data=processed\_penguins\_df, x='island', y='body\_mass\_g', hue='island', palette=island\_color) swarmplot = sns.swarmplot( data=processed\_penguins\_df, x='island', y='body\_mass\_g',) plt.ylim(2000, 7000) ``` ![](https://static.platzi.com/media/user_upload/image-62c8a4a1-87c1-4c8e-aea5-7f6a3284d821.jpg)
A simple vista con solo la gráfica de violín, podría decir que la distribución de las islas Torgersen y Dream, son muy similares e inclusive con valores cercanos en estadisticos. ![](https://static.platzi.com/media/user_upload/image-d5f462c5-0bca-4728-974f-4b70a9b7bc70.jpg)![](https://static.platzi.com/media/user_upload/image-50e7f361-42e8-4166-b1ff-605dcc91d080.jpg) Pero aplicando una combinación de stripplot y violin, ya no tan similares. ![](https://static.platzi.com/media/user_upload/image-d125f1ad-4dd8-4a31-989f-15166bbee785.jpg) Luego cambiando el stripplot por un swarmplot se puede relacionar mejor la forma de la distribución con los datos. ![](https://static.platzi.com/media/user_upload/image-ae8968dd-127a-4b25-85bc-e4883b96ab6d.jpg)
En la gráfica se observa que en la especie "Adelie" está presente en las tres islas. La especie "Gentoo" solo está presente en la isla "Biscoe" y que la especie "Chinstrap" comparte la isla "Dream" cn la especie "Adelie." Así también se observa claramente que la especie "Gentoo" es la más pesada de todas las especies. Y que las especies "Adelie" y "Chinstrap" tienen pesos similares. ![](https://static.platzi.com/media/user_upload/2.%20Swarmplot-d8bfc8c9-9d16-4bb5-8d23-c08e78e9ede6.jpg)
Comparación usando swarmplot para island y body\_mass\_g: ```python sns.swarmplot( data=processed_penguins_df, x="island", y="body_mass_g", hue="island", ) ```sns.swarmplot( data=processed\_penguins\_df, x="island", y="body\_mass\_g", hue="island",)
Les dejo aquí esta graficación que me pareció muy descriptiva:sns.boxplot(    data= pg,    x= 'island',    y= 'body\_mass\_g',    hue= 'species',    palette= penguin\_color) sns.violinplot(    data= pg,    x= 'island',    y= 'body\_mass\_g',    hue= 'species',    palette= penguin\_color,    alpha= 0.4) sns.stripplot(    data= pg,    x= 'island',    y= 'body\_mass\_g',    hue= 'species',    palette= penguin\_color,    alpha= 0.7) ```js sns.boxplot( data= pg, x= 'island', y= 'body_mass_g', hue= 'species', palette= penguin_color ) sns.violinplot( data= pg, x= 'island', y= 'body_mass_g', hue= 'species', palette= penguin_color, alpha= 0.4 ) sns.stripplot( data= pg, x= 'island', y= 'body_mass_g', hue= 'species', palette= penguin_color, alpha= 0.7 ) ```![](https://static.platzi.com/media/user_upload/image-2e3ccd29-547e-42e4-bb56-41f1253b08f8.jpg)

Relación peso - isla

Para este caso me pareció que la mejor forma de visualizarlo es con grafica de puntos y gráficos de caja. Estas son las observaciones que saqué al respecto.

  • Los pingüinos Adelie están presentes en las tres islas. Sin embargo, las especies Gentoo y Chinstrap solo viven en las islas Biscoe y Dream respectivamente.
  • Los Gentoo son la especie de pingüinos que mas pesa. Su diferencia es bastante notable puesto que los pingüinos mas pesados de las otras dos especies no llegan ni a la media del peso de los Gentoo.
  • El pinguino que menos pesa es un Chinstrap.
sns.swarmplot(
    data = processed_penguins_df,
    y = 'body_mass_g',
    x = 'island',
    hue = 'species',
    palette = 'icefire',
    dodge = True
);

sns.boxplot(
    data=processed_penguins_df,
    y='body_mass_g',
    x='island',
    hue='species',
    palette='coolwarm'
);

Luego de esto, separé la información por sexo lo que nos deja ver que:

  • Las hembras pesan menos que los machos en todas las especies.
  • El pingüino menos pesado de todas las especies es hembra y el mas pesado es macho.
sns.catplot(
    data=processed_penguins_df,
    y='body_mass_g',
    x='island',
    hue='species',
    palette='Paired',
    col='sex',
    kind='box'
);
Les dejo las relaciones entre las variables de la base de datos divididas por la isla de la que provienen. ![](https://static.platzi.com/media/user_upload/image-1431ee2f-651e-4624-9748-d74d036952ee.jpg) Se observan varias conclusiones potenciales, sin embargo, la más importante que observo a simple vista es que: 1. Los picos de los pingüinos de la isla Biscoe son significativamente más largos, pero no más anchos que los de la isla Dream. 2. Los picos de los pingüinos de la isla Torgersen son bastante más pequeños en general que los del resto. Esto seguramente se deba a un motivo adaptativo que habría que estudiar a profundidad, probablemente asociado al tipo de alimentos disponible en la isla Dream.

VIEJO, VIEJO, VIEJO, voy en la mitad del curso y uffff, que belleza.
te explica las cosas bien hermano, bien.
ósea, wao, muy satisfecho con el contenido.

Los mas gorditos estan en la isla SISCOE, la especie ADELE, en las 3 islas mantiene su peso, entonces son adaptables a cualquier isla, mientras q gentoo y chimsrap, crecen en islas por separado![](

sns.swarmplot(
    data=processed_penguins_df,
    x="species",
    y="flipper_length_mm",
    hue="species",
    palette=penguin_color
)

![](
Como se puede observar en el swarmplot, nos muestra algo muy interesante y es que es la isla Torgersen no hay otra especie más que la Adelie. Si observamos la isla Biscoe nos podremos dar cuenta que hay tanto Gentoo como Adelie, sin embargo los pinguinos más gordos son los Gentoo.
En la última isla, la isla Dream , son muy similares en cuanto a peso ambas especies, sin embargo el swarmplot nos ayuda a darnos cuenta que tanto el pinguino menos pesado, como el más pesado, es de la especie Chinstrap.

Conclusiones

  • En la isla Torgersen solo se pueden encontrar la especie Adelie, aunque esta especie se puede localizar en las demás islas.

  • Sin contar a la especie Adelie, En la isla Biscoe se encuentran Los Gento que a su vez tienen un mayor nivel de masa corporal medida en gramos.

  • En la ista Dream conviven las especies Adelie y Chinstrap. Su distribución del peso corporal en gramos es semejante entre estas especie.

Inicialmente observo que la especie Adelie se encuentra en las tres islas, mientras que los Gentoo se localizan en la isla Biscoe y los Chinstrap se localizan solamente en la isla Dream.

Se observa también que en la isla Biscoe los pinguinos Adelie tienden a tener una mediana de masa corporal superior a la de los Adelie de las otras islas. Por otra parte se observa que los pinguinos Gentoo, que son los de mayor masa, superan en general por 500g al pinguino Adelie más pesado de la isla Biscoe. De la isla Biscoe es posible que exista una mayor cantidad de recursos ya que es el hogar de los pinguinos Gentoo (los más pesados) y los Adelie más pesados, además se tomó información de 163 pinguinos en la isla Biscoe, lo que conduce a la hipótesis de que en este sitio existe una mayor cantidad de pinguinos, mientras que la isla Dream se tomaron registros de 123 pinguinos y en la isla Torgersen se tomaron muestras de solamente 47 pinguinos.

Se realiza revisión enfocada por sexo, comenzando con los pinguinos macho, que tienden a representar los pinguinos más pesados.

Los pinguinos hembra representan en su mayoría los pinguinos menos pesados.

Conclusión: los pingüinos de la isla Biscoe son más gorditos

fig,ax=plt.subplots(ncols=1,nrows=2,figsize=(8,6),sharex=True)
sns.violinplot(
    ax=ax[0],
    data=preprocessed_penguins_df,
    x='body_mass_g',
    y='island'
)
sns.boxplot(
    ax=ax[1],
    data=preprocessed_penguins_df,
    x='body_mass_g',
    y='island'
)
sns.scatterplot(
    ax=ax[1],
    data=preprocessed_penguins_df,
    x='body_mass_g',
    y='island',
    color='gray'
)

![](

Se observa que la raza Adelie la distribución de masas más que por la isla la afecta es la raza o especie del pinguino, puesto que la distribución de masas es grande en las islas donde existen varias especies de pinguinos como Biscoe island

Otra clase que hace que se uno se siga enamorando de Seaborn.