Proyecto de análisis de datos sobre un dataset de e-commerce brasileño (Olist). Incluye resolución de ejercicios propuestos y métricas personalizadas, todo visualizado mediante un dashboard interactivo construido con Streamlit.
| Ejercicio | Descripción |
|---|---|
| Ejercicio 1 | Clientes únicos por estado y ciudad, con filtro por rango de fechas |
| Ejercicio 2 | Pedidos por ciudad, con porcentaje sobre el total y ratio pedidos/cliente |
| Ejercicio 3 | Análisis de retrasos en pedidos: pedidos que llegan tarde, porcentaje de pedidos retrasados, tiempo medio de retraso y autodiagnóstico |
| Ejercicio 4 | Reviews y satisfacción del cliente, separando pedidos entregados a tiempo de los cancelados |
| Métrica | Descripción |
|---|---|
| Métrica Personalizada 1 | Distribución de ventas por categoría de producto en porcentaje sobre el total, con gráfico de barras y diagrama circular |
| Métrica Personalizada 2 | Análisis de métodos de pago: usos totales y porcentaje de cada método, con gráfico de barras y diagrama circular |
Proyecto/
├── app/
│ ├── main.py # Punto de entrada de Streamlit
│ ├── exs/ # Capa lógica
│ │ ├── ex1.py ... ex4.py
│ │ ├── pers_metric_1.py
│ │ └── pers_metric_2.py
│ ├── streamlit_pages/ # Capa de presentación (UI)
│ │ ├── ex1_executable.py ... ex4_executable.py
│ │ ├── pers_metric_1_executable.py
│ │ └── pers_metric_2_executable.py
│ ├── seeders/ # Capa de datos
│ │ └── load_data.py
│ └── jupyter/ # Notebooks exploratorios
│ ├── notebook_abel.ipynb
│ └── notebook_pedro.ipynb
├── documents/
│ ├── datasets/ # CSVs del dataset
│ ├── documentation/ # Documentación por ejercicio (.md)
│ └── model/ # Modelo de datos
└── requirements.txt # Requerimientos del Proyecto
El proyecto sigue una separación clara en tres capas:
Carga los datasets CSV y los sirve en caché mediante @st.cache_data. Evita releer en disco en cada interacción del usuario.
Contiene toda la lógica de negocio y transformación de datos: filtros, merges, agrupaciones y cálculos. Cada ejercicio y métrica tiene su propio módulo. No tiene dependencias con Streamlit.
Construye el dashboard: inputs, tablas y gráficos. Llama a la capa lógica y renderiza los resultados. Toda la interacción con Streamlit ocurre aquí.
Se ha seguido un flujo dev → main mediante Pull Requests:
- Todo el desarrollo se realiza sobre la rama
dev. - Cuando una funcionalidad está completa y revisada, se abre una Pull Request de
devamain. mainsiempre refleja el estado estable del proyecto.
- Python 3.11 - 3.12
- Pandas — manipulación y análisis de datos
- NumPy — operaciones numéricas
- Streamlit — dashboard interactivo
- Matplotlib — visualizaciones personalizadas
Desde la raíz del proyecto, ejecuta los siguientes comandos:
python -m venv .venvActiva el entorno virtual:
- Windows:
.venv\Scripts\activate- Linux/Mac:
source .venv/bin/activateInstala las dependencias:
pip install -r requirements.txtUna vez instaladas las dependencias, navega a la carpeta app y lanza Streamlit:
cd app
streamlit run main.pyLa aplicación estará disponible en http://localhost:8501.
Proyecto creado por Pedro Arriero Domec y Abel González Palencia.