¿Qué es un diagrama de dispersión y cómo puede ayudarte en el análisis de datos?
Los diagramas de dispersión son herramientas visuales poderosas en la ciencia de datos, permitiéndonos entender mejor los patrones y relaciones dentro de un conjunto de datos. Se utilizan para mostrar la relación entre dos variables, ayudándonos a visualizar cómo se distribuyen los datos en función de sus atributos específicos. Esto es esencial para identificar posibles correlaciones, tendencias o anomalías que podrían no ser evidentes en una simple tabla de datos.
Los diagramas de dispersión se representan mediante puntos que indican las coordenadas de un par de valores en los ejes x e y. En el contexto de datos como el famoso dataset de iris, cada punto podría representar una flor con la longitud de su sépalo y pétalo. Esta visualización rica y detallada permite no solo ver todas las observaciones a la vez, sino también evaluar su distribución y relación.
¿Cómo crear diagramas de dispersión con Seaborn?
Crear diagramas de dispersión con la librería Seaborn en Python es sencillo y eficiente. Esta herramienta ofrece una forma intuitiva de realizar visualizaciones complejas mediante código compacto y fácil de entender.
Para comenzar a trabajar con diagramas de dispersión en Seaborn, utilizamos la función scatterplot(). Aquí un ejemplo básico:
import seaborn as sns
import pandas as pd
# Cargamos el dataset irisiris = sns.load_dataset("iris")# Creamos un diagrama de dispersiónsns.scatterplot(data=iris, x='sepal_length', y='petal_length')
Este ejemplo sencillo muestra cómo definir las variables en los ejes x e y para visualizar los datos de longitud de sépalo y pétalo del dataset de iris.
¿Cómo agregar parámetros categóricos?
Agregar colores distintivos para diferenciar categorías hace que los diagramas de dispersión sean aún más informativos. En Seaborn, esto se logra fácilmente con el parámetro hue. Aquí un ejemplo que diferencia las especies de flores:
Esta implementación permite ver rápidamente diferencias significativas entre las especies, destacando cómo ciertos atributos pueden variar entre ellas.
¿Qué es un joint plot y qué beneficios aporta?
Los joint plots ofrecen una ventaja adicional al combinar diagramas de dispersión con histogramas, proporcionando una visión más completa de la distribución de los datos y las relaciones inter-ejes.
En Seaborn, crear un joint plot es igualmente sencillo:
Este tipo de visualización no solo muestra los puntos de dispersión, sino también las distribuciones marginales de cada variable. Los joint plots son ideales para detectar patrones más sutiles en la distribución de los datos, además de proporcionar una visión general de cuáles parámetros podrían seguir una distribución normal.
¿Cuáles son otros tipos de visualizaciones útiles en Seaborn?
Además de los diagramas de dispersión y joint plots, hay otros tipos de visualizaciones que pueden proporcionar diferentes perspectivas y niveles de detalle. Dos ejemplos son:
Boxplots: Útiles para resumir la distribución de una variable, mostrando la mediana, cuartiles y posibles valores atípicos.
¿Cómo seguir explorando y mejorando tus visualizaciones?
La mejor forma de dominar estas técnicas es practicar creando visualizaciones personalizadas con tus conjuntos de datos. Experimenta con diferentes parámetros y estilos para encontrar aquellas representaciones que mejor transmitan la información que deseas mostrar. No olvides referirte a la amplia documentación de Seaborn para descubrir los múltiplos atributos y características que puedes incorporar a tus gráficos.
Inicia tu exploración y desarrolla tus habilidades en visualización de datos. Recuerda que las herramientas son tan poderosas como tú las utilices. La práctica y la curiosidad son claves para convertirte en un analista de datos eficaz.
Mi parte del reto, cambiando las variables y gracias a la lectura de la documentación logré cambiar colores y tipos de gráficas. 😜✨🎪
Te quedo muy bien. Me encanta esa paleta de colores "inferno"
Oye te quedó increíble :0
En busca de poder visualizar las relaciones existentes entre los anchos y largos con los sépalos y pétalos, primero me puse a realizar las distintas conbinaciones una por una. Luego, leyendo la documentación de seaborn, encontré pairgridy pairplot y esto fue como recibir el vientito de la rosa de Guadalupe :P
Lo probre y la verdad syuda demasido wowww
Muy buen aporte. Pero no entiendo qué se está graficando en la diagonal.
Miren el joint de la base de datos Cars
Puede llegar a notarse una relación exponencial :)
Entre más reciente es el modelo del auto tiende a tener un precio más alto. Lo cual es totalmente lógico, entre mas nuevo mas caro.
¡Hola! Comparto mis aportes de la clase. Hay muchos tipos de gráficas que podemos experimentar y con los que podemos jugar, ¡quedé impresionada! Estos son sólo dos de los que me encontré :)
Te quedó increíble!
Para el reto intenté hacer un código que permitiera fácilmente cambiar las variables que se estaban analizando y a su vez que me permitiera ver la ecuación de regresión que se estaba dibujando.
Para este análisis tomé los datos de los pétalos. Más abajo les cuento el proceso para hacer la gráfica, lo que me pareció interesante es poder sacar algunas conclusiones preliminares, por ejemplo:
En la especie setosa la variación de tamaños de pétalo es muy pequeña a comparación de las otras especies.
En la especie versicolor es cuando, entre más largo el pétalo, más ancho este (la pendiente en la regresión es mayor)
La especie virginica, si bien es la que más grande tiene sus pétalos, también es la que tiene mayor dispersión de todas (ver los boxplot, donde se ve que la caja más grande es la de esta especie, tanto para largo y ancho del pétalo.
La especie setosa es la más consistente en el tamaño de sus pétalos (es la que menor dispersión tiene)
.
.
.
.
)
.
Ahora sí, cómo fue el proceso de hacer las gráficas:
Lo primero que tuve que averiguar fue cómo dibujar las líneas de regresión diferentes para cada una de las especies. Así fue como llegué a lmplot. Según la documentación de seaborn esta gráfica sirve conviene cuando se desea ver las líneas de regresión de múltiples subconjuntos de datos al mismo tiempo.
.
Lo siguiente que quise hacer fue mostrar en la gráfica las ecuaciones de regresión. Lastimosamente seaborn no ofrece la funcionalidad built-in por lo que hay que hacer uso de otra librería para hacer estos cálculos. Esto, claramente, puede traer pequeñas discordancias entre la gráfica y la ecuación, pero para usar seaborn (que era la idea del reto) no había de otra. Lo mejor sería ver si alguna otra librería gráfica nos permite obtener este información al tiempo.
.
Buscando cómo hacer esto llegué a la librería Scipy. Esta tiene un método llamado linregress que nos devuelve la pendiente, el intercepto, y otros valores que se verán más adelante en el curso.
Con este método se logra sacar las ecuaciones y con un poco de documentación de seaborn encontré cómo poner una leyenda en la cual se puede mostrar la ecuación de cada línea de regresión.
.
El código es el siguiente:
Puse un par de variables para definir las columnas a usar.
Separé el dataset en diferentes datasets para tener la información de cada especie y poder hacer la regresión (habría que buscar si es posible hacerlo con el mismo dataset)
Usé el método linregress para hallar los valores de la ecuación de regresión de cada dataset por especie.
El gráfico con seaborn es lo más sencillo (gracias seaborn) donde solo se le dice las variables a tomar y el valor por el cual se quiere separar (hue)
Posteriormente hay que obtener la leyenda y el texto que esta tiene, para poderla modificar y añadir cada una de las ecuaciones de regresión.
Gracias muchas gracias. :)
Hay muchísimos tipos de gráficos a utilizar y algunos creo que solo añaden cosas innecesarias y dan más complejidad visual.
Creo que un buen científico de datos debe de saber crear gráficos sencillos pero impactantes y por eso les quiero recomendar el libro Storytelling with data
La autora tiene más de 10 años de experiencia usando gráficos y trabajando en negocios, así que podemos decir que es experta en este campo. De hecho ella menciona que es malo en la gran mayoría de los casos usar el tan famoso 'pie chart'.
En fin, me parece un excelente libro y por eso se lo quería recomendar :)
reto
para el joinplot use el ancho del pétalo y sépalo, me parece muy completo este tipo de grafica
.
para el grafico de barras use el promedio de la longitud del sépalo, para calcular el promedio u otra de las métricas que hemos visto en clase se tiene que añadir el estimador en la función para hacerlo directamente sino tendríamos que agrupar y calcular el parámetro, yo use numpy para añadir directamente el estimador
from numpy import mean
sns.barplot(data=iris, x='species',y='sepal_length', estimator=mean, order=['virginica','versicolor','setosa'])
Si no me equivoco, barplot utiliza la media como estimador por defecto. Entonces podrías obviar estimator=mean
Seaborn tiene un repositorio online con datasets de ejemplo para practicar. Para ver la lista de estos datasets se puede usar este código.
import seaborn as sns
sns.get_dataset_names()
Yo me puse a jugar con el dataset de pasajeros del Titanic, está bien interesante. No tiene muchas variables numéricas, pero seaborn tiene otro tipo de gráfico que es el countplot, que me sirvió para graficar conteos por variables categóricas, como conteo de superviventes por clase, por género, etc etc.
Reto
En la clase usamos el largo y ahora en el reto se usará el ancho
sns.jointplot(data=iris, x ='sepal_width', y ='petal_width', hue='species')
Si no se habían dado cuenta en el BARPLOT, cuando determinamos las variables "x" y "y" y una de esas variables es númerica y contiene varios valores, automaticamente barplot saca el promedio para determinar el valor que va a representar y esto lo corrobore haciendo un groupby de las especies y determinando su promedio y comparando el resultado del BARPLOT.
Siguiendo el reto, hice un scatterplot relacionando "petal_width" con "petal_length". En este caso lo hice en blanco y negro, y para diferenciar las distintas especies usé marcadores.
El código es:
sns.scatterplot(data=iris, x="petal_width", y ="petal_length", style ="species", color="black")
En R seria algo asi:
Sin librerias
plot(x=df$sepal_length, y=df$petal_length, col=df$Species)
Fantástico, R es uno de los mejores y mas completos programas que para análisis, exploración visualización de datos
gracias por compartir tu código
Relacion entre ancho del sepal y la logintud del petalo
sns.jointplot(data=iris, x ='petal_length', y ='sepal_width', kind='reg')
que significa pipeline?
Tuberías, se refiere a una serie de procesos o transformaciones que se realiza a cada conjunto de datos de manera distinta, así, una vez tengamos nuevos datos, sólo tenemos que ingresarlos a la tubería y las transformaciones se realizaran automáticamente.
Dejo mi humilde aporte jugando con el gráfico "Scatterplot":
Y por último jugando con "regplot":
Encontré otra muy buena que es el Catplot, te divide ya sea el de barras o scatter segun las filas o columnas que quieras, yo en este caso lo dividí por especie.
Despues de hacer las combinaciones correspondientes y encontrar correlaciones y algunas que no existian.
Lo que mas me llamo la atencion es que para las Iris del tipo Versicolor y Virginica existe una ++correlacion positiva entre la anchura del sepalo y el largo del petalo++ pero para las Iris del tipo Setosa ++No existe una correlacion entre estos dos datos++ ya que la longitud del petalo se mantiene casi constante mientras que existe una variacion importante de anchura del sepalo
Como primer ejercicio, únicamente generé el mismo gráfico de dispersión, pero enfrentando esta vez el ancho del pétalo y del sépalo. Por una parte, el ancho del sépalo mostraba la misma relación entre especies que el largo (las setosas las que lo tenías más grande, y las virgínicas las que lo tenías más pequeño. No obstante, el ancho del sépalo presenta la relación opuesta.
Para el barPlot, generé un diagrama de barras mostrando la relación entre la familia de las flores y el largo del sépalo, y subdividiéndolo en base al ancho del sépalo.