Skip to content

fergardm/coffee-sales-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Estudio de ventas de café ☕

Python Streamlit pandas NumPy Plotly scikit-learn

Panel interactivo y análisis de datos para entender las ventas de una máquina de café (vending). El proyecto incluye:

  • Una aplicación en Streamlit para explorar ventas por tiempo, producto y momento del día
  • Cuadernos (notebooks) con EDA y preprocesamiento
  • Documentación de datos y decisiones analíticas

Repositorio listo para ejecutar y presentar a negocio con un lenguaje claro, didáctico y a la vez riguroso.

Contenidos del repositorio

coffe-sales-study/
├─ app/                    # App Streamlit (panel interactivo)
├─ data/                   # Datos (CSV procesado)
├─ docs/                   # Documentación (EDA, dataset)
├─ notebooks/              # Cuadernos (EDA y preprocessing)
└─ README.md               # Este archivo

App: qué muestra y cómo usarla

La app ofrece cuatro secciones principales:

  1. Explicación del dataset
  • Qué columnas incluye el CSV procesado (ventas_cafe_f.csv)
  • Qué transformaciones se aplicaron desde el dataset original
  • Vista previa de datos
  1. EDA (Análisis exploratorio)
  • KPIs: ventas totales, ingresos, ticket medio
  • Coffee Hour (pico horario), día de la semana, momento del día
  • Top de productos y café preferido por mes/día
  1. Conclusiones (enfoque vending)
  • Hallazgos numéricos (picos horarios, productos estrella)
  • Implicaciones operativas (stock, mantenimiento, pricing)
  • Próximos pasos recomendados
  1. Machine Learning (minimalista y práctico)
  • Forecasting de demanda con promedio móvil y métricas (MAE/MAPE)
  • Segmentación de productos (K-Means + PCA) con elipses y calidad (Silhouette)
  • Detección de anomalías (IQR) con explicación accesible
  • Análisis de combinaciones (correlaciones y similitudes entre cafés)

Ejecutar la app

Requisitos: Python 3.11+, virtualenv recomendado.

  1. Instala dependencias:
pip install -r docs/requirements_pip.txt
  1. Ejecuta la app desde la raíz del repo:
streamlit run app/main.py
  1. Abre el navegador en la URL que indique Streamlit.

Datos: descripción y decisiones clave

Fuente principal: data/ventas_cafe_f.csv (CSV procesado). Ver detalles en docs/raw_dataset_info.md.

Resumen del dataset original (2024):

  • 3,547 compras registradas, pagos con tarjeta, franja operativa 6:00–22:00
  • Columnas originales: Hour_of_day, Money, Coffee_name, Time_of_Day, Weekday/Month_name, Date, Time, etc.

Transformaciones aplicadas (ver notebooks/preprocessing.ipynb y notebooks/eda.ipynb):

  • Renombrado a español y tipado consistente: fecha, hora, precio
  • Variable precio convertida de rupias pakistaníes a euros
  • Derivadas temporales: hora_num, hora_cat (1..24), dia_semana, nombre_mes, momento_del_dia, año
  • Orden lógico de categorías (Lunes..Domingo; Enero..Diciembre; 1..24)
  • Normalización de nombres de café y arreglos de encoding cuando aplica
  • Reindexación de categorías para evitar huecos en gráficos (visualización fiel)
  • Validaciones de rango (horas y precios)

Principales hallazgos del EDA (ver docs/eda.md):

  • Coffee Hour definida (picos claros a media mañana y media tarde)
  • Top productos concentrando gran parte de las ventas
  • Patrones semanales estables (días laborables vs fin de semana)
  • Estacionalidad mensual con meses pico y valle
  • Ticket medio estable con baja dispersión

Notebooks: guía rápida

  • notebooks/preprocessing.ipynb: limpieza, tipado, derivadas temporales, estandarización de categorías y preparación de ventas_cafe_f.csv.
  • notebooks/eda.ipynb: análisis exploratorio, KPIs, hallazgos y blueprint visual reutilizado en la app.

Consejo: ejecuta los notebooks para reproducir el pipeline y validar los supuestos.

Estructura técnica

  • App Streamlit: app/main.py (secciones, filtros, métricas) y app/components/* (gráficos y KPIs)
  • Utilidades: app/utils/data.py (carga/filtrado) y app/utils/colors.py (paleta y órdenes)
  • Datos: data/ventas_cafe_f.csv
  • Documentación: docs/eda.md y docs/raw_dataset_info.md

Preguntas frecuentes (FAQ)

  • ¿Por qué hora_cat es 1..24 si la franja operativa es 6–22? Para mantener ejes consistentes y comparar periodos, aunque los datos reales se concentran en horas operativas.

  • ¿Por qué se ven celdas en blanco en matrices de correlación/similitud? La diagonal (comparación consigo mismo) se oculta intencionadamente para centrar la lectura en relaciones útiles.

Licencia

MIT. Ver LICENSE.

About

Proyecto final del Módulo 1 del curso de Análisis de Datos e IA (impartido por UpgradeHub)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors