Generating a Spotify Playlist
Home Page - Data Preparation - Data Exploration - Dimensionality Reduction - Clustering Techniques - Playlist Generation - Conclusion - Authors’ Gift
Generating a Cold-Start Playlist
After dimension reductionality and testing multiple different clustering mechanisms, we move to the challenge of generating and assessing our own playlist from a small selection of seed songs.
We focused on using continuous features of each song (tempo, danceability, etc.) passed through dimensionality reduction and grouped using K-Means relative clustering. After arriving at a set of workable clusters for song selection, we then seed our generated playlist with a handful of manually selected songs. Our algorithm will take each seed song, identify the cluster that it belongs to and select a song from that cluster using a representative derived distance metric. It will repeat this until the desired song count has been reached.
Overview of playlist generation model:
-
Using an autoencoder, we reduce dimensionality of song characteristics (tempo, valence, etc.).
-
Using K-Means, we find clusters of songs based on the salient patterns identified by the autoencoder.
-
Given a set seed songs, we identify the clusters to build playlist from.
-
We find pairwise cosine distances between seed songs and every other song in the cluster.
-
Finally, we generate the playlist with songs that are most similar (least cosine distance) to the seed songs.
Key notes:
-
We did not use any artist or album information in the final model. Our model generated clusters solely based on song characteristics we pulled from the Spotify API.
-
We defined similarity of songs as the co-occurance of songs in the original playlists in our dataset. We assume that these original playlists have songs that belong together as identified by Spotify users.
-
We are able to generate pairwise coside distances across the whole cluster without high computational cost because we were able to create the sparse matrix. Each row in the sparse matrix represents a song, each column represents a playlist, and each value is a binary whether the given song (row) occurs in the given playlist (column).
-
The values that we clustered on are outputs from the autoencoder. The magnitude of these are difficult to interpret and as such as do not have much meaning. As such, we chose to use cosine distances rather than Euclidean distances.
Our first generated playlist
In order to test our playlist, we wanted to see, when provided with a few seed songs from a specific existing playlist, whether our generation algorithm would produce a playlist close to the seed playlist. From our generation algorithm, we then produced the below playlist (10 random songs shown out of 100).
| artist_name | artist_uri | track_name | album_uri | duration_ms | album_name | count | track_uri | danceability | energy | ... | instrumentalness | liveness | valence | tempo | time_signature | artist_genres | artist_popularity | album_genres | album_popularity | album_release_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| song_id | |||||||||||||||||||||
| 125250 | Rachael Yamagata | spotify:artist:7w0qj2HiAPIeUcoPogvOZ6 | Elephants | spotify:album:6KzK9fDNmj7GHFbcE4gVJD | 253701 | Elephants...Teeth Sinking Into Heart | 14 | spotify:track:0y4TKcc7p2H6P0GJlt01EI | 0.312 | 0.207 | ... | 0.008180 | 0.0773 | 0.2780 | 93.778 | 4 | ['acoustic pop', 'folk-pop', 'lilith'] | 52 | [] | 40 | 2008-10-06 |
| 787744 | Glee Cast | spotify:artist:0SCbttzoZTnLFebDYmAWCm | Somewhere Only We Know (Glee Cast Version) | spotify:album:6WlzaRoDShdgVgaqJRjyNH | 184653 | Glee: The Music, The Complete Season Two | 86 | spotify:track:66mmvchQ4C3LnPzq4DiAI3 | 0.493 | 0.552 | ... | 0.000000 | 0.0969 | 0.3060 | 85.973 | 4 | ['glee club', 'hollywood', 'post-teen pop'] | 80 | [] | 49 | 2010 |
| 340039 | Sleeping At Last | spotify:artist:0MeLMJJcouYXCymQSHPn8g | Chasing Cars | spotify:album:0UIIvTTWNB3gRQWFoxoEDh | 242564 | Covers, Vol. 2 | 401 | spotify:track:2d7LPtieXdIYzf7yHPooWd | 0.467 | 0.157 | ... | 0.000001 | 0.0816 | 0.2770 | 108.130 | 4 | ['ambient worship', 'dreamo', 'folk-pop', 'pop'] | 75 | [] | 67 | 2016-11-04 |
| 603984 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Close To You | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 223226 | ANTI | 500 | spotify:track:4gFxywaJejXWxo0NjlWzgg | 0.494 | 0.170 | ... | 0.000000 | 0.1390 | 0.1450 | 80.098 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 461894 | Mayday Parade | spotify:artist:3WfJ1OtrWI7RViX9DMyEGy | Terrible Things | spotify:album:4eVvdwd6AC7nh9TvJD9XyT | 238076 | Valdosta EP | 339 | spotify:track:3ZjnFYlal0fXN6t61wdxhl | 0.285 | 0.371 | ... | 0.003920 | 0.1040 | 0.3720 | 154.989 | 3 | ['emo', 'neon pop punk', 'pop emo', 'pop punk'] | 68 | [] | 53 | 2009-10-06 |
| 653897 | The Cinematic Orchestra | spotify:artist:32ogthv0BdaSMPml02X9YB | To Build A Home | spotify:album:5cPHT4yMCfETLRYAoBFcOZ | 371320 | Ma Fleur | 1593 | spotify:track:54KFQB6N4pn926IUUYZGzK | 0.264 | 0.122 | ... | 0.349000 | 0.0940 | 0.0735 | 148.658 | 4 | ['acid jazz', 'chamber pop', 'downtempo', 'ele... | 65 | [] | 63 | 2007-05-07 |
| 834653 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Never Ending | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 202506 | ANTI | 277 | spotify:track:6TTtJwtPEAI7yPHKR3XEKE | 0.530 | 0.391 | ... | 0.000070 | 0.1870 | 0.5210 | 82.215 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 180192 | Mayday Parade | spotify:artist:3WfJ1OtrWI7RViX9DMyEGy | Miserable At Best | spotify:album:0UtenXp3qVbWedKEaNRAp9 | 316986 | A Lesson In Romantics | 619 | spotify:track:1ONoPkp5XIuw3tZ1GzrNKZ | 0.464 | 0.362 | ... | 0.000000 | 0.1110 | 0.4160 | 135.255 | 4 | ['emo', 'neon pop punk', 'pop emo', 'pop punk'] | 68 | [] | 63 | 2007-07-10 |
| 994457 | Mayday Parade | spotify:artist:3WfJ1OtrWI7RViX9DMyEGy | Your Song | spotify:album:4eVvdwd6AC7nh9TvJD9XyT | 249338 | Valdosta EP | 41 | spotify:track:7va0FN5Fim1dNPi06sqxVx | 0.422 | 0.459 | ... | 0.003380 | 0.0820 | 0.2270 | 144.895 | 4 | ['emo', 'neon pop punk', 'pop emo', 'pop punk'] | 68 | [] | 53 | 2009-10-06 |
| 468524 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | James Joint | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 72080 | ANTI | 207 | spotify:track:3cuGpP8vUSC1aq8tjD3J2c | 0.399 | 0.203 | ... | 0.000163 | 0.2700 | 0.4050 | 134.202 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
10 rows × 25 columns
Manually reviewing 10 songs from our generated playlist shows artist overlap for Rihanna and Mayday Parade, indicating that our clustering algorithm is actually identifying the same artist extremely well from just 5 musical features! To further assess the clustering of the whole playlist, we charted our generated playlist in t-SNE space.

Our t-SNE graph shows the seed songs that were selected from the manually-curated playlist as the largest bubbles. All songs in the original manual playlist are highlighted in gold. Our generated songs that were not in the original playlist are colored according to the cluster that our algorithm assigns them to. For our generated playlist, we see that a fifth of songs overlap with the original seed playlist but beyond that we have fairly solid generated results within three clusters, all of which are approximately similar in t-SNE space location as well.
Combined with our manual review of the generated songs, we can develop some confidence that our algorithm is producing the start of a thematically similar generated playlist!
Our algorithm clustered together Rihanna even though we did not provide any artist / album information. Furthermore, other Rihanna songs were identified as “similar” songs and added to the generated playlist.
We tried this on several randomly selected playlists and saw some encouraging results, including several examples where generated songs had a majority overlap with the original seed playlist. We’ve included one such example below. Though this example has a greater number of non-overlap clusters than our first, it also shows that the majority of songs overlapped between the generated and seed playlists.
One area of further study we would like to pursue would be researching the balance between overlap percentage and cluster proliferation to understand if our generation algorithm sees an exclusive or dependent relationship between these two optimizations.

Visual analysis of our cold-start generated playlists showed encouraging results but we wanted to layer on a more quantitative measure of success as well. To do this, we continue to rely on the assumption that manually-curated playlists can be considered “high quality” due to the understanding that someone spent the time and effort to put songs that they wanted to listen to together.
Given that assumption, we can use a derived distance calculation between a generated playlist and the library of manually-curated playlists to assess absolute or relative quality. We posit that if an algorithmically generated playlist has a low distance to a manually curated playlist, regardless of starting seed songs, then it can be considered a well-generated playlist. This distance metric is especially true when calculating the absolute quality between a generated playlist and a playlist it is specifically seeded from, such as in our earlier examples.
One critical design choice we made is that of setting a minimum threshold of song count for playlist inclusion. Because a manual playlist with few songs is likelier, by the fact that it has only a few datapoints, to appear a match or measure a low distance to a generated playlist, it represents an unfair comparison of success.
We present another randomly selected playlist as an example of our distance quality metric.

Calculate distance to human-created playlists and manually inspect the closest-matching
array([0.71711053, 0.73299937, 0.76201676, 0.7628821 , 0.76480988])
Our closest playlists calculations provide us scores for the five nearest playlists of between 0.717 and 0.765, a coefficient estimate that we can use to compare playlists overall and between each other. To conclude, we manually review songs in each playlist to see if our distance coefficient holds up.
Generated playlist
| artist_name | artist_uri | track_name | album_uri | duration_ms | album_name | count | track_uri | danceability | energy | ... | instrumentalness | liveness | valence | tempo | time_signature | artist_genres | artist_popularity | album_genres | album_popularity | album_release_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| song_id | |||||||||||||||||||||
| 125250 | Rachael Yamagata | spotify:artist:7w0qj2HiAPIeUcoPogvOZ6 | Elephants | spotify:album:6KzK9fDNmj7GHFbcE4gVJD | 253701 | Elephants...Teeth Sinking Into Heart | 14 | spotify:track:0y4TKcc7p2H6P0GJlt01EI | 0.312 | 0.2070 | ... | 0.008180 | 0.0773 | 0.278 | 93.778 | 4 | ['acoustic pop', 'folk-pop', 'lilith'] | 52 | [] | 40 | 2008-10-06 |
| 787744 | Glee Cast | spotify:artist:0SCbttzoZTnLFebDYmAWCm | Somewhere Only We Know (Glee Cast Version) | spotify:album:6WlzaRoDShdgVgaqJRjyNH | 184653 | Glee: The Music, The Complete Season Two | 86 | spotify:track:66mmvchQ4C3LnPzq4DiAI3 | 0.493 | 0.5520 | ... | 0.000000 | 0.0969 | 0.306 | 85.973 | 4 | ['glee club', 'hollywood', 'post-teen pop'] | 80 | [] | 49 | 2010 |
| 340039 | Sleeping At Last | spotify:artist:0MeLMJJcouYXCymQSHPn8g | Chasing Cars | spotify:album:0UIIvTTWNB3gRQWFoxoEDh | 242564 | Covers, Vol. 2 | 401 | spotify:track:2d7LPtieXdIYzf7yHPooWd | 0.467 | 0.1570 | ... | 0.000001 | 0.0816 | 0.277 | 108.130 | 4 | ['ambient worship', 'dreamo', 'folk-pop', 'pop'] | 75 | [] | 67 | 2016-11-04 |
| 603984 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Close To You | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 223226 | ANTI | 500 | spotify:track:4gFxywaJejXWxo0NjlWzgg | 0.494 | 0.1700 | ... | 0.000000 | 0.1390 | 0.145 | 80.098 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 461894 | Mayday Parade | spotify:artist:3WfJ1OtrWI7RViX9DMyEGy | Terrible Things | spotify:album:4eVvdwd6AC7nh9TvJD9XyT | 238076 | Valdosta EP | 339 | spotify:track:3ZjnFYlal0fXN6t61wdxhl | 0.285 | 0.3710 | ... | 0.003920 | 0.1040 | 0.372 | 154.989 | 3 | ['emo', 'neon pop punk', 'pop emo', 'pop punk'] | 68 | [] | 53 | 2009-10-06 |
| 834653 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Never Ending | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 202506 | ANTI | 277 | spotify:track:6TTtJwtPEAI7yPHKR3XEKE | 0.530 | 0.3910 | ... | 0.000070 | 0.1870 | 0.521 | 82.215 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 772125 | Sleeping At Last | spotify:artist:0MeLMJJcouYXCymQSHPn8g | Already Gone | spotify:album:0UIIvTTWNB3gRQWFoxoEDh | 243007 | Covers, Vol. 2 | 253 | spotify:track:5zCunX8URvLoBHlg1Fnjv6 | 0.418 | 0.2480 | ... | 0.000004 | 0.1080 | 0.298 | 130.953 | 4 | ['ambient worship', 'dreamo', 'folk-pop', 'pop'] | 75 | [] | 67 | 2016-11-04 |
| 521562 | Stars | spotify:artist:2EO56JK4txid1Pss9GVbOL | Personal | spotify:album:4I9BDOOxpLw2ClFDRhTJaN | 247173 | In Our Bedroom After The War | 17 | spotify:track:42MSqGOJ5o2VQgC01Zlcd5 | 0.580 | 0.1800 | ... | 0.037000 | 0.2310 | 0.137 | 129.805 | 4 | ['canadian indie', 'canadian pop', 'chamber po... | 50 | [] | 38 | 2007-09-25 |
| 195814 | Glee Cast | spotify:artist:0SCbttzoZTnLFebDYmAWCm | Fix You (Glee Cast Version) | spotify:album:082BH67sSIDefLxUp8GgNm | 274760 | Glee: The Music, The Complete Season Three | 23 | spotify:track:1VzkNDKMsnkVf3nV6Ki5GW | 0.438 | 0.4070 | ... | 0.000011 | 0.1160 | 0.275 | 133.970 | 4 | ['glee club', 'hollywood', 'post-teen pop'] | 80 | [] | 47 | 2011 |
| 468524 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | James Joint | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 72080 | ANTI | 207 | spotify:track:3cuGpP8vUSC1aq8tjD3J2c | 0.399 | 0.2030 | ... | 0.000163 | 0.2700 | 0.405 | 134.202 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 541794 | A Fine Frenzy | spotify:artist:5dTYaRzOn4rXGBLH052EeQ | Riversong | spotify:album:0jW4xokRXUFjI2lQEiYW5j | 466367 | PINES | 5 | spotify:track:4C7BYd7U3FXXXy1hlvN9jg | 0.303 | 0.0714 | ... | 0.000036 | 0.0995 | 0.116 | 104.512 | 4 | ['acoustic pop', 'folk-pop', 'lilith', 'neo me... | 52 | [] | 14 | 2012-01-01 |
| 460009 | Camille | spotify:artist:0gOsZcHl7H3ewXVIEnWFZX | Pour que l'amour me quitte | spotify:album:1AY69raETX2k8Y2zCfIhuI | 166720 | Le fil | 5 | spotify:track:3YqUUxjoYCErSxCWxBMslJ | 0.408 | 0.2010 | ... | 0.124000 | 0.1090 | 0.191 | 145.616 | 4 | ['chanson', 'french indie pop', 'french rock'] | 56 | [] | 2 | 2005-02-14 |
12 rows × 25 columns
Closest matching
| artist_name | artist_uri | track_name | album_uri | duration_ms | album_name | count | track_uri | danceability | energy | ... | instrumentalness | liveness | valence | tempo | time_signature | artist_genres | artist_popularity | album_genres | album_popularity | album_release_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| song_id | |||||||||||||||||||||
| 125250 | Rachael Yamagata | spotify:artist:7w0qj2HiAPIeUcoPogvOZ6 | Elephants | spotify:album:6KzK9fDNmj7GHFbcE4gVJD | 253701 | Elephants...Teeth Sinking Into Heart | 14 | spotify:track:0y4TKcc7p2H6P0GJlt01EI | 0.312 | 0.2070 | ... | 0.008180 | 0.0773 | 0.2780 | 93.778 | 4 | ['acoustic pop', 'folk-pop', 'lilith'] | 52 | [] | 40 | 2008-10-06 |
| 787744 | Glee Cast | spotify:artist:0SCbttzoZTnLFebDYmAWCm | Somewhere Only We Know (Glee Cast Version) | spotify:album:6WlzaRoDShdgVgaqJRjyNH | 184653 | Glee: The Music, The Complete Season Two | 86 | spotify:track:66mmvchQ4C3LnPzq4DiAI3 | 0.493 | 0.5520 | ... | 0.000000 | 0.0969 | 0.3060 | 85.973 | 4 | ['glee club', 'hollywood', 'post-teen pop'] | 80 | [] | 49 | 2010 |
| 340039 | Sleeping At Last | spotify:artist:0MeLMJJcouYXCymQSHPn8g | Chasing Cars | spotify:album:0UIIvTTWNB3gRQWFoxoEDh | 242564 | Covers, Vol. 2 | 401 | spotify:track:2d7LPtieXdIYzf7yHPooWd | 0.467 | 0.1570 | ... | 0.000001 | 0.0816 | 0.2770 | 108.130 | 4 | ['ambient worship', 'dreamo', 'folk-pop', 'pop'] | 75 | [] | 67 | 2016-11-04 |
| 603984 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Close To You | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 223226 | ANTI | 500 | spotify:track:4gFxywaJejXWxo0NjlWzgg | 0.494 | 0.1700 | ... | 0.000000 | 0.1390 | 0.1450 | 80.098 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 461894 | Mayday Parade | spotify:artist:3WfJ1OtrWI7RViX9DMyEGy | Terrible Things | spotify:album:4eVvdwd6AC7nh9TvJD9XyT | 238076 | Valdosta EP | 339 | spotify:track:3ZjnFYlal0fXN6t61wdxhl | 0.285 | 0.3710 | ... | 0.003920 | 0.1040 | 0.3720 | 154.989 | 3 | ['emo', 'neon pop punk', 'pop emo', 'pop punk'] | 68 | [] | 53 | 2009-10-06 |
| 653897 | The Cinematic Orchestra | spotify:artist:32ogthv0BdaSMPml02X9YB | To Build A Home | spotify:album:5cPHT4yMCfETLRYAoBFcOZ | 371320 | Ma Fleur | 1593 | spotify:track:54KFQB6N4pn926IUUYZGzK | 0.264 | 0.1220 | ... | 0.349000 | 0.0940 | 0.0735 | 148.658 | 4 | ['acid jazz', 'chamber pop', 'downtempo', 'ele... | 65 | [] | 63 | 2007-05-07 |
| 881533 | The Cinematic Orchestra | spotify:artist:32ogthv0BdaSMPml02X9YB | That Home | spotify:album:5cPHT4yMCfETLRYAoBFcOZ | 103920 | Ma Fleur | 121 | spotify:track:6q4c1vPRZREh7nw3wG7Ixz | 0.412 | 0.1590 | ... | 0.772000 | 0.0830 | 0.0389 | 85.462 | 4 | ['acid jazz', 'chamber pop', 'downtempo', 'ele... | 65 | [] | 63 | 2007-05-07 |
| 894661 | Shawn Mendes | spotify:artist:7n2wHs1TKAczGzO7Dd2rGr | Never Be Alone | spotify:album:5wKylB0Zwnxz046O7po25D | 215813 | Handwritten | 626 | spotify:track:6wQSrFnJYm3evLsavFeCVT | 0.376 | 0.4660 | ... | 0.000058 | 0.0781 | 0.2760 | 199.835 | 4 | ['canadian pop', 'pop', 'post-teen pop', 'vira... | 93 | [] | 18 | 2015-04-13 |
| 810569 | Josef Salvat | spotify:artist:64PJHZDQTPPVBCdwnv22Wz | Diamonds | spotify:album:1excMWyBjh9UJqk2xYZ7o0 | 247600 | Night Swim | 44 | spotify:track:6Hki3HcbeU2c4T72lJjyZ5 | 0.462 | 0.3720 | ... | 0.000452 | 0.1020 | 0.2760 | 169.931 | 4 | ['gauze pop'] | 53 | [] | 35 | 2015-10-23 |
| 49614 | Leon Bridges | spotify:artist:3qnGvpP8Yth1AqSBMqON5x | River | spotify:album:4svLfrPPk2npPVuI4kXPYg | 238560 | Coming Home | 989 | spotify:track:0NeJjNlprGfZpeX2LQuN6c | 0.658 | 0.1790 | ... | 0.000000 | 0.1700 | 0.1910 | 128.128 | 4 | ['modern blues', 'soul'] | 75 | [] | 70 | 2015-06-15 |
| 776037 | nilu | spotify:artist:1XplrA4Q9dPFcayYbJqX6K | How to Save a Life | spotify:album:3JymwO9er7CrAoJULoogfq | 262500 | How to Save a Life | 59 | spotify:track:617EQMgzYFe2THz093j68m | 0.366 | 0.0709 | ... | 0.000000 | 0.0936 | 0.1550 | 94.502 | 4 | [] | 44 | [] | 34 | 2015-05-11 |
| 356319 | Ryan Amador | spotify:artist:1ihU4zSTmY0qQXhx8jEXWT | Instead | spotify:album:1t1kSv0ySypwFXKgyocRRk | 355529 | Ryan Amador | 117 | spotify:track:2kuFVY6hWX6yavTiWHE3SQ | 0.365 | 0.2600 | ... | 0.000000 | 0.1010 | 0.2340 | 161.637 | 3 | [] | 37 | [] | 39 | 2013-06-28 |
12 rows × 25 columns
2nd closest matching
| artist_name | artist_uri | track_name | album_uri | duration_ms | album_name | count | track_uri | danceability | energy | ... | instrumentalness | liveness | valence | tempo | time_signature | artist_genres | artist_popularity | album_genres | album_popularity | album_release_date | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| song_id | |||||||||||||||||||||
| 8489 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Same Ol’ Mistakes | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 397093 | ANTI | 433 | spotify:track:046irIGshCqu24AjmEWZtr | 0.440 | 0.803 | ... | 0.002820 | 0.0591 | 0.5010 | 151.777 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 68416 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Consideration | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 161066 | ANTI | 692 | spotify:track:0WgBb7XgdtbUW0GlYel9mH | 0.883 | 0.584 | ... | 0.000004 | 0.0869 | 0.7840 | 144.975 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 191443 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Needed Me | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 191600 | ANTI | 5369 | spotify:track:1Tt4sE4pXi57mTD1GCzsqm | 0.671 | 0.314 | ... | 0.000000 | 0.0825 | 0.2960 | 110.898 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 199776 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Higher | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 120626 | ANTI | 590 | spotify:track:1XrrzhGLErbkiwH5v3xww9 | 0.292 | 0.567 | ... | 0.000001 | 0.1190 | 0.3920 | 153.199 | 3 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 310316 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Woo | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 235586 | ANTI | 260 | spotify:track:2OvftP4F7VMMTdfyUx883s | 0.420 | 0.466 | ... | 0.003890 | 0.2980 | 0.1850 | 115.004 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 335121 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Love On The Brain | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 224000 | ANTI | 3073 | spotify:track:2aksifNn5ph8igDOkPBA02 | 0.509 | 0.637 | ... | 0.000011 | 0.0789 | 0.3780 | 172.006 | 3 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 468524 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | James Joint | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 72080 | ANTI | 207 | spotify:track:3cuGpP8vUSC1aq8tjD3J2c | 0.399 | 0.203 | ... | 0.000163 | 0.2700 | 0.4050 | 134.202 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 603984 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Close To You | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 223226 | ANTI | 500 | spotify:track:4gFxywaJejXWxo0NjlWzgg | 0.494 | 0.170 | ... | 0.000000 | 0.1390 | 0.1450 | 80.098 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 613612 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Yeah, I Said It | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 133080 | ANTI | 559 | spotify:track:4kqxy0SvQ2N34nOJ9ggfMu | 0.509 | 0.380 | ... | 0.000001 | 0.3600 | 0.2490 | 127.880 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 815849 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Desperado | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 186466 | ANTI | 1144 | spotify:track:6KFaHC9G178beAp7P0Vi5S | 0.685 | 0.610 | ... | 0.000000 | 0.1020 | 0.3230 | 94.384 | 3 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 834653 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Never Ending | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 202506 | ANTI | 277 | spotify:track:6TTtJwtPEAI7yPHKR3XEKE | 0.530 | 0.391 | ... | 0.000070 | 0.1870 | 0.5210 | 82.215 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 953321 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Kiss It Better | spotify:album:3Q149ZH46Z0f3oDR7vlDYV | 253080 | ANTI | 1033 | spotify:track:7bmqcI1HQwx1PWwYyZO0lg | 0.619 | 0.806 | ... | 0.000000 | 0.0671 | 0.8770 | 95.000 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 58 | 2016-01-28 |
| 138902 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Work | spotify:album:2JNVoEx4psIgNQyEExwQVn | 219320 | ANTI | 4683 | spotify:track:14WWzenpaEgQZlqPq2nk4v | 0.725 | 0.534 | ... | 0.000000 | 0.0919 | 0.5580 | 91.974 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 15 | 2016-01-28 |
| 343268 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Pose | spotify:album:19O3rXe4nDu9YDcc2tOQVn | 144226 | ANTI | 109 | spotify:track:2eghogEKiH7hM70GYkF1XD | 0.684 | 0.840 | ... | 0.000223 | 0.1550 | 0.7440 | 145.905 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 49 | 2016-01-28 |
| 371613 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Goodnight Gotham | spotify:album:19O3rXe4nDu9YDcc2tOQVn | 88493 | ANTI | 73 | spotify:track:2sHNQyTbE3ZvhjBFGqLxJU | 0.447 | 0.674 | ... | 0.000006 | 0.2900 | 0.3210 | 81.995 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 49 | 2016-01-28 |
| 840310 | Rihanna | spotify:artist:5pKCCKE2ajJHZ9KAiaK11H | Sex With Me | spotify:album:19O3rXe4nDu9YDcc2tOQVn | 206400 | ANTI | 1998 | spotify:track:6WAxKNbZoGNzQTIvdMqkFs | 0.619 | 0.539 | ... | 0.000000 | 0.1060 | 0.3900 | 112.006 | 4 | ['barbadian pop', 'dance pop', 'pop', 'post-te... | 91 | [] | 49 | 2016-01-28 |
| 974881 | XXXTENTACION | spotify:artist:15UsOTVnJzReFVN1VCnxy4 | Jocelyn Flores | spotify:album:5VdyJkLe3yvOs0l4xXbWp0 | 119133 | 17 | 1850 | spotify:track:7m9OqQk4RVRkw9JJdeAw96 | 0.872 | 0.391 | ... | 0.000004 | 0.2970 | 0.4370 | 134.021 | 4 | ['emo rap', 'miami hip hop'] | 92 | [] | 86 | 2017-08-25 |
| 793792 | Kensho | spotify:artist:2jcxsN1wOb2HO7Z2AGdjN3 | Breathe & Receive | spotify:album:6wm4ibWe3YQlLG7Azx1IU9 | 140184 | Breathe & Receive | 14 | spotify:track:69fJjoW9ztUqoGhxswGDOw | 0.865 | 0.293 | ... | 0.002240 | 0.0964 | 0.0891 | 125.853 | 4 | [] | 24 | [] | 23 | 2016-03-11 |
18 rows × 25 columns