En este estudio de caso, aplicaremos las técnicas y métodos aprendidos a lo largo del curso para analizar un conjunto de datos de ventas. El objetivo es descubrir información útil que pueda apoyar la toma de decisiones en una empresa.
Objetivos del Estudio de Caso
- Comprender el conjunto de datos de ventas.
- Realizar una limpieza y preparación de los datos.
- Explorar los datos para identificar patrones y tendencias.
- Modelar los datos para predecir ventas futuras.
- Evaluar y validar los modelos creados.
- Comunicar los resultados de manera efectiva.
Paso 1: Comprender el Conjunto de Datos de Ventas
Descripción del Conjunto de Datos
El conjunto de datos de ventas contiene información sobre las transacciones realizadas por una empresa durante un año. Las columnas incluyen:
Fecha
: Fecha de la transacción.Producto
: Nombre del producto vendido.Cantidad
: Cantidad de unidades vendidas.Precio
: Precio por unidad.Ingresos
: Ingresos generados por la transacción.Región
: Región donde se realizó la venta.
Ejemplo de Datos
Fecha | Producto | Cantidad | Precio | Ingresos | Región |
---|---|---|---|---|---|
2023-01-01 | Producto A | 10 | 15.00 | 150.00 | Norte |
2023-01-02 | Producto B | 5 | 20.00 | 100.00 | Sur |
2023-01-03 | Producto A | 7 | 15.00 | 105.00 | Este |
2023-01-04 | Producto C | 3 | 25.00 | 75.00 | Oeste |
Paso 2: Limpieza y Preparación de los Datos
Identificación y Manejo de Datos Faltantes
Primero, identificamos si hay datos faltantes en el conjunto de datos.
import pandas as pd # Cargar el conjunto de datos df = pd.read_csv('ventas.csv') # Verificar datos faltantes print(df.isnull().sum())
Ejercicio Práctico
- Cargar el conjunto de datos de ventas.
- Identificar y manejar los datos faltantes.
Solución
# Cargar el conjunto de datos df = pd.read_csv('ventas.csv') # Identificar datos faltantes print(df.isnull().sum()) # Manejo de datos faltantes (ejemplo: eliminación de filas con datos faltantes) df = df.dropna()
Transformación y Normalización de Datos
Normalizamos los datos para asegurar que estén en un formato adecuado para el análisis.
# Convertir la columna 'Fecha' a tipo datetime df['Fecha'] = pd.to_datetime(df['Fecha']) # Normalizar los precios (ejemplo: ajustar precios a una escala común) df['Precio'] = df['Precio'] / df['Precio'].max()
Paso 3: Exploración de Datos
Análisis Exploratorio de Datos (EDA)
Realizamos un análisis exploratorio para entender mejor los datos.
import matplotlib.pyplot as plt # Resumen estadístico print(df.describe()) # Gráfico de ventas por producto df.groupby('Producto')['Ingresos'].sum().plot(kind='bar') plt.title('Ingresos por Producto') plt.xlabel('Producto') plt.ylabel('Ingresos') plt.show()
Ejercicio Práctico
- Realizar un análisis exploratorio de los datos.
- Crear gráficos para visualizar las ventas por producto y región.
Solución
# Resumen estadístico print(df.describe()) # Gráfico de ventas por producto df.groupby('Producto')['Ingresos'].sum().plot(kind='bar') plt.title('Ingresos por Producto') plt.xlabel('Producto') plt.ylabel('Ingresos') plt.show() # Gráfico de ventas por región df.groupby('Región')['Ingresos'].sum().plot(kind='bar') plt.title('Ingresos por Región') plt.xlabel('Región') plt.ylabel('Ingresos') plt.show()
Paso 4: Modelado de Datos
Regresión Lineal para Predecir Ventas Futuras
Utilizamos la regresión lineal para predecir las ventas futuras basadas en los datos históricos.
from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression # Preparar los datos X = df[['Cantidad', 'Precio']] y = df['Ingresos'] # Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo de regresión lineal model = LinearRegression() model.fit(X_train, y_train) # Predecir las ventas futuras y_pred = model.predict(X_test) # Evaluar el modelo from sklearn.metrics import mean_squared_error mse = mean_squared_error(y_test, y_pred) print(f'Error Cuadrático Medio: {mse}')
Ejercicio Práctico
- Dividir los datos en conjuntos de entrenamiento y prueba.
- Crear y entrenar un modelo de regresión lineal.
- Evaluar el modelo utilizando el error cuadrático medio.
Solución
# Dividir los datos en conjuntos de entrenamiento y prueba X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Crear el modelo de regresión lineal model = LinearRegression() model.fit(X_train, y_train) # Predecir las ventas futuras y_pred = model.predict(X_test) # Evaluar el modelo mse = mean_squared_error(y_test, y_pred) print(f'Error Cuadrático Medio: {mse}')
Paso 5: Evaluación y Validación de Modelos
Validación Cruzada
Utilizamos la validación cruzada para evaluar la robustez del modelo.
from sklearn.model_selection import cross_val_score # Validación cruzada scores = cross_val_score(model, X, y, cv=5) print(f'Puntajes de Validación Cruzada: {scores}') print(f'Promedio de Puntajes: {scores.mean()}')
Ejercicio Práctico
- Realizar validación cruzada del modelo de regresión lineal.
- Calcular y mostrar los puntajes de validación cruzada.
Solución
# Validación cruzada scores = cross_val_score(model, X, y, cv=5) print(f'Puntajes de Validación Cruzada: {scores}') print(f'Promedio de Puntajes: {scores.mean()}')
Paso 6: Comunicación de Resultados
Creación de Reportes
Creamos un reporte que resuma los hallazgos y las predicciones del modelo.
# Crear un resumen de los resultados reporte = { 'Error Cuadrático Medio': mse, 'Puntajes de Validación Cruzada': scores.tolist(), 'Promedio de Puntajes': scores.mean() } # Mostrar el reporte print(reporte)
Ejercicio Práctico
- Crear un reporte que incluya el error cuadrático medio y los puntajes de validación cruzada.
- Mostrar el reporte.
Solución
# Crear un resumen de los resultados reporte = { 'Error Cuadrático Medio': mse, 'Puntajes de Validación Cruzada': scores.tolist(), 'Promedio de Puntajes': scores.mean() } # Mostrar el reporte print(reporte)
Conclusión
En este estudio de caso, hemos aplicado técnicas de análisis de datos para comprender, limpiar, explorar, modelar y comunicar los resultados de un conjunto de datos de ventas. A través de ejercicios prácticos, hemos reforzado los conceptos aprendidos y hemos demostrado cómo estos métodos pueden ser utilizados para apoyar la toma de decisiones en una empresa.
Resumen de Conceptos Aprendidos
- Comprensión y preparación de datos.
- Análisis exploratorio y visualización de datos.
- Modelado predictivo utilizando regresión lineal.
- Evaluación y validación de modelos.
- Comunicación efectiva de resultados.
Este estudio de caso proporciona una base sólida para abordar problemas de análisis de datos en el mundo real y aplicar técnicas avanzadas en futuros proyectos.
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