Excelente curso, gracias a lo aprendido pude aplicar los conocimientos para un proyecto personal que busca optimizar una cámara termica de baja resolución.
Este fue el resultado.
Visualización de datos con Python
La importancia de la visualización de datos
Matplotlib
Pyplot básico
Subplot
Método orientado a objetos
Subplots
Leyendas, etiquetas, títulos, tamaño
Colores y estilos
Bar Plot
Crear otro tipo de gráficas
Quiz: Matplotlib
Seaborn
Seaborn
Set
Parámetros más usados con Seaborn
Distribuciones
Categóricos
Relation
Jointplot y Pairplot
Heatmap
Quiz: Seaborn
Cierre del curso
Posibilidades con Matplotlib y Seaborn
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Heatmap es un tipo de gráfico enfocado a una estructura matricial. Heatmap correlaciona todas las variables numéricas del dataset.
Importa los datos que necesitas:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
tips.head()
tips.corr() ---> Muestra las variables correlacionadas entre si
sns.heatmap(tips.corr());
annot
muestra el valor de la correlación,cmap
color,linewidths
espacio entre variables, linecolor
color de las líneas, vminv, max
valores máximos y mínimos, cbar=False
eliminar la barrasns.heatmap(tips.corr(), annot= True, cmap='coolwarm', linewidths=5, linecolor='black', vmin=0.5,vmax=1,cbar=False);
Aportes 29
Preguntas 2
Excelente curso, gracias a lo aprendido pude aplicar los conocimientos para un proyecto personal que busca optimizar una cámara termica de baja resolución.
Este fue el resultado.
tips.corr() ahora se escribe asi “tips.corr(numeric_only=True)”
Un tip para cuando quieran invertir los colores en cmap, solo se agrega “_r” al final del nombre del color usado en cmap.
Por ejemplo, este fue el color de ejemplo de la clase en donde el color rojo es para el valor más alto y el azul para el más bajo:
correlation = df.corr()
sns.heatmap(correlation, annot=True, cmap="coolwarm", linewidths=5);
Si se cambia en cmap el valor de “coolwarm” agregandole “_r” al final se tiene lo siguiente:
correlation = df.corr()
sns.heatmap(correlation, annot=True, cmap="coolwarm_r", linewidths=5);
Otro ejemplo grafico
En poco tiempo será necesario especificar que corr aplica solo a datos numericos, por lo que tendremos que usar:
tips.corr(numeric_only=True)
Separé primero el dataset entre Dinner y Lunch. Luego entre Female y Male. Para comparar las correlaciones entre estas divisiones.
import seaborn as sns
import matplotlib.pyplot as plt
cond_dinner =tips['time'] == 'Dinner'
tips_dinner = tips[cond_dinner]
cond_lunch =(tips['time'] =='Lunch')
tips_lunch = tips[cond_lunch]
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14,6))
sns.heatmap(tips_dinner.corr(), ax=ax1 ,annot=True,cmap='coolwarm',linewidths=5,linecolor='black')
sns.heatmap(tips_lunch.corr(), ax=ax2,annot=True,cmap='coolwarm',linewidths=5,linecolor='black')
ax1.set_title('Dinner Correlation')
ax2.set_title('Lunch Correlation')
plt.show()
En Lunch se producen mayores correlaciones que en Dinner.
cond_male =tips['sex'] == 'Male'
tips_male = tips[cond_male]
cond_female =(tips['sex'] =='Female')
tips_female = tips[cond_female]
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14,6))
sns.heatmap(tips_female.corr(), ax=ax1 ,annot=True,cmap='coolwarm',linewidths=5,linecolor='black')
sns.heatmap(tips_male.corr(), ax=ax2,annot=True,cmap='coolwarm',linewidths=5,linecolor='black')
ax1.set_title('Female Correlation')
ax2.set_title('Male Correlation')
plt.show()
No hay tantas diferencias entre Female y Dinner.
Estuve buscando las opciones que me da cmap, con la esperanza de encontrar la transición de rojo, amarillo y verde.
Si estaban buscando lo mismo, no encontré esas opciones, cmap:
tiene las siguientes opciones:
viridis, plasma, inferno, magma, cividis, coolwarm
De las cuales cvidis fue la que más me gustó:
Sin embargo aún no me di por vencido y encontré que podía utilizar matplotlib para hacer el heatmap como quería:
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
# Define los colores para el mapa de colores personalizado
colors = [(1, 0, 0), (1, 1, 0), (0, 1, 0)] # Rojo, amarillo, verde
# Crea el mapa de colores personalizado
cmap = LinearSegmentedColormap.from_list("custom_cmap", colors)
# Utiliza el cmap personalizado en el heatmap
sns.heatmap(tips.corr(),annot=True,cmap=cmap,linewidth=5,vmin=0.2, vmax=1)
plt.show()
Espero les sea de ayuda.
Se genera un mensaje de Warning al aplicar la función .corr() debido a que ahora se hace necesario especificar el parámetro numeric_only = True
tips.corr(numeric_only = True)
Se podría decir que el heatmap es una forma de ver las correlaciones con colores. Y que el pairplot es una forma de ver las correlaciones de forma mucho más gráfica.
El coeficiente de correlación no expresa relación de causa y efecto, expresa asociación de hecho.
Enamorado de todo Seaborn pero el Heatmap es de verdad AMOR a golpe de vista:
sns.heatmap(tips.corr(),annot=True);
L
La elección entre estas medidas de correlación depende de la naturaleza de los datos y el tipo de relación que estás buscando. En muchos casos, es útil examinar más de una medida de correlación para obtener una comprensión más completa de la relación entre las variables.
En la clase hicimos el heatmap con los datos correlacionados, ya que solo tomaba los valores numéricos; sin embargo, me di a la tarea de transformar mis datos para poder utilizarlo con las variables categóricas.
tipsn = tips.pivot_table(index='day', columns=['sex','smoker','time'],values= 'tip').fillna(0)
sns.heatmap(tipsn,center=5,annot=True);
Me encanto el uso del heatmap. No sabia de como funciona al principio y como este se palica al un proyecto. Ahora que lo se. Tengo ganas de implementarlo en mi proyecto sin problemas.
Para quienes no lo están corriendo en un cuaderno, sino en Python, se debe eliminar las columnas que no son númericas:
import seaborn as sns
import matplotlib.pyplot as plt
tips = sns.load_dataset('tips')
print(tips.head(2))
print(tips.drop(columns=['sex','smoker','day','time']).corr())
Heatmap
sns.heatmap(tips.corr(),
annot = True,
cmap= 'coolwarm',
linewidth = 5,
linecolor = 'black',
vmin = 0.5, vmax = 1,
cbar = True)
excelente clase 😄, lastima que termina el curso
Configurar gráfico de Heatmap
sns.heatmap(tips.corr(),annot=True, cmap='coolwarm', linewidths=5, linecolor='black', vmin=0, vmax=1, cbar=True)
plt.show()
sns.heatmap(tips.corr(),annot=True, cmap='coolwarm',linewidths=5,linecolor='black',
vmin=0.5,vmax=1,cbar=True)
plt.show()
Este tipo de gráficos se utiliza mucho al crear portafolios de inversión, la correlación entre diferentes tipos de acciones, donde es importante que se de correlación negativa para que tengas un portafolio bien diversificado
Información resumida de esta clase
#EstudiantesDePlatzi
La gráfica heatmap me permite graficar los datos que tengo en una estructura matricial
La función corr me permite saber la correlación que existen entre los datos de mi dataset
La correlación va de -1 a 1
Si obtenemos -1 significa que no existe una correlación
Si obtenemos 0 significa que no existe una correlación
Si obtenemos 1 significa que existe una correlación directa
Con la función heatmap obtengo este gráfico de mapa de calor
El parámetro annot me permite visualizar las etiquetas en la gráfica
Con el parámetro cmap puedo cambiar los colores del headmap
Ejercicios de clase
Heatmap
Heatmap es un tipo de gráfico enfocado a una estructura matricial. Heatmap correlaciona todas las variables numéricas del dataset.
Ejercicio práctico para usar Heatmap
Importa los datos que necesitas:
________________________________________
[1]
1 s
import matplotlib.pyplot as plt
import seaborn as sns
________________________________________
[2]
4 s
titanic = sns.load_dataset("titanic")
titanic.head(10)
________________________________________
[3]
titanic.corr()
#con la funcion (corr), puedo ver todas la corelaciones de mis variables
________________________________________
[4]
sns.heatmap(titanic.corr())
plt.show()
#este grafico me muetra de 0 a 10 y de -2 a -4, como se comportan mis variables basandose en colores
#es bastante util porque puedo ver con gama de colores como se encuentra la corelacion dentro las distintas variables
________________________________________
[10]
1 s
plt.figure(figsize=(10,10))
sns.heatmap(titanic.corr(),annot=True,linewidths=5)
plt.show()
#con el parametro(annot), puedo ver el valor de la correlacion y una barra que me indica cada color
________________________________________
[20]
1 s
plt.figure(figsize=(10,10))
sns.heatmap(titanic.corr(),annot=True,cmap="coolwarm",linewidths=5,linecolor="black")
plt.show()
#aca podemos general el mismo grafico pero con colores, calidos y frios
#entre mas tienda al rojo es ma calidos y entre mas tienda al azul es mas frios
#con el parametro(linewidths=), podemos separa un poco las lineas y se vera muchos mas legible la grafica
#y puedo cambiar el color de las lines que separa a cada una de las corelaciones
________________________________________
[18]
plt.figure(figsize=(10,10))
sns.heatmap(titanic.corr(),annot=True,cmap="coolwarm",linewidths=5,linecolor="black",
vmin=0,vmax=1)
plt.show()
#aca tenemos una correlacion de 0 a 1, y se pierden algunos de los colores en este caso
#la tonalidades entre calido y frio, como podemos notar quedaron tonalidades totalmente fria en su mayoria
#porque van solo de Zero a uno
________________________________________
[21]
plt.figure(figsize=(10,10))
sns.heatmap(titanic.corr(),annot=True,cmap="coolwarm",linewidths=5,linecolor="black",
vmin=0,vmax=1)
#aca estamos respetando un poco los valores de la tonalidades y nos dan los resultados
#mas cálidos
________________________________________
[25]
0 s
plt.figure(figsize=(10,10))
sns.heatmap(titanic.corr(),annot=True,cmap="coolwarm",linewidths=5,linecolor="black",
vmin=-0.4,vmax=10)
#aca estamo dejando los valores por defecto que entrega directamente el headmap
#si deseamos no ver la barra de colores en nuetra grafica los podemos quitar con (false )
________________________________________
ya conocemos lo útil y sencillo que es utilizar el headmap de Seaborn, solo tenemos una estructura matricial en la que tenemos características en las columnas y filas y valores en las intersecciones haedmp es la mejor forma de graficarlas, y no solo funciona con correlaciones, también funciona cuando el dataset tiente a esa estructura de correlación
________________________________________
[ ]
trabajando con otros dataset
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?