¿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