Generating a Spotify Playlist

Spotify Recommendation Algorithm


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.

png

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.

png

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.

png

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