Dashboard web interactivo para analizar el dataset de libros más vendidos de Amazon (2009–2023), construido con Flask + pandas en el backend y Plotly.js en el frontend.
Abre el dashboard en tu navegador tras seguir los pasos de instalación.
- Cards con métricas clave (total de títulos, autor más frecuente, precio medio, valoración media)
- Filtros por género y año que actualizan todos los gráficos en tiempo real
- 7 visualizaciones interactivas:
- Barras horizontales: top 10 autores más frecuentes
- Donut: distribución Fiction vs Non Fiction
- Barras agrupadas: precio y valoración media por género
- Scatter: precio vs valoración (tamaño = reseñas, color = género)
- Líneas dual-eje: evolución anual de precio y valoración
- Barras: top 10 libros con más reseñas
- Heatmap: correlación entre Precio, Reseñas y Valoración
- Tabla de bestsellers que aparecen en varios años
| Capa | Tecnología |
|---|---|
| Backend | Python 3 · Flask · pandas |
| API | Flask-CORS · REST JSON |
| Frontend | HTML5 · CSS3 · JavaScript vanilla |
| Gráficos | Plotly.js (CDN) |
git clone <repo-url>
cd bestsellers_analistcd backend
pip install -r requirements.txtDescarga el dataset original de Kaggle: Amazon Top 50 Bestselling Books 2009-2019
Copia el CSV a backend/data/bestsellers_with_categories.csv.
El proyecto incluye un CSV de muestra con ~170 registros que funciona de inmediato.
# desde la carpeta backend/
python app.pyEl servidor arranca en http://localhost:5000
Abre frontend/index.html directamente en el navegador, o usa la extensión Live Server de VS Code.
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/summary |
Métricas generales (cards) |
| GET | /api/top-authors |
Top 10 autores más frecuentes |
| GET | /api/genre-distribution |
Distribución por género |
| GET | /api/avg-price-genre |
Precio medio por género |
| GET | /api/avg-rating-genre |
Valoración media por género |
| GET | /api/correlation |
Correlación Precio/Reseñas/Rating |
| GET | /api/repeated-bestsellers |
Libros en varios años |
| GET | /api/top-rated |
Top 10 mejor valorados |
| GET | /api/most-reviewed |
Top 10 con más reseñas |
| GET | /api/yearly-trend |
Evolución anual |
| GET | /api/scatter |
Datos para el scatter plot |
| GET | /api/data?genre=X&year=Y |
Dataset filtrado (todos los análisis) |
bestsellers_analist/
├── backend/
│ ├── app.py ← Servidor Flask (API REST)
│ ├── analysis.py ← Funciones de análisis con pandas
│ ├── requirements.txt
│ └── data/
│ └── bestsellers_with_categories.csv
├── frontend/
│ ├── index.html ← Dashboard
│ ├── style.css ← Estilos responsive (tema oscuro)
│ └── script.js ← Lógica + gráficos Plotly.js
├── .gitignore
└── README.md