Este proyecto realiza un proceso completo de ETL (Extract, Transform, Load) sobre el ecosistema musical de Spotify. El objetivo es analizar cómo métricas técnicas (BPM, Energía, Valencia) definen el éxito global de artistas como The Weeknd, transformando datos planos de Kaggle en una base de datos relacional optimizada.
El corazón de este análisis es la normalización de datos. Hemos convertido un archivo .csv desordenado en un Modelo de Estrella, permitiendo consultas complejas que un archivo Excel no podría manejar eficientemente.
- Extracción: Ingesta del dataset original (Top 50 canciones por país).
- Transformación (Pandas):
- Limpieza de columnas irrelevantes (
Unnamed: 0). - Identificación de entidades únicas: Artistas, Géneros y Países.
- Creación de IDs autoincrementales para normalización (1NF, 2NF, 3NF).
- Limpieza de columnas irrelevantes (
- Carga (SQLAlchemy): Automatización del volcado de datos desde DataFrames de Python hacia MySQL/PostgreSQL.
- Análisis SQL: Extracción de insights sobre la intensidad emocional de la música actual.
- Python (Pandas): Limpieza y lógica de transformación.
- SQLAlchemy: El puente entre la lógica de objetos y la base de datos.
- MySQL/PostgreSQL: Motor de base de datos relacional.
- Kaggle API: Origen de los datos.
El diseño se basa en una tabla de hechos central conectada a tablas de dimensiones para evitar la redundancia:
-
artist: Maestro de intérpretes. -
genre: Categorización musical. -
country: Localización geográfica (incluye la categoría 'World' para tendencias globales). -
top50_country: Tabla de hechos con métricas clave ($bpm$ ,$nrgy$ ,$dnce$ ,$val$ ).
Para entender el análisis, es vital conocer qué miden los algoritmos:
| Variable | Definición | Rango |
|---|---|---|
| BPM | Tempo/Velocidad de la canción. | 60 - 200+ |
| Energy (nrgy) | Intensidad, actividad y ruido percibido. | 0 - 100 |
| Valence (val) | Positividad emocional (Baja = Triste/Enfadado). | 0 - 100 |
| Danceability | Qué tan apta es la canción para bailar. | 0 - 100 |
Buscamos artistas que dominan el cuadrante de Alta Energía (
Analizando específicamente a Abel Tesfaye, filtramos sus canciones que cumplen con este perfil de "Toxicidad Energética":
- Canciones detectadas: Blinding Lights, Heartless.
- Alcance Global: Estas canciones no solo son éxitos aislados, aparecen en el Top 50 de múltiples países simultáneamente, demostrando que la "tristeza bailable" es un producto de exportación global.
¿Qué géneros dominan el mundo cuando eliminamos las fronteras nacionales?
-
Clona el repositorio: git clone https://github.com/tu-usuario/tu-repositorio.git
-
Instala dependencias: pip install pandas sqlalchemy pymysql cryptography
-
Configura tus credenciales en el archivo config.py.
-
Ejecuta el notebook de Jupyter para iniciar el proceso ETL.
-
Abre tu gestor SQL preferido y carga las queries de la carpeta /queries.
-
link presentación: https://www.canva.com/design/DAHIVLP2G-k/Wx-ngwOS_HPiT-a_ypn_yw/edit