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
- Comprender la Distribución de los Datos: Identificar cómo se distribuyen los datos y detectar cualquier sesgo.
- Identificar Relaciones entre Variables: Descubrir correlaciones y relaciones entre diferentes variables.
- Detectar Valores Atípicos: Encontrar y manejar valores que se desvían significativamente del resto de los datos.
- Validar Suposiciones: Confirmar o refutar suposiciones iniciales sobre los datos.
- 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
- Carga el conjunto de datos
titanic.csv
. - Realiza un análisis exploratorio de datos siguiendo los pasos mencionados anteriormente.
- Identifica y visualiza la distribución de la variable
Age
. - Encuentra y maneja los valores atípicos en la variable
Fare
. - 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.
Curso de Análisis de Datos
Módulo 1: Introducción al Análisis de Datos
- Conceptos Básicos de Análisis de Datos
- Importancia del Análisis de Datos en la Toma de Decisiones
- Herramientas y Software Comúnmente Utilizados
Módulo 2: Recolección y Preparación de Datos
- Fuentes de Datos y Métodos de Recolección
- Limpieza de Datos: Identificación y Manejo de Datos Faltantes
- Transformación y Normalización de Datos
Módulo 3: Exploración de Datos
- Análisis Exploratorio de Datos (EDA)
- Visualización de Datos: Gráficos y Tablas
- Detección de Patrones y Tendencias
Módulo 4: Modelado de Datos
- Introducción a los Modelos Estadísticos
- Regresión Lineal y Logística
- Árboles de Decisión y Bosques Aleatorios
Módulo 5: Evaluación y Validación de Modelos
- Métricas de Evaluación de Modelos
- Validación Cruzada y Técnicas de Validación
- Ajuste y Optimización de Modelos
Módulo 6: Implementación y Comunicación de Resultados
- Implementación de Modelos en Producción
- Comunicación de Resultados a Partes Interesadas
- Documentación y Reportes