Análisis de datos bajo Sweetviz

El análisis exploratorio de datos (EDA) es un primer paso esencial en la mayoría de los proyectos de ciencia de datos y, a menudo, implica seguir los mismos pasos para caracterizar un conjunto de datos (por ejemplo, encontrar tipos de datos, información faltante, distribución de valores, correlaciones, etc.). Una de las últimas es una nueva biblioteca Python de código abierto llamada Sweetviz.

dulce a saber

Después de instalar Sweetviz (usando pip install sweetviz), simplemente cargue los marcos de datos de pandas como lo haría normalmente, luego llame a Analyze(), Compare() o Compare_intra().

importar dulce a saber
importar pandas como pd
tren = pd.read_csv("tren.csv")
prueba = pd.read_csv("prueba.csv")

Ahora tenemos 2 marcos de datos (entrenar y probar) y nos gustaría analizar el valor objetivo "Sobrevivido". Quiero señalar que, en este caso, sabemos el nombre de la columna de destino de antemano, pero especificar una columna de destino sigue siendo opcional. Podemos generar un informe con esta línea de código:

my_report = sweetviz.compare([tren, "Tren"], [prueba, "Prueba"], "Sobrevivió")

Ejecutar este comando realizará el análisis y creará el objeto de informe. Para obtener el resultado, simplemente use el comando show_html():

my_report.show_html("Report.html") # Si no proporciona un nombre de archivo, el valor predeterminado será SWEETVIZ_REPORT.html

Resumen total

El resumen nos muestra las características de los dos marcos de datos uno al lado del otro. Podemos identificar de inmediato que el conjunto de prueba tiene aproximadamente la mitad del tamaño del conjunto de entrenamiento, pero contiene la misma funcionalidad. Esta leyenda en la parte inferior nos muestra que el conjunto de entrenamiento contiene la variable objetivo "Sobrevivió", pero el conjunto de prueba no.

Tenga en cuenta que Sweetviz hará una mejor estimación para determinar el tipo de datos de cada columna, entre numérico, categoría/booleano y texto. 

Análisis de datos bajo Sweetviz sweetviz

Asociaciones

Este gráfico es una combinación de imágenes de Drazen Zaric: mejores mapas de calor y tramas de matriz de correlación en Python y conceptos de Shaked Zychlinski: la búsqueda de correlación categórica.

Básicamente, además de mostrar las tradicionales correlaciones numéricas, unifica en un único gráfico tanto las correlación numérico sino también el coeficiente de incertidumbre (para categórico-categórico) y la relación de correlación (para categórico-numérico). Los cuadrados representan las variables vinculadas a las características categóricas y los círculos representan las correlaciones numérico-numéricas. Tenga en cuenta que la diagonal trivial se deja en blanco, para mayor claridad.

Las asociaciones categóricas-categóricas (proporcionadas por el coeficiente de incertidumbre) son ASIMÉTRICAS, lo que significa que cada fila representa la cantidad de información que el título de la fila (izquierda) brinda sobre cada columna. Por ejemplo, "Sexo", "Pclase" y "Tarifa" son los elementos que dan más información sobre "Sobrevivido". Para el conjunto de datos del Titanic, esta información es bastante simétrica, pero no siempre es así.

Finalmente, vale la pena señalar estos métodos de correlación/asociación
no debe tomarse como un evangelio ya que hacen suposiciones sobre la distribución subyacente de datos y relaciones. Sin embargo, pueden ser un punto de partida muy útil.

Análisis de datos bajo Sweetviz sweetviz

Seleccionando una variable

Cuando se especifica una variable de destino, aparecerá primero, en un cuadro negro especial. Actualmente, solo las entidades numéricas y booleanas pueden ser objetivos.

Podemos deducir de este resumen que "Sobrevivió" no tiene datos faltantes en el conjunto de entrenamiento (891, 100%), que hay 2 valores posibles distintos (que representan menos de 1% de todos los valores), y del gráfico se puede estimó que alrededor de 60 % no sobrevivieron.

Datos cualitativos y booleanos

Cuando mueve el mouse sobre una de las variables, un cuadro a la derecha mostrará los detalles. El contenido de los detalles depende del tipo de variable analizada. En el caso de una variable categórica (o booleana), como es el caso del target, el análisis es el siguiente:

Análisis de datos bajo Sweetviz sweetviz

Aquí podemos ver las estadísticas exactas para cada clase, donde 62% no sobrevivió y 38% sobrevivió. También obtiene el detalle de las asociaciones para cada una de las otras funciones.

Datos cuantitativos

Los datos numéricos muestran más información sobre su resumen. Aquí podemos ver que en este caso faltan alrededor de 20 % de los datos (21 % en los datos de prueba, lo cual es muy consistente).

Análisis de datos bajo Sweetviz sweetviz

