Este proyecto implementa un pipeline completo de datos, desde el análisis exploratorio (EDA), pasando por un proceso de ETL, hasta la exposición de los datos mediante una API REST desarrollada con FastAPI.
Se procesan datasets de distintas plataformas de streaming (CSV y JSON), se aplican procesos de limpieza, normalización y consolidación, y el dataset resultante es expuesto mediante endpoints de solo lectura (GET).
-
EDA (Exploratory Data Analysis)
Análisis exploratorio de los datasets originales para detectar inconsistencias, valores faltantes y definir reglas de normalización. -
ETL (Extract, Transform, Load)
- Extract: lectura de datos desde archivos CSV/JSON
- Transform: limpieza, normalización de categorías y unificación de formatos
- Load: generación de un dataset consolidado en CSV
-
API REST
La API carga el dataset procesado una única vez en memoria y expone endpoints para consultas analíticas.
- Lenguaje: Python
- Procesamiento de datos: pandas, numpy
- API: FastAPI
- Contenerización: Docker
- Almacenamiento: Archivos CSV y JSON
app/
├── main.py # API FastAPI (endpoints GET)
Datos/
├── archivos/ # Datasets originales (raw)
└── procesados/
└── df_procesado.csv # Dataset final generado por el ETL
ETL/
├── extraer.py # Extracción de datos
├── transformar.py # Transformaciones y normalización
├── cargar.py # Carga del dataset final
├── etl.py # Orquestador del proceso ETL
└── EDA.ipynb # Análisis exploratorio de datos
Dockerfile
requirements.txt
README.md
Desde la raíz del proyecto:
python ETL/etl.pyEste proceso genera el archivo:
Datos/procesados/df_procesado.csv
uvicorn app.main:app --reloadPara detener el programa ctrl + C.
- Tener Docker instalado
- Estar ubicado en la raíz del proyecto (donde está el
Dockerfile)
Construir la imagen
docker build -t fastapi-app .Ejecutar el contenedor
docker run -p 8000:80 --name api-peliculas fastapi-appPara detener el programa ctrl + C.
Detener el contenedor
docker stop api-peliculasEliminar el contenedor
docker rm -f api-peliculasAbrir en el navegador
http://localhost:8000Documentación interactiva
http://localhost:8000/docs| Endpoint | Descripción |
|---|---|
/get_max_duration |
Título con mayor duración según año, plataforma y tipo |
/get_count_platform |
Cantidad de títulos por plataforma |
/get_listedin |
Plataforma con más títulos de un género |
/get_actor |
Actor más frecuente por plataforma y año |
- API de solo lectura (GET)
- Dataset cargado una sola vez en memoria
- Separación clara entre EDA, ETL y API
- Diseño simple y reproducible, preparado para escalar a base de datos si el volumen lo requiere
El proyecto prioriza claridad, buenas prácticas y separación de responsabilidades, evitando complejidad innecesaria dada la escala del dataset y el tipo de consultas.
