Resaltar valores con Pandas
penguins_df.corr().style.highlight_between(left=0.65, right=.99,color='lightgreen')
Introducción al análisis exploratorio de datos
¿Qué es y para qué sirve el análisis exploratorio de datos?
¿Cómo hacer un análisis exploratorio de datos?
Tipos de análisis de datos
Tipos de datos y análisis de variables
Herramientas de software para el análisis exploratorio de datos
Conociendo nuestros datos: palmerpenguins
Recolección de datos, limpieza y validación
Ejercicio de validación de datos
Quiz: Introducción al análisis exploratorio de datos
Análisis univariado
Explorando una variable categórica: conteos y proporciones
Estadística descriptiva aplicada: medidas de tendencia central
Estadística descriptiva aplicada: medidas de dispersión
Ejercicio de obtención de medidas de dispersión
Estadística descriptiva aplicada: distribuciones
Estadística descriptiva aplicada: funciones de densidad de probabilidad
Bonus: Teorema del límite central
Quiz: Análisis univariado
Análisis bivariado
Estableciendo relaciones: gráficos de puntos
Estableciendo relaciones: gráficos de violín y boxplots
Estableciendo relaciones: matrices de correlación
Limitantes de los coeficientes de correlación lineal
Estableciendo relaciones: análisis de regresión simple
Limitaciones del análisis de regresión simple
Quiz: Análisis bivariado
Análisis multivariado
Análisis de regresión múltiple
Visualización del análisis de regresión múltiple
Análisis de regresión logística
Paradoja de Simpson
¿Qué hacer cuando tengo muchas variables?
Quiz: Análisis multivariado
Conclusiones
Diversidad de gráficas al explorar datos
Continúa aprendiendo sobre EDA
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Jesús Vélez Santiago
Aportes 23
Preguntas 2
penguins_df.corr().style.highlight_between(left=0.65, right=.99,color='lightgreen')
La correlación expresa hasta que punto dos variables estan relacionadas entre si. Es decir, si cambian conjuntamente. Para cuantificar que tanto estan relacionadas, se utiliza el concepto de Coeficiente de Correlacion.
Coeficiente de Correlación: cuantifica la intensidad de la relación lineal entre dos variables en un análisis de correlación
La Correlación no implica causalidad. Causalidad implica “Cuando algo (la causa) genera otra cosa (efecto)
Para los que no les gusta usar la función assign, acá les dejo otra forma de hacerlo usando la función apply:
Otra forma de pasar variables categóricas a numéricas.
processed_penguins_df['numeric_sex']= processed_penguins_df['sex'].map({'female':0, 'male':1})
Al haber hecho el sexo una variable discreta que solo puede tomar un valor de 0 o 1 al graficar se obtiene dos líneas horizontales, lo cual no muestra ninguna relación entre las dos variables para el ejemplo tome (bill_length_mm), por lo que el coeficiente de Pearson no tiene sentido en este caso.
los coeficiente que muestra el cluster map solo son valores teniendo en cuenta las varianzas del sexo respecto a la variable bill_length.
Un valor maś fácil de recordar para cmap
y que también nos ayuda mucho a diferenciar es 'coolwarm'
sns.heatmap(
preprocess_penguins_df.corr(),
annot= True,
cmap='coolwarm'
);
Este código nos da la siguiente gráfica:
.
la variable con mas correlaciones es la del peso del pinguino, q se relaciona fuertemente con el de largo de la aleta y se puede ententeder el porque, a mayor tamaño de aleta mas peso, la variable con la relacion negativa mas alta es la del tamaño de la aleta y la profundidad del pico, aunque no es muy alta (llegando al 60%) es una correlacion interesante, se podria crear un hipotesis de porque esto,tipo si les permite nadar mejor,a ver si se encuentra una correlacion directa
la correlación en su naturaleza es aplicada a variables de base cuantitativa por ende no hace sentido aplicarla a variables de tipo categórica o nominal asi estan puedan expresarse como un numero.
Ahora, para hallar la correlación se debe coocar así:
processed_penguins_df.corr(numeric_only=True)
Excelente las explicaciones del profe. Deja ejemplos super simples y muy claros.
“Expresa hasta qué punto dos variables están relacionadas entre sí. Es decir, si cambian conjuntamente.”
Coeficiente de correlación: utilizamos Correlación de Pearson
Cuantifica la intensidad de la relación lineal entre dos variables en un análisis de correlación.
r = 1 correlación positiva r = 0 sin correlación r = -1 correlación negativa
Correlación no implica causalidad
Causalidad Cuando algo (la causa) genera otra cosa (efecto)
Correlación Cuando dos o más eventos aparentan estar relacionados
Según la representación de la matriz podría decir que los que más se destacan son la correlación fuerte positiva entre el tamaño de las alas y el peso. También la correlación moderada positiva entre el tamaño de las alas y largo del pico. Y que la profundidad del pico y el tamaño del las alas tenga una correlación moderada negativa.
hola esto fue lo que hice para incluir las variables categóricas
data = df.copy()
d_object = data.loc[:,data.dtypes == object]
data.loc[:,data.dtypes == object] = d_object.apply(lambda s:pd.factorize(s)[0])
Si queremos el heatmap sin la columna del año:
heatmap_without_year = processed_penguins_df.loc[:, processed_penguins_df.columns!='year']
sns.heatmap(data=heatmap_without_year.corr(),
cmap=sns.color_palette("coolwarm", as_cmap=True),
center=0,
vmin=-1,
vmax=1,
linewidth=1,
annot=True)
Por alguna razon al momento de ejecutar, no me sale la nueva variable en la grafica y no entiendo porque si el codigo es exactamente el mismo que el de la clase
Creo que, en este caso, asignar el valor 1 al género masculino y el valor 0 al género femenino, para codificar la variable categórica sex es correcto.
Sin embargo, hay que tener en cuenta que, en algunos casos, asignar valores numéricos arbitrarios a las variables categóricas puede no ser apropiado, especialmente si los valores numéricos no tienen un significado real. En estos casos, es mejor utilizar técnicas de codificación de variables categóricas más avanzadas, como la codificación one-hot (o one-of-K), que crea una columna separada para cada categoría, y asigna el valor 1 en la columna correspondiente a la categoría y 0 en las demás columnas.
Las matrices de correlación son herramientas de visualización que se utilizan para entender las relaciones entre diferentes variables en un conjunto de datos. Una matriz de correlación es una tabla que muestra las correlaciones (normalmente coeficientes de correlación de Pearson) entre todas las posibles pares de variables en un conjunto de datos.
En una matriz de correlación, las celdas que están en la diagonal principal siempre son iguales a 1, ya que cada variable está perfectamente correlacionada con sí misma. Las celdas fuera de la diagonal principal indican el grado de correlación entre dos variables diferentes. El valor de una correlación puede variar entre -1 y 1, donde un valor de -1 indica una correlación negativa perfecta (las dos variables se mueven en direcciones opuestas), un valor de 0 indica que no hay correlación, y un valor de 1 indica una correlación positiva perfecta (las dos variables se mueven en la misma dirección).
Las matrices de correlación son útiles para explorar la relación entre diferentes variables y pueden ser utilizadas para identificar posibles relaciones importantes para análisis posteriores. Además, las matrices de correlación pueden ser utilizadas para identificar posibles problemas de multicolinealidad en un modelo de regresión.
Para crear una matriz de correlación en Python, podemos utilizar la biblioteca pandas. Por ejemplo, para crear una matriz de correlación para las variables numéricas en el conjunto de datos penguins, podemos utilizar el siguiente código:
from scipy.stats import pointbiserialr, spearmanr
# Calculamos el coeficiente de correlación de punto-biserie para las variables categóricas
island_corr, _ = pointbiserialr(penguins['island'].cat.codes, penguins['body_mass_g'])
sex_corr, _ = pointbiserialr(penguins['sex'].cat.codes, penguins['body_mass_g'])
# Calculamos el coeficiente de correlación de rango de Spearman para la variable numérica discreta
spearman_corr, _ = spearmanr(penguins['body_mass_g'], penguins['bill_depth_mm'])
# Creamos la matriz de correlación
corr_matrix = pd.DataFrame({'island': [1.0, island_corr, 0.0],
'sex': [sex_corr, 1.0, 0.0],
'body_mass_g': [0.0, spearman_corr, 1.0]},
index=['island', 'sex', 'body_mass_g'])
# Mostramos la matriz de correlación
sns.heatmap(corr_matrix, cmap='coolwarm', annot=True)
Code:
# Heatmap matriz de correlaciones
# ==============================================================================
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(5, 5))
sns.heatmap(
preprocess_penguins_df.corr(),
annot = True,
cbar = False,
annot_kws = {"size": 8},
vmin = -1,
vmax = 1,
center = 0,
cmap = sns.diverging_palette(20, 220, n=200),
square = True,
ax = ax
)
ax.set_xticklabels(
ax.get_xticklabels(),
rotation = 45,
horizontalalignment = 'right',
)
ax.tick_params(labelsize = 10)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?