Tenga en cuenta que el valor objetivo ("Sobrevivido" en este caso) se traza como una línea, justo encima del gráfico de distribución. Esto permite un análisis instantáneo de la distribución objetivo en relación con otras variables.

Curiosamente, podemos ver en el gráfico de la derecha que la tasa de supervivencia es bastante constante en todas las edades, excepto en los más jóvenes que tienen una tasa de supervivencia más alta. Parecería que "las mujeres y los niños primero" no son solo palabras.

Detalles de una variable cuantitativa

Al igual que con el tipo de datos categóricos, el tipo de datos numérico muestra información adicional en su área de detalles. Vale la pena señalar aquí los botones en la parte superior del gráfico.

Estos botones cambian el número de "contenedores" que se muestran en el gráfico. Puede seleccionar entre los siguientes: Automático, 5, 15, 30.

Para acceder a estos botones, debe "bloquear en su lugar" la funcionalidad actual haciendo clic en ellos. Luego, la función tiene un CONTORNO ROJO para mostrar que está bloqueada en su lugar y que puede acceder al área de detalles.

Análisis de datos bajo Sweetviz sweetviz

datos de texto

Por ahora, todo lo que el sistema no considere numérico o categórico será considerado "texto". Las funciones de texto actualmente solo muestran el número (porcentaje) como estadísticas.

Análisis de datos bajo Sweetviz sweetviz

Comparación de subpoblaciones

Incluso si está viendo un solo conjunto de datos, puede ser muy útil estudiar las características de diferentes subpoblaciones dentro de ese conjunto de datos.

Para ello, Sweetviz ofrece la función compare_intra(). Para usarlo, proporciona una prueba booleana que divide la población (aquí intentamos entrenar ["Sexo"] == 'masculino', para tener una idea de las diferentes poblaciones de género) y dar a cada subpoblación. Por ejemplo:

my_report = sweetviz.compare_intra(tren, tren["Sexo"] == 'masculino', ["Masculino", "Femenino"], 'Sobrevivió')my_report.show_html() # Si no proporciona un nombre de archivo, el valor predeterminado será SWEETVIZ_REPORT.html

Esto da el siguiente análisis:

Análisis de datos bajo Sweetviz sweetviz

Tenga en cuenta que el valor objetivo ("Sobrevivió" en este caso) ahora se traza como líneas separadas, una para cada conjunto de datos que se comparan (por ejemplo, hombre en azul, mujer en naranja).

Ejemplo en el conjunto de datos del Titanic

PasajeroId

Análisis de datos bajo Sweetviz sweetviz
  • La distribución de ID y supervivencia es uniforme y ordenada.

Sexo

Análisis de datos bajo Sweetviz sweetviz
  • El doble de hombres que de mujeres
  • Mismas distribuciones en conjuntos de entrenamiento y prueba.

edad

Análisis de datos bajo Sweetviz sweetviz
  • 20 % de datos faltantes, datos faltantes consistentes y distribución entre Train y Test

Nombre

Análisis de datos bajo Sweetviz sweetviz
  • Sin datos faltantes

Pclase

Análisis de datos bajo Sweetviz sweetviz
  • La capacidad de supervivencia sigue de cerca a la clase (la primera clase tiene más probabilidades de sobrevivir, la tercera clase tiene menos probabilidades)

SibEsp

Análisis de datos bajo Sweetviz sweetviz
  • Parece haber un pico de capacidad de supervivencia en 1 y, hasta cierto punto, en 2, pero (mirando el panel de detalles que no se muestra aquí) hay una fuerte caída en 3 y más. ¿Las familias numerosas no podían hacerlo o eran quizás más pobres?

Parque

Análisis de datos bajo Sweetviz sweetviz
  • Reparto Similar

Boleto

  • ~80 % de valores distintos, es decir, aproximadamente 1 de cada 5 tickets compartidos en promedio

Tarifa

Análisis de datos bajo Sweetviz sweetviz
  • Como se esperaba, y similar a la clase P, las tarifas más altas sobrevivieron mejor (aunque el tamaño de la muestra se reduce bastante en los niveles más altos)

Cabina

Análisis de datos bajo Sweetviz sweetviz
  • 78% faltan datos

Incrustado

Análisis de datos bajo Sweetviz sweetviz
  • 3 valores distintos (S, C, Q)

Análisis general

  • En general, la mayoría de los datos están ahí y parecen coherentes y lógicos; sin grandes valores atípicos ni grandes sorpresas

Datos de prueba versus datos de entrenamiento

La prueba contiene alrededor de 50 líneas % menos.

Train y Test están muy cerca en la distribución de datos faltantes.

Los valores de datos de entrenamiento y prueba son muy consistentes en todos los ámbitos

Análisis de asociación/correlación

  • El género, la tarifa y la clase brindan la mayor cantidad de información sobre los sobrevivientes

datos perdidos

  • No faltan datos significativos excepto la edad (~20 %) y la cabina (~77 %)