El Análisis Exploratorio de Datos (EDA, por sus siglas en inglés) es una fase crucial en el proceso de análisis de datos. Su objetivo principal es resumir las características principales de un conjunto de datos, a menudo con métodos visuales, antes de aplicar modelos más complejos. El EDA ayuda a comprender la estructura de los datos, detectar patrones, identificar anomalías y formular hipótesis.

Objetivos del EDA

  1. Comprender la Distribución de los Datos: Identificar cómo se distribuyen los datos y detectar cualquier sesgo.
  2. Identificar Relaciones entre Variables: Descubrir correlaciones y relaciones entre diferentes variables.
  3. Detectar Valores Atípicos: Encontrar y manejar valores que se desvían significativamente del resto de los datos.
  4. Validar Suposiciones: Confirmar o refutar suposiciones iniciales sobre los datos.
  5. Preparar Datos para Modelado: Transformar y limpiar datos para que estén listos para el modelado.

Herramientas y Técnicas Comunes en EDA

  • Estadísticas Descriptivas: Media, mediana, moda, desviación estándar, percentiles.
  • Visualizaciones: Histogramas, diagramas de caja (box plots), gráficos de dispersión (scatter plots), gráficos de barras, gráficos de líneas.
  • Tablas de Frecuencia: Para variables categóricas.
  • Matrices de Correlación: Para identificar relaciones entre variables numéricas.

Ejemplo Práctico de EDA

Paso 1: Cargar y Examinar los Datos

Primero, cargamos un conjunto de datos y realizamos una inspección inicial.

import pandas as pd

# Cargar el conjunto de datos
data = pd.read_csv('data.csv')

# Mostrar las primeras filas del conjunto de datos
print(data.head())

# Resumen estadístico de las variables numéricas
print(data.describe())

# Información sobre el conjunto de datos
print(data.info())

Paso 2: Estadísticas Descriptivas

Obtenemos estadísticas descriptivas para entender la distribución de los datos.

# Media de cada columna
print(data.mean())

# Mediana de cada columna
print(data.median())

# Desviación estándar de cada columna
print(data.std())

Paso 3: Visualización de Datos

Utilizamos gráficos para visualizar la distribución y las relaciones entre las variables.

import matplotlib.pyplot as plt
import seaborn as sns

# Histograma de una variable
plt.figure(figsize=(10, 6))
sns.histplot(data['variable1'], kde=True)
plt.title('Distribución de Variable1')
plt.show()

# Diagrama de caja para detectar valores atípicos
plt.figure(figsize=(10, 6))
sns.boxplot(x=data['variable2'])
plt.title('Diagrama de Caja de Variable2')
plt.show()

# Gráfico de dispersión para ver la relación entre dos variables
plt.figure(figsize=(10, 6))
sns.scatterplot(x=data['variable1'], y=data['variable2'])
plt.title('Gráfico de Dispersión entre Variable1 y Variable2')
plt.show()

Paso 4: Identificación de Valores Atípicos

Detectamos y manejamos valores atípicos que pueden afectar el análisis.

# Identificar valores atípicos usando el diagrama de caja
Q1 = data['variable2'].quantile(0.25)
Q3 = data['variable2'].quantile(0.75)
IQR = Q3 - Q1

# Definir límites para valores atípicos
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# Filtrar valores atípicos
outliers = data[(data['variable2'] < lower_bound) | (data['variable2'] > upper_bound)]
print(outliers)

Paso 5: Matriz de Correlación

Calculamos y visualizamos la matriz de correlación para identificar relaciones entre variables.

# Matriz de correlación
correlation_matrix = data.corr()

# Visualización de la matriz de correlación
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Matriz de Correlación')
plt.show()

Ejercicio Práctico

Ejercicio 1: Realizar EDA en un Conjunto de Datos de Ejemplo

  1. Carga el conjunto de datos titanic.csv.
  2. Realiza un análisis exploratorio de datos siguiendo los pasos mencionados anteriormente.
  3. Identifica y visualiza la distribución de la variable Age.
  4. Encuentra y maneja los valores atípicos en la variable Fare.
  5. Calcula y visualiza la matriz de correlación para las variables numéricas.

Solución del Ejercicio 1

# Paso 1: Cargar y Examinar los Datos
titanic_data = pd.read_csv('titanic.csv')
print(titanic_data.head())
print(titanic_data.describe())
print(titanic_data.info())

# Paso 2: Estadísticas Descriptivas
print(titanic_data['Age'].mean())
print(titanic_data['Age'].median())
print(titanic_data['Age'].std())

# Paso 3: Visualización de Datos
plt.figure(figsize=(10, 6))
sns.histplot(titanic_data['Age'], kde=True)
plt.title('Distribución de Edad')
plt.show()

plt.figure(figsize=(10, 6))
sns.boxplot(x=titanic_data['Fare'])
plt.title('Diagrama de Caja de Fare')
plt.show()

# Paso 4: Identificación de Valores Atípicos
Q1 = titanic_data['Fare'].quantile(0.25)
Q3 = titanic_data['Fare'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
outliers = titanic_data[(titanic_data['Fare'] < lower_bound) | (titanic_data['Fare'] > upper_bound)]
print(outliers)

# Paso 5: Matriz de Correlación
correlation_matrix = titanic_data.corr()
plt.figure(figsize=(12, 8))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Matriz de Correlación')
plt.show()

Conclusión

El Análisis Exploratorio de Datos es una etapa fundamental en el análisis de datos que permite comprender mejor el conjunto de datos antes de aplicar técnicas de modelado más avanzadas. A través de estadísticas descriptivas y visualizaciones, podemos identificar patrones, relaciones y anomalías que informarán los siguientes pasos en el análisis.

© Copyright 2024. Todos los derechos reservados