Python | Titanic Data EDA utilizando Seaborn

¿Qué es EDA?  
El análisis exploratorio de datos (EDA) es un método utilizado para analizar y resumir conjuntos de datos. La mayoría de las técnicas EDA implican el uso de gráficos.

Conjunto de datos Titanic: 
es uno de los conjuntos de datos más populares utilizados para comprender los conceptos básicos de aprendizaje automático. Contiene información de todos los pasajeros a bordo del RMS Titanic, que lamentablemente naufragó. Este conjunto de datos se puede utilizar para predecir si un pasajero determinado sobrevivió o no. 

El archivo csv se puede descargar desde Kaggle .

Código: Cargando datos usando Pandas 

Python3

#importing pandas library
import pandas as pd
 
#loading data
titanic = pd.read_csv('...\input\train.csv')

Seaborn: 
Es una biblioteca de python utilizada para visualizar datos estadísticamente. Seaborn , construido sobre Matplotlib, proporciona una mejor interfaz y facilidad de uso. Se puede instalar usando el siguiente comando, 
pip3 install seaborn

Código: cabezal de datos de impresión  

Python3

# View first five rows of the dataset
titanic.head()

Producción : 

Código: Comprobación de los valores NULL 

Python3

titanic.isnull().sum()

Producción : 

Las columnas que tienen valores nulos son: Edad, Cabina, Embarcado. Necesitan ser llenados con valores apropiados más adelante.

Características: el conjunto de datos Titanic tiene aproximadamente los siguientes tipos de características:

  • Categórico/Nominal : Variables que se pueden dividir en múltiples categorías pero que no tienen orden ni prioridad. 
    P.ej. Embarcado (C = Cherburgo; Q = Queenstown; S = Southampton)
  • Binario : un subtipo de características categóricas, donde la variable tiene solo dos categorías. 
    Por ejemplo: sexo (masculino/femenino)
  • Ordinal : son similares a las características categóricas pero tienen un orden (es decir, se pueden ordenar). 
    P.ej. Pclase (1, 2, 3)
  • Continuos : Pueden tomar cualquier valor entre los valores mínimo y máximo de una columna. 
    P.ej. Edad, Tarifa
  • Conteo : Representan el conteo de una variable. 
    P.ej. Hermano, Parch
  • Inútiles : no contribuyen al resultado final de un modelo ML. Aquí, PassengerId, Name, Cabin y Ticket podrían entrar en esta categoría.

Código: Análisis Gráfico 

Python3

import seaborn as sns
import matplotlib.pyplot as plt
 
# Countplot
sns.catplot(x ="Sex", hue ="Survived",
kind ="count", data = titanic)

Producción :

Con solo observar el gráfico, se puede aproximar que la tasa de supervivencia de los hombres ronda el 20% y la de las mujeres ronda el 75% . Por lo tanto, si un pasajero es hombre o mujer juega un papel importante para determinar si uno va a sobrevivir.

Código: Pclass (característica ordinal) vs sobrevivido  

Python3

# Group the dataset by Pclass and Survived and then unstack them
group = titanic.groupby(['Pclass', 'Survived'])
pclass_survived = group.size().unstack()
 
# Heatmap - Color encoded 2D representation of data.
sns.heatmap(pclass_survived, annot = True, fmt ="d")

Producción: 

Ayuda a determinar si los pasajeros de clase superior tenían una mayor tasa de supervivencia que los de clase inferior o viceversa. Los pasajeros de clase 1 tienen una mayor probabilidad de supervivencia en comparación con las clases 2 y 3 . Implica que Pclass contribuye mucho a la tasa de supervivencia de un pasajero.

Código: edad (característica continua) vs sobreviviente  

Python3

# Violinplot Displays distribution of data
# across all levels of a category.
sns.violinplot(x ="Sex", y ="Age", hue ="Survived",
data = titanic, split = True)

Producción : 

Este gráfico da un resumen del rango de edad de hombres, mujeres y niños que fueron salvos. La tasa de supervivencia es –  

  • Bueno para los niños.
  • Alto para mujeres en el rango de edad 20-50.
  • Menos para los hombres a medida que aumenta la edad.

Dado que la columna Edad es importante, los valores que faltan deben completarse, ya sea utilizando la columna Nombre (determinando la edad en función del saludo: Sr., Sra., etc.) o utilizando un regresor. 
Después de este paso, se puede crear otra columna: Age_Range (basada en la columna de edad) y los datos se pueden analizar nuevamente. 

Código: diagrama de factores para Family_Size (característica de conteo) y tamaño de familia.  

Python3

# Adding a column Family_Size
titanic['Family_Size'] = 0
titanic['Family_Size'] = titanic['Parch']+titanic['SibSp']
 
# Adding a column Alone
titanic['Alone'] = 0
titanic.loc[titanic.Family_Size == 0, 'Alone'] = 1
 
# Factorplot for Family_Size
sns.factorplot(x ='Family_Size', y ='Survived', data = titanic)
 
# Factorplot for Alone
sns.factorplot(x ='Alone', y ='Survived', data = titanic)


Family_Size indica el número de personas en la familia de un pasajero. Se calcula sumando las columnas SibSp y Parch de un pasajero respectivo. Además, se agrega otra columna Solo para verificar las posibilidades de supervivencia de un pasajero solo frente a uno con una familia.

Observaciones importantes – 

  • Si un pasajero está solo, la tasa de supervivencia es menor.
  • Si el tamaño de la familia es mayor de 5, las posibilidades de supervivencia disminuyen considerablemente.

Código: gráfico de barras para tarifa (característica continua)  

Python3

# Divide Fare into 4 bins
titanic['Fare_Range'] = pd.qcut(titanic['Fare'], 4)
 
# Barplot - Shows approximate values based
# on the height of bars.
sns.barplot(x ='Fare_Range', y ='Survived',
data = titanic)

Producción : 

Tarifa denota la tarifa pagada por un pasajero. Como los valores en esta columna son continuos, deben colocarse en contenedores separados (como se hizo para la función Edad ) para tener una idea clara. Se puede concluir que si un pasajero pagó una tarifa más alta, la tasa de supervivencia es mayor.

Código: Gráficos de conteo categórico para la función Embarcado  

Python3

# Countplot
sns.catplot(x ='Embarked', hue ='Survived',
kind ='count', col ='Pclass', data = titanic)

Algunas observaciones notables son: 

  • La mayoría de los pasajeros embarcados desde S . Entonces, los valores que faltan se pueden completar con S .
  • La mayoría de los pasajeros de clase 3 embarcaron desde Q .
  • S parece afortunado para los pasajeros de clase 1 y 2 en comparación con la clase 3.

Conclusión :  

  • Las columnas que se pueden soltar son: 
    • PassengerId, Name, Ticket, Cabin: son strings, no se pueden categorizar y no contribuyen mucho al resultado. 
    • Edad, tarifa: en su lugar, se conservan las columnas de rango respectivas.
  • Los datos titánicos se pueden analizar utilizando muchas más técnicas gráficas y también más correlaciones de columna que, como se describe en este artículo.
  • Una vez que se completa el EDA, el conjunto de datos resultante se puede usar para predicciones.

Publicación traducida automáticamente

Artículo escrito por SamyuktaSHegde y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *