← Selected work
Team project · Spring 2026 3 min read

Spotify Music Graph Analysis

Transforming music records into a Neo4j graph to explore relationships among tracks, artists, albums, and genres.

Python · Neo4j · Cypher
On this page
Cypher query tasks
7
runtime trials per query
10
entity types
4

My contribution

I carried out the majority of the project work: preparing data in Python, organizing track, artist, album, and genre records for Neo4j, designing PERFORMED_BY, BELONGS_TO, and HAS_GENRE relationships, and analyzing the graph through seven Cypher query tasks.

Queries and evidence

Queries explored popular tracks, title keywords, specific artists, upbeat/happy tracks, average popularity by genre, and top-genre counts. Repeating each query ten times documented runtime under the project setup.

The question

How can a graph model make relationships in music data easier to explore than a flat table?

From records to relationships

Duplicate track IDs and multiple artists in one field required preparation before import. Tracks, artists, albums, and genres became separate entities connected by PERFORMED_BY, BELONGS_TO, and HAS_GENRE relationships.

Inspect a documented Cypher query
MATCH (t:Track)-[:HAS_GENRE]->(g:Genre)
RETURN g.name AS genre_name,
       AVG(t.popularity) AS avg_popularity
ORDER BY avg_popularity DESC;

Task 6, transcribed from the original presentation and preserved in the public query file. This example groups track popularity by linked genre; it does not measure listening demand.

Documentation and limits

The repository preserves the original presentation and Cypher queries transcribed from screenshots. The original Python scripts and CSV files are unavailable, so it documents the workflow rather than providing a complete reproducible pipeline. Runtime measurements are not a SQL comparison or a production-scale benchmark.

Analysis workflow

View the three steps
  1. Prepare Handle duplicate track IDs and split records with multiple artists.
  2. Model Organize four entity types and define their relationships in Neo4j.
  3. Query Explore seven query tasks and document repeated runtime trials.

Why this work matters

Data & operations analytics

Cleaning identifiers, splitting multi-value fields, and defining entity relationships are transferable to operational datasets. These methods help analysts avoid duplicated entities and inconsistent relationships in operational reporting.

Materials

Keep exploring

More work

Higher Education Outcomes Analysis Global Beauty Spending Analysis Coca-Cola & Pepsi: Stock Price and Public Sentiment