Drake vs Kendrick Rhyme Scheme Analysis¶
How does lyrical complexity, measured through rhyme density and lyrical complexity, relate to popularity and listener engagement in hip-hop? Specifically, how do these patterns differ between two of the genre’s most influential artists, Kendrick Lamar and Drake, across their careers?
import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
from collections import Counter
import nltk
from nltk.corpus import cmudict
from collections import Counter
nltk.download("cmudict") # dictionary for rhyme scheme analysis
from dotenv import load_dotenv
import lyricsgenius as lg
import requests
import spacy
import re
import time
import sqlite3
nlp=spacy.load("en_core_web_sm")
[nltk_data] Downloading package cmudict to [nltk_data] /Users/mattabatangle/nltk_data... [nltk_data] Package cmudict is already up-to-date!
load_dotenv("3510.env")
True
Test to make sure stuff is working¶
geniusClientAccess = os.getenv("GENIUS_CLIENT_ACCESS_TOKEN")
clientID = os.getenv("SPOTIFY_CLIENT_ID")
genius = lg.Genius(geniusClientAccess)
genius.remove_section_headers = True
temp = genius.search_artist("Kendrick Lamar", max_songs=5) # test
Searching for songs by Kendrick Lamar... Song 1: "Not Like Us" Song 2: "HUMBLE." Song 3: "euphoria" Song 4: "m.A.A.d city" Song 5: "Swimming Pools (Drank)" Reached user-specified song limit (5). Done. Found 5 songs.
genius.search_artist("Drake", max_songs=5) # test
Searching for songs by Drake... Song 1: "God’s Plan" Song 2: "In My Feelings" Song 3: "Hotline Bling" Song 4: "One Dance" Song 5: "Hold On, We’re Going Home" Reached user-specified song limit (5). Done. Found 5 songs.
Artist(name=Drake, num_songs=5)
clientID = os.getenv("SPOTIFY_CLIENT_ID")
clientSecret = os.getenv("SPOTIFY_CLIENT_SECRET")
grantType = 'client_credentials'
bodyParams = {"grant_type": grantType}
url = 'https://accounts.spotify.com/api/token'
responseJSON = requests.post(url, data=bodyParams, auth=(clientID, clientSecret)).json()
headers = {"Authorization": "Bearer "+responseJSON['access_token']}
rootURL = 'https://api.spotify.com/v1/'
Gathering each artists unique ID will make things easier when scraping their entire catelogs.
kendrickSearch = requests.get(rootURL+"search?q=Kendrick-Lamar&type=artist",headers=headers).json()
kendrickID = kendrickSearch['artists']['items'][0]['id']
drakeSearch = requests.get(rootURL+"search?q=Drake&type=artist",headers=headers).json()
drakeID = drakeSearch['artists']['items'][0]['id']
Now lets get started¶
First, I will scrape every available song from the Spotify API for both artists. This will make it easy to then pull 30-40 indivudal songs that will give an accurate representation of each artists discography over time.
def get_all_albums_and_singles(artist_id, include_groups=("album", "single"), market="US"):
albums = [] # list to hold
params = {"limit":50, "include_groups": ",".join(include_groups), "market": market} # Limit to 50 albums (Neither artists have more than 50)
url = rootURL+f"artists/{artist_id}/albums" # base url
while url:
albumSearch = requests.get(url, headers=headers, params=params)
if albumSearch.status_code != 200: # Troubleshoot
print(f"Error: {albumSearch.status_code} for {url}")
break
data = albumSearch.json()
albums.extend(data["items"]) # Extend instead of append to add multiple items
url = data["next"] # Iterate
params = None # Params already set as of here
return albums
kendrickAlbumsSingles = get_all_albums_and_singles(kendrickID)
drakeAlbumsSingles = get_all_albums_and_singles(drakeID)
def get_album_tracks(album_id):
tracks = []
url = f"{rootURL}albums/{album_id}/tracks" # base url
params = {"limit": 50, "market": "US"} # reasonable limit of 50 songs per album
while url:
trackReq = requests.get(url, headers=headers, params=params)
if trackReq.status_code != 200: # Troubleshoot
print(f"Error {trackReq.status_code} fetching tracks for album {album_id}")
break
data = trackReq.json()
tracks.extend(data["items"]) # Extend instead of append to add multiple items
url = data["next"] # Iterate
params = None # Params already set as of here
return tracks
Next I will iterate through each artists albums and gather track data¶
rows = []
for album in kendrickAlbumsSingles:
albumID = album["id"]
albumName = album["name"]
releaseDate = album["release_date"]
albumType = album["album_group"] or album["album_type"]
tracks = get_album_tracks(albumID)
for t in tracks:
if not any(a["id"] == kendrickID for a in t["artists"]):
continue
rows.append({
"artist": "Kendrick Lamar",
"artist_id": kendrickID,
"album_id": albumID,
"album_name": albumName,
"album_type": albumType,
"release_date": releaseDate,
"track_id": t["id"],
"track_name": t["name"],
"duration_ms": t["duration_ms"],
"track_number": t["track_number"],
"disc_number": t["disc_number"],
"explicit": t.get("explicit", False),
})
kendrickTracksUnfiltered = pd.DataFrame(rows)
kendrickTracksUnfiltered
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5gOfC9UzZQzTyShqPMrpjT | wacced out murals | 317092 | 1 | 1 | True |
| 1 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0nj9Bq5sHDiTxSHunhgkFb | squabble up | 157992 | 2 | 1 | True |
| 2 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 45J4avUb9Ni0bnETYaYFVJ | luther (with sza) | 177598 | 3 | 1 | False |
| 3 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5ho7VSXSmI2KM2nDjcnLyz | man at the garden | 233173 | 4 | 1 | True |
| 4 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5S8VwnB4sLi6W0lYTWYylu | hey now (feat. dody6) | 217478 | 5 | 1 | True |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 166 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 7HetWRCNDPHhiksK6VrAG1 | Push Thru | 300800 | 1 | 1 | True |
| 167 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 1kDctACNpFgSB7lZXPrazv | Push Thru | 301240 | 2 | 1 | False |
| 168 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 4M6IrkoE9LQMZzZx8eHNQD | Push Thru - Instrumental | 300346 | 3 | 1 | False |
| 169 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 1Jmy19ydnxfHcOdN28cw7q | My People (feat. Jay Rock) ("Bastards of the P... | single | 2011-08-16 | 0WkQfxU3podAt3UAenbzPd | My People (feat. Jay Rock) ("Bastards of the P... | 241086 | 1 | 1 | True |
| 170 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3X2elJMfPKM7pXo855g1dy | She Needs Me [Remix] (Ringtone) | single | 2010-11-22 | 1ylD5Zf0hLc9su7OJOU6u5 | She Needs Me [Remix] (Ringtone) | 27003 | 1 | 1 | False |
171 rows × 12 columns
rows = []
for album in drakeAlbumsSingles:
albumID = album["id"]
albumName = album["name"]
releaseDate = album["release_date"]
albumType = album["album_group"] or album["album_type"]
tracks = get_album_tracks(albumID)
for t in tracks:
# Skip tracks where artist isn't primary
if not any(a["id"] == drakeID for a in t["artists"]):
continue
rows.append({
"artist": "Drake",
"artist_id": drakeID,
"album_id": albumID,
"album_name": albumName,
"album_type": albumType,
"release_date": releaseDate,
"track_id": t["id"],
"track_name": t["name"],
"duration_ms": t["duration_ms"],
"track_number": t["track_number"],
"disc_number": t["disc_number"],
"explicit": t.get("explicit", False) # default false
})
drakeTracksUnfiltered = pd.DataFrame(rows)
drakeTracksUnfiltered
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 4u43I0LP2Xf85OAS85eG0R | CN TOWER | 241889 | 1 | 1 | True |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 7DL2F2bueQycqYjqsjHYjG | MOTH BALLS | 212629 | 2 | 1 | True |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 1F6nHHDJyTHLgDDFj1ZZDt | SOMETHING ABOUT YOU | 218682 | 3 | 1 | True |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 5aIEFCKhVUM5sKkwOSdFiM | CRYING IN CHANEL | 199602 | 4 | 1 | True |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 4GqhG9rDuRUoNyDSMJ0Brq | SPIDER-MAN SUPERMAN | 203893 | 5 | 1 | True |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 397 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True |
| 398 | Drake | 3TVXtAsR1Inumwj472S9r4 | 645FRpimwu0b1isiY5M32J | I'm Goin In | single | 2009-09-15 | 5aooThgj87ID0vgiyvcjPM | I'm Goin In | 225306 | 1 | 1 | True |
| 399 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2wmvVAqB2sAiJQpp2pRWcD | Fear | single | 2009-09-15 | 5WfBl43XUcWng7OnB8LKNW | Fear | 280666 | 1 | 1 | True |
| 400 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4Z4vthIzd6pIKC396R5vSN | Forever | single | 2009-01-01 | 3qjKqmA2YeH0a8DRoKj8iy | Forever | 357920 | 1 | 1 | True |
| 401 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3aMtvuGUNyIR27bv8gFPXw | Best I Ever Had | single | 2009-01-01 | 1PWnjvzT5Jhpfnh96DRNDh | Best I Ever Had | 258800 | 1 | 1 | False |
402 rows × 12 columns
Next I want to select songs from each artist (top 20/30 + 10 low-pop)¶
There is a small issue though. Popularity score is not avaliable when being called through a /albums/{id}/tracks endpoint. Therefore, we need to access each track through a /tracks/{id} endpoint to get its popularity score and add it to the rows.¶
def add_popularity(df):
ids = df["track_id"].dropna().unique().tolist() # Get a unique list of all track IDs
pops = {}
for i in range(0, len(ids), 50): # Spotify lets up to 50 per call
chunk = ids[i:i+50] # Spotify API only allows up to 50 IDs per request, so we loop through the list in chunks of 50
popRequest = requests.get(rootURL + "tracks", headers=headers, params={"ids": ",".join(chunk)}) # Get data for all tracks through API call
if popRequest.status_code == 200:
for track in popRequest.json()["tracks"]:
if track:
pops[track["id"]] = track.get("popularity", None) # Account for potential lack of key val
df["popularity"] = df["track_id"].map(pops) # Map the popularity dictionary back into dataframe
return df
add_popularity(kendrickTracksUnfiltered)
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5gOfC9UzZQzTyShqPMrpjT | wacced out murals | 317092 | 1 | 1 | True | 70 |
| 1 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0nj9Bq5sHDiTxSHunhgkFb | squabble up | 157992 | 2 | 1 | True | 81 |
| 2 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 45J4avUb9Ni0bnETYaYFVJ | luther (with sza) | 177598 | 3 | 1 | False | 84 |
| 3 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5ho7VSXSmI2KM2nDjcnLyz | man at the garden | 233173 | 4 | 1 | True | 67 |
| 4 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 5S8VwnB4sLi6W0lYTWYylu | hey now (feat. dody6) | 217478 | 5 | 1 | True | 72 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 166 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 7HetWRCNDPHhiksK6VrAG1 | Push Thru | 300800 | 1 | 1 | True | 27 |
| 167 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 1kDctACNpFgSB7lZXPrazv | Push Thru | 301240 | 2 | 1 | False | 16 |
| 168 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 4M6IrkoE9LQMZzZx8eHNQD | Push Thru - Instrumental | 300346 | 3 | 1 | False | 16 |
| 169 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 1Jmy19ydnxfHcOdN28cw7q | My People (feat. Jay Rock) ("Bastards of the P... | single | 2011-08-16 | 0WkQfxU3podAt3UAenbzPd | My People (feat. Jay Rock) ("Bastards of the P... | 241086 | 1 | 1 | True | 38 |
| 170 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3X2elJMfPKM7pXo855g1dy | She Needs Me [Remix] (Ringtone) | single | 2010-11-22 | 1ylD5Zf0hLc9su7OJOU6u5 | She Needs Me [Remix] (Ringtone) | 27003 | 1 | 1 | False | 2 |
171 rows × 13 columns
add_popularity(drakeTracksUnfiltered)
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 4u43I0LP2Xf85OAS85eG0R | CN TOWER | 241889 | 1 | 1 | True | 73 |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 7DL2F2bueQycqYjqsjHYjG | MOTH BALLS | 212629 | 2 | 1 | True | 69 |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 1F6nHHDJyTHLgDDFj1ZZDt | SOMETHING ABOUT YOU | 218682 | 3 | 1 | True | 75 |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 5aIEFCKhVUM5sKkwOSdFiM | CRYING IN CHANEL | 199602 | 4 | 1 | True | 65 |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 4GqhG9rDuRUoNyDSMJ0Brq | SPIDER-MAN SUPERMAN | 203893 | 5 | 1 | True | 70 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 397 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True | 34 |
| 398 | Drake | 3TVXtAsR1Inumwj472S9r4 | 645FRpimwu0b1isiY5M32J | I'm Goin In | single | 2009-09-15 | 5aooThgj87ID0vgiyvcjPM | I'm Goin In | 225306 | 1 | 1 | True | 67 |
| 399 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2wmvVAqB2sAiJQpp2pRWcD | Fear | single | 2009-09-15 | 5WfBl43XUcWng7OnB8LKNW | Fear | 280666 | 1 | 1 | True | 58 |
| 400 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4Z4vthIzd6pIKC396R5vSN | Forever | single | 2009-01-01 | 3qjKqmA2YeH0a8DRoKj8iy | Forever | 357920 | 1 | 1 | True | 72 |
| 401 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3aMtvuGUNyIR27bv8gFPXw | Best I Ever Had | single | 2009-01-01 | 1PWnjvzT5Jhpfnh96DRNDh | Best I Ever Had | 258800 | 1 | 1 | False | 45 |
402 rows × 13 columns
def select_tracks_for_analysis(df, top_n, low_n):
df = df.dropna(subset=["track_id", "popularity"]).drop_duplicates("track_id")
top = (df.sort_values("popularity", ascending=False).groupby("album_id", as_index=False).head(5)) # Cap per album to avoid one album dominating
top = top.sort_values("popularity", ascending=False).head(top_n)
low = (df.sort_values("popularity", ascending=True).drop_duplicates("track_id")) # Try to spread across albums
low = (low.groupby("album_id", as_index=False).head(2).sort_values("popularity", ascending=True).head(low_n))
selectedTracks = (pd.concat([top, low], ignore_index=True).drop_duplicates("track_id").reset_index(drop=True)) # Remove dupes
return selectedTracks
kendrickTracks = select_tracks_for_analysis(kendrickTracksUnfiltered, top_n=20, low_n=10)
drakeTracks = select_tracks_for_analysis(drakeTracksUnfiltered, top_n=30, low_n=10)
kendrickTracks
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3pLdWdkj83EYfDN6H2N8MR | Black Panther The Album Music From And Inspire... | album | 2018-02-09 | 3GCdLUSnKSMJhs4Tj6CV3s | All The Stars (with SZA) - From "Black Panther... | 232186 | 2 | 1 | True | 91 |
| 1 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5JjnoGJyOxfSZUZtk2rRwZ | Not Like Us | single | 2024-05-04 | 6AI3ezQ4o3HUoP6Dhudph3 | Not Like Us | 274192 | 1 | 1 | True | 89 |
| 2 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 7KXjTSCq5nL1LoYtL7XAwS | HUMBLE. | 177000 | 8 | 1 | True | 86 |
| 3 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0aB0v4027ukVziUGwVGYpG | tv off (feat. lefty gunplay) | 220690 | 7 | 1 | True | 86 |
| 4 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6PGoSes0D9eUDeeAafB2As | LOVE. FEAT. ZACARI. | 213400 | 10 | 1 | False | 85 |
| 5 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 2XPrwlaAHHXnJzP9tBcIzH | Swimming Pools (Drank) | single | 2012-01-01 | 6REbwUNlppTfcnV4d4ZoZi | Swimming Pools (Drank) | 247800 | 1 | 1 | True | 84 |
| 6 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 45J4avUb9Ni0bnETYaYFVJ | luther (with sza) | 177598 | 3 | 1 | False | 84 |
| 7 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6IZvVAP7VPPnsGX6bvgkqg | PRIDE. | 275253 | 7 | 1 | True | 82 |
| 8 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6HZILIRieu8S0iqY8kIKhj | DNA. | 185946 | 2 | 1 | True | 81 |
| 9 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 6PBZN8cbwkqm1ERj2BGXJ1 | good kid, m.A.A.d city | album | 2012 | 2HbKqm4o0w5wEeEFXm2sD4 | Money Trees | 386906 | 5 | 1 | True | 81 |
| 10 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0nj9Bq5sHDiTxSHunhgkFb | squabble up | 157992 | 2 | 1 | True | 81 |
| 11 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 3iVcZ5G6tvkXZkZKlMpIUs | Alright | 219333 | 7 | 1 | True | 81 |
| 12 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6SwRhMLwNqEi6alNPVG00n | LOYALTY. FEAT. RIHANNA. | 227360 | 6 | 1 | True | 78 |
| 13 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 6BU1RZexmvJcBjgagVVt3M | Count Me Out | 283642 | 1 | 2 | True | 77 |
| 14 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 2Uts1QFB4u2YNIMiqcb4de | peekaboo (feat. azchike) | 155917 | 9 | 1 | True | 77 |
| 15 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 5Gt9bxniM1SxN61yRzRhXL | United In Grief | 255377 | 1 | 1 | True | 76 |
| 16 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 32bR4LcEc1PvJEhaKoo4ZN | euphoria | single | 2024-04-30 | 77DRzu7ERs0TX3roZcre7Q | euphoria | 383639 | 1 | 1 | True | 76 |
| 17 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 2g6tReTlM2Akp41g0HaeXN | Die Hard | 239026 | 4 | 1 | True | 75 |
| 18 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 0N3W5peJUQtI4eyR6GJT5O | King Kunta | 234693 | 3 | 1 | True | 75 |
| 19 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3DGQ1iZ9XKUQxAUWjfC34w | good kid, m.A.A.d city (Deluxe) | album | 2012 | 2P3SLxeQHPqh8qKB6gtJY2 | Poetic Justice | 300160 | 6 | 1 | True | 75 |
| 20 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3X2elJMfPKM7pXo855g1dy | She Needs Me [Remix] (Ringtone) | single | 2010-11-22 | 1ylD5Zf0hLc9su7OJOU6u5 | She Needs Me [Remix] (Ringtone) | 27003 | 1 | 1 | False | 2 |
| 21 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 4M6IrkoE9LQMZzZx8eHNQD | Push Thru - Instrumental | 300346 | 3 | 1 | False | 16 |
| 22 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 1kDctACNpFgSB7lZXPrazv | Push Thru | 301240 | 2 | 1 | False | 16 |
| 23 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4NuKTiNjwcX4ZG7TXEBnYh | Malcolm X | single | 2021-06-25 | 6Y2Sdnlpf2Lxb0lh4s81Fb | Malcolm X | 195440 | 1 | 1 | True | 27 |
| 24 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4XF4wNh0WHyrayqCYS8xY0 | Bitch, Don't Kill My Vibe (Remix) | single | 2013-01-01 | 5GmqAFOndnDJnIgDPUeiol | Bitch, Don’t Kill My Vibe - Remix | 306053 | 1 | 1 | False | 28 |
| 25 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5moHeRF6YwQz9Mhc1SB0v0 | Two Presidents | single | 2013-12-03 | 2Xjvo0g3jPZB8QgTmRv5oU | Two Presidents | 230038 | 1 | 1 | True | 34 |
| 26 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0itierEc1U3I8yIi4TtnuT | The Mantra | single | 2018-11-14 | 7mVHy2E0yV3oTnV0OR5uMf | The Mantra - From "Creed II: The Album" | 252384 | 1 | 1 | True | 37 |
| 27 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4alcGHjstaALJHHiljfy3H | DAMN. COLLECTORS EDITION. | album | 2017-12-08 | 1WonGCoO1sz7I4aD0HRbXy | BLOOD. | 118066 | 14 | 1 | True | 38 |
| 28 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 1Jmy19ydnxfHcOdN28cw7q | My People (feat. Jay Rock) ("Bastards of the P... | single | 2011-08-16 | 0WkQfxU3podAt3UAenbzPd | My People (feat. Jay Rock) ("Bastards of the P... | 241086 | 1 | 1 | True | 38 |
| 29 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 6gyBOHTEtKHEPIy9EAWjdB | Swimming Pools (Drank) [Black Hippy Remix] | single | 2015-03-10 | 2kB3E1ne5D9EUguk7yct9g | Swimming Pools (Drank) - Black Hippy Remix | 314893 | 1 | 1 | True | 38 |
drakeTracks
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1zi7xx7UVEFkmKfv06H8x0 | One Dance | 173986 | 12 | 1 | False | 92 |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 6LxSe8YmdPxy095Ux6znaQ | Headlines | 235986 | 3 | 1 | True | 89 |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 5mCPDVBb16L4XQwDdbRUpz | Passionfruit | 298940 | 3 | 1 | True | 89 |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 6DCZcSspjsKoFjzjrWoCdn | God's Plan | 198973 | 5 | 1 | True | 87 |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 3Q4gttWQ6hxqWOa3tHoTNi | Not You Too (feat. Chris Brown) | 269680 | 4 | 1 | True | 86 |
| 5 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2u9S9JJ6hTZS3Vf22HOZKg | NOKIA | 241023 | 14 | 1 | True | 85 |
| 6 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 0wwPcA6wtMf6HUMpIRdeP7 | Hotline Bling | 267066 | 20 | 1 | False | 85 |
| 7 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 0NUqi0ps17YpLUC3kgsZq0 | DIE TRYING | 195431 | 15 | 1 | True | 84 |
| 8 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3SpBlxme9WbeQdI9kx7KAV | Certified Lover Boy | album | 2021-09-03 | 40iJIUlhi6renaREYGeIDS | Fair Trade (with Travis Scott) | 291175 | 6 | 1 | True | 83 |
| 9 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 6n3HGiq4v35D6eFOSwqYuo | Teenage Fever | 219692 | 14 | 1 | True | 83 |
| 10 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1C7KSXR2GVxknex6I4ANco | 9 | 255786 | 2 | 1 | True | 83 |
| 11 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2ZUFSbIkmFkGag000RWOpA | Nothing Was The Same (Deluxe) | album | 2013-01-01 | 6jdOi5U5LBzQrc4c1VT983 | Hold On, We're Going Home | 227880 | 8 | 1 | False | 82 |
| 12 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3cf4iSSKd8ffTncbtKljXw | Honestly, Nevermind | album | 2022-06-17 | 3F5CgOj3wFlRv51JsHbxhe | Jimmy Cooks (feat. 21 Savage) | 218364 | 14 | 1 | True | 82 |
| 13 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 3CA9pLiwRIGtUBiMjbZmRw | Nice For What | 210746 | 4 | 2 | True | 81 |
| 14 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2kZoOj1n5vk9BuF0sih58M | SOMEBODY LOVES ME | 182767 | 16 | 1 | True | 81 |
| 15 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4TWJJZmgYm6tE6PzqpluQ0 | Which One | single | 2025-07-25 | 5FMyXeZ0reYloRTiCkPprT | Which One (feat. Central Cee) | 169134 | 1 | 1 | True | 81 |
| 16 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1LShhEEKRT5MNPcO7jtYHh | So Far Gone | album | 2009 | 3QLjDkgLh9AOEHlhQtDuhs | Best I Ever Had | 257690 | 10 | 1 | True | 81 |
| 17 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7dqpveMVcWgbzqYrOdkFTD | Care Package | album | 2019-08-02 | 4Wjhj0WjkyECccfHVIgaTq | Trust Issues | 281518 | 4 | 1 | True | 81 |
| 18 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3SpBlxme9WbeQdI9kx7KAV | Certified Lover Boy | album | 2021-09-03 | 1PDP7mLiAMwhfmgIwzhOm2 | Yebba’s Heartbreak | 133762 | 11 | 1 | True | 81 |
| 19 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 5H4mXWKcicuLKDn4Jy0sK7 | Time Flies | 192931 | 7 | 1 | True | 80 |
| 20 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 4wVOKKEHUJxHCFFNUWDn0B | Chicago Freestyle (feat. Giveon) | 220487 | 3 | 1 | True | 80 |
| 21 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0bNfrGST1xSPZ3V3g5jjHT | What Did I Miss? | single | 2025-07-05 | 57GsLpRtEtrzcPGPop20rS | What Did I Miss? | 194324 | 1 | 1 | True | 80 |
| 22 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 124NFj84ppZ5pAxTuVQYCQ | Take Care | 277386 | 5 | 1 | True | 80 |
| 23 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 047fCsbO4NdmwCBn8pcUXl | Marvins Room | 347226 | 6 | 1 | True | 80 |
| 24 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 0jF2AdhsalO1L7KkhK4LE5 | Practice | 237733 | 17 | 1 | True | 80 |
| 25 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 2Gnsof1hvZzjE1xdLRpjtf | Over My Dead Body | 272573 | 1 | 1 | True | 80 |
| 26 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4czdORdCWP9umpbhFXK2fW | For All The Dogs | album | 2023-10-06 | 1yeB8MUNeLo9Ek1UEpsyz6 | Rich Baby Daddy (feat. Sexyy Red & SZA) | 319191 | 20 | 1 | True | 80 |
| 27 | Drake | 3TVXtAsR1Inumwj472S9r4 | 5LuoozUhs2pl3glZeAJl89 | Scary Hours 2 | single | 2021-03-05 | 65OVbaJR5O1RmwOQx0875b | Wants and Needs (feat. Lil Baby) | 192956 | 2 | 1 | True | 79 |
| 28 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 3cjF2OFRmip8spwZYQRKxP | Feel No Ways | 240653 | 4 | 1 | True | 79 |
| 29 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 2KvHC9z14GSl4YpkNMX384 | Do Not Disturb | 283550 | 22 | 1 | True | 79 |
| 30 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3CHCm9n05a3tG4cQJ4rJwq | For All The Dogs Scary Hours Edition (Instrume... | single | 2023-11-16 | 0Mt4kFSqMDBX4jezEUtujl | Evil Ways (feat. J. Cole) - Instrumental | 227692 | 5 | 1 | False | 29 |
| 31 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3CHCm9n05a3tG4cQJ4rJwq | For All The Dogs Scary Hours Edition (Instrume... | single | 2023-11-16 | 6BCDS43QqQkK6TWg9F2YhO | The Shoe Fits - Instrumental | 374025 | 3 | 1 | False | 29 |
| 32 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0v4UlHEDcUBbV9kM3TX4bj | Live For | single | 2013-01-01 | 4v1wpe6QTvLN7bu3gM6tRh | Live For | 222720 | 1 | 1 | False | 29 |
| 33 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True | 34 |
| 34 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2lzV5TIBiLED8eCjwsGBIv | MELTDOWN (feat. Drake) [Instrumental] | single | 2023-07-25 | 4kJn7armCJDav48yCu3yKh | MELTDOWN (feat. Drake) - Instrumental | 247333 | 1 | 1 | False | 35 |
| 35 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4OQEGCbts7MiJm8wfwC9BX | LOYAL (feat. Drake) | single | 2019-11-22 | 13NAmCCRYxRcr2NEtiWGa8 | LOYAL (feat. Drake) | 197973 | 1 | 1 | False | 37 |
| 36 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7iLdPmU6eUTwKsYifBQ6zb | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | single | 2020-08-06 | 6R1eAccx1fnh8P5HhFzn84 | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | 259651 | 1 | 1 | False | 38 |
| 37 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4v2wkI8xYxp0gTtSMwbRoj | She Will | single | 2011-08-16 | 0WPbCs75tnRVM1Wag5PLeW | She Will | 307360 | 1 | 1 | True | 39 |
| 38 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4P9NQ88JRt2r39QlsevM1n | Make Me Proud | single | 2011-01-01 | 3psB8LAWdw813k9ZmLvjmZ | Make Me Proud | 220053 | 1 | 1 | True | 42 |
| 39 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4v2wkI8xYxp0gTtSMwbRoj | She Will | single | 2011-08-16 | 3BQlpg7hRdTmakWbX89m1i | She Will - Instrumental | 306396 | 2 | 1 | False | 42 |
Next I want to retrieve the lyrics for each song for my rhyme scheme anaylsis.¶
def get_lyrics_safe(artist, title):
try: # In case of failed lyric retrieval
song = genius.search_song(title, artist)
if song and song.lyrics:
return song.lyrics
except Exception as e: # Error handling
print(f"Error for {artist} - {title}: {e}")
return None
def fetch_lyrics(df):
df = df.copy() # Copy of df
df["lyrics"] = None
for i, row in df.iterrows(): # Iterate thru rows to scrape tracks for lyric pulling
lyrics = get_lyrics_safe(row["artist"], row["track_name"])
df.at[i, "lyrics"] = lyrics # at index i set lyrics to lyrics
print(f"{i+1}/{len(df)}: {row['artist']} - {row['track_name']}") # Print counter
time.sleep(5) # In case of rate limits
return df
kendrickLyrics = fetch_lyrics(kendrickTracks)
drakeLyrics = fetch_lyrics(drakeTracks)
Searching for "All The Stars (with SZA) - From "Black Panther: The Album"" by Kendrick Lamar...
No results found for: 'All The Stars (with SZA) - From "Black Panther: The Album" Kendrick Lamar'
1/30: Kendrick Lamar - All The Stars (with SZA) - From "Black Panther: The Album"
Searching for "Not Like Us" by Kendrick Lamar...
Done.
2/30: Kendrick Lamar - Not Like Us
Searching for "HUMBLE." by Kendrick Lamar...
Done.
3/30: Kendrick Lamar - HUMBLE.
Searching for "tv off (feat. lefty gunplay)" by Kendrick Lamar...
Done.
4/30: Kendrick Lamar - tv off (feat. lefty gunplay)
Searching for "LOVE. FEAT. ZACARI." by Kendrick Lamar...
Done.
5/30: Kendrick Lamar - LOVE. FEAT. ZACARI.
Searching for "Swimming Pools (Drank)" by Kendrick Lamar...
Done.
6/30: Kendrick Lamar - Swimming Pools (Drank)
Searching for "luther (with sza)" by Kendrick Lamar...
No results found for: 'luther (with sza) Kendrick Lamar'
7/30: Kendrick Lamar - luther (with sza)
Searching for "PRIDE." by Kendrick Lamar...
Done.
8/30: Kendrick Lamar - PRIDE.
Searching for "DNA." by Kendrick Lamar...
Done.
9/30: Kendrick Lamar - DNA.
Searching for "Money Trees" by Kendrick Lamar...
Done.
10/30: Kendrick Lamar - Money Trees
Searching for "squabble up" by Kendrick Lamar...
Done.
11/30: Kendrick Lamar - squabble up
Searching for "Alright" by Kendrick Lamar...
Done.
12/30: Kendrick Lamar - Alright
Searching for "LOYALTY. FEAT. RIHANNA." by Kendrick Lamar...
Done.
13/30: Kendrick Lamar - LOYALTY. FEAT. RIHANNA.
Searching for "Count Me Out" by Kendrick Lamar...
Done.
14/30: Kendrick Lamar - Count Me Out
Searching for "peekaboo (feat. azchike)" by Kendrick Lamar...
Done.
15/30: Kendrick Lamar - peekaboo (feat. azchike)
Searching for "United In Grief" by Kendrick Lamar...
Done.
16/30: Kendrick Lamar - United In Grief
Searching for "euphoria" by Kendrick Lamar...
Done.
17/30: Kendrick Lamar - euphoria
Searching for "Die Hard" by Kendrick Lamar...
Error for Kendrick Lamar - Die Hard: Request timed out:
HTTPSConnectionPool(host='api.genius.com', port=443): Read timed out. (read timeout=5)
18/30: Kendrick Lamar - Die Hard
Searching for "King Kunta" by Kendrick Lamar...
Done.
19/30: Kendrick Lamar - King Kunta
Searching for "Poetic Justice" by Kendrick Lamar...
Done.
20/30: Kendrick Lamar - Poetic Justice
Searching for "She Needs Me [Remix] (Ringtone)" by Kendrick Lamar...
No results found for: 'She Needs Me [Remix] (Ringtone) Kendrick Lamar'
21/30: Kendrick Lamar - She Needs Me [Remix] (Ringtone)
Searching for "Push Thru - Instrumental" by Kendrick Lamar...
No results found for: 'Push Thru - Instrumental Kendrick Lamar'
22/30: Kendrick Lamar - Push Thru - Instrumental
Searching for "Push Thru" by Kendrick Lamar...
Done.
23/30: Kendrick Lamar - Push Thru
Searching for "Malcolm X" by Kendrick Lamar...
Done.
24/30: Kendrick Lamar - Malcolm X
Searching for "Bitch, Don’t Kill My Vibe - Remix" by Kendrick Lamar...
Done.
25/30: Kendrick Lamar - Bitch, Don’t Kill My Vibe - Remix
Searching for "Two Presidents" by Kendrick Lamar...
Done.
26/30: Kendrick Lamar - Two Presidents
Searching for "The Mantra - From "Creed II: The Album"" by Kendrick Lamar...
No results found for: 'The Mantra - From "Creed II: The Album" Kendrick Lamar'
27/30: Kendrick Lamar - The Mantra - From "Creed II: The Album"
Searching for "BLOOD." by Kendrick Lamar...
Done.
28/30: Kendrick Lamar - BLOOD.
Searching for "My People (feat. Jay Rock) ("Bastards of the Party" Original Soundtrack Version)" by Kendrick Lamar...
No results found for: 'My People (feat. Jay Rock) ("Bastards of the Party" Original Soundtrack Version) Kendrick Lamar'
29/30: Kendrick Lamar - My People (feat. Jay Rock) ("Bastards of the Party" Original Soundtrack Version)
Searching for "Swimming Pools (Drank) - Black Hippy Remix" by Kendrick Lamar...
No results found for: 'Swimming Pools (Drank) - Black Hippy Remix Kendrick Lamar'
30/30: Kendrick Lamar - Swimming Pools (Drank) - Black Hippy Remix
Searching for "One Dance" by Drake...
Done.
1/40: Drake - One Dance
Searching for "Headlines" by Drake...
Done.
2/40: Drake - Headlines
Searching for "Passionfruit" by Drake...
Done.
3/40: Drake - Passionfruit
Searching for "God's Plan" by Drake...
Done.
4/40: Drake - God's Plan
Searching for "Not You Too (feat. Chris Brown)" by Drake...
Done.
5/40: Drake - Not You Too (feat. Chris Brown)
Searching for "NOKIA" by Drake...
Done.
6/40: Drake - NOKIA
Searching for "Hotline Bling" by Drake...
Done.
7/40: Drake - Hotline Bling
Searching for "DIE TRYING" by Drake...
Done.
8/40: Drake - DIE TRYING
Searching for "Fair Trade (with Travis Scott)" by Drake...
No results found for: 'Fair Trade (with Travis Scott) Drake'
9/40: Drake - Fair Trade (with Travis Scott)
Searching for "Teenage Fever" by Drake...
Done.
10/40: Drake - Teenage Fever
Searching for "9" by Drake...
Done.
11/40: Drake - 9
Searching for "Hold On, We're Going Home" by Drake...
Done.
12/40: Drake - Hold On, We're Going Home
Searching for "Jimmy Cooks (feat. 21 Savage)" by Drake...
Done.
13/40: Drake - Jimmy Cooks (feat. 21 Savage)
Searching for "Nice For What" by Drake...
Done.
14/40: Drake - Nice For What
Searching for "SOMEBODY LOVES ME" by Drake...
Done.
15/40: Drake - SOMEBODY LOVES ME
Searching for "Which One (feat. Central Cee)" by Drake...
Done.
16/40: Drake - Which One (feat. Central Cee)
Searching for "Best I Ever Had" by Drake...
Done.
17/40: Drake - Best I Ever Had
Searching for "Trust Issues" by Drake...
Done.
18/40: Drake - Trust Issues
Searching for "Yebba’s Heartbreak" by Drake...
Done.
19/40: Drake - Yebba’s Heartbreak
Searching for "Time Flies" by Drake...
Done.
20/40: Drake - Time Flies
Searching for "Chicago Freestyle (feat. Giveon)" by Drake...
Done.
21/40: Drake - Chicago Freestyle (feat. Giveon)
Searching for "What Did I Miss?" by Drake...
Done.
22/40: Drake - What Did I Miss?
Searching for "Take Care" by Drake...
Done.
23/40: Drake - Take Care
Searching for "Marvins Room" by Drake...
Done.
24/40: Drake - Marvins Room
Searching for "Practice" by Drake...
Done.
25/40: Drake - Practice
Searching for "Over My Dead Body" by Drake...
Done.
26/40: Drake - Over My Dead Body
Searching for "Rich Baby Daddy (feat. Sexyy Red & SZA)" by Drake...
Done.
27/40: Drake - Rich Baby Daddy (feat. Sexyy Red & SZA)
Searching for "Wants and Needs (feat. Lil Baby)" by Drake...
Done.
28/40: Drake - Wants and Needs (feat. Lil Baby)
Searching for "Feel No Ways" by Drake...
Done.
29/40: Drake - Feel No Ways
Searching for "Do Not Disturb" by Drake...
Done.
30/40: Drake - Do Not Disturb
Searching for "Evil Ways (feat. J. Cole) - Instrumental" by Drake...
Specified song does not contain lyrics. Rejecting.
31/40: Drake - Evil Ways (feat. J. Cole) - Instrumental
Searching for "The Shoe Fits - Instrumental" by Drake...
Specified song does not contain lyrics. Rejecting.
32/40: Drake - The Shoe Fits - Instrumental
Searching for "Live For" by Drake...
Done.
33/40: Drake - Live For
Searching for "Miss Me" by Drake...
Done.
34/40: Drake - Miss Me
Searching for "MELTDOWN (feat. Drake) - Instrumental" by Drake...
Specified song does not contain lyrics. Rejecting.
35/40: Drake - MELTDOWN (feat. Drake) - Instrumental
Searching for "LOYAL (feat. Drake)" by Drake...
Done.
36/40: Drake - LOYAL (feat. Drake)
Searching for "TWIST & TURN (feat. Drake & PARTYNEXTDOOR)" by Drake...
Done.
37/40: Drake - TWIST & TURN (feat. Drake & PARTYNEXTDOOR)
Searching for "She Will" by Drake...
Done.
38/40: Drake - She Will
Searching for "Make Me Proud" by Drake...
Done.
39/40: Drake - Make Me Proud
Searching for "She Will - Instrumental" by Drake...
Specified song does not contain lyrics. Rejecting.
40/40: Drake - She Will - Instrumental
Genius was not able to find lyrics for 5-10 songs for each artists so lets remove those¶
kendrickLyrics = kendrickLyrics[kendrickLyrics["lyrics"].notna()].reset_index(drop=True)
drakeLyrics = drakeLyrics[drakeLyrics["lyrics"].notna()].reset_index(drop=True)
print(len(kendrickLyrics), "Kendrick tracks with lyrics")
print(len(drakeLyrics), "Drake tracks with lyrics")
22 Kendrick tracks with lyrics 35 Drake tracks with lyrics
Next Step is Rhyme & Complexity Analysis¶
prondict = cmudict.dict()
# CMU dictionary for phonetic rhyme analysis
# Return a tuple of phonemes for the rhyming part of a word
def rhyme_part(word):
word = word.lower() # Set standard to lower
if word in prondict:
phones = prondict[word][0] # Match word in dictionary
vowels = [i for i, p in enumerate(phones) if p[-1].isdigit()] # grab str as vowel if last part of str is digit (cmudict signifies these as vowels)
# Creates a list of indices where the phoneme ends with a digit, which is how the CMU dictionary marks vowel sounds. This identifies where stressed or unstressed vowels occur in the pronunciation.
print(vowels)
return tuple(phones[vowels[-1]:]) if vowels else tuple(phones[-2:]) # Return rhyming portion of word (everything after last vowel or if no vowels just last two letters)
# If the word has vowel phonemes, return the phonemes from the last vowel onward. This approximates the rhyming part. If no vowel is found, fall back to returning the last two phonemes.
return tuple(word[-2:]) # Fallback if not found then use last 2 letters
# tuple because most hashable for later use (better for dictionary usage since we are comparing rhymes)
rhyme_part('aaberg')
[0, 2]
('ER0', 'G')
def rhyme_density(lyrics):
words = re.findall(r"\b[a-zA-Z']+\b", str(lyrics).lower()) # regex to clean lyrics to just words
if len(words) < 10:
return 0
rhymes = [rhyme_part(w) for w in words] # Set rhymes using last function
rhyme_counts = Counter(rhymes) # Count rhymes
repeating = sum(v for v in rhyme_counts.values() if v > 1) # Find repeating rhymes
return repeating / len(words) # Return density
# Add word count, rhyme density, and overall complexity stats to df of songs with lyrics
def add_rhyme_stats(df):
df = df.copy() # copy df
df["word_count"] = df["lyrics"].str.split().apply(len) # Count the total number of words in each song
df["rhyme_density"] = df["lyrics"].apply(rhyme_density) # Count rhyme density directly from function
df["complexity"] = df["rhyme_density"] * df["word_count"] # Complexity = density multiplied by word count
return df
kendrickStats = add_rhyme_stats(kendrickLyrics)
drakeStats = add_rhyme_stats(drakeLyrics)
kendrickStats
drakeStats
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | lyrics | word_count | rhyme_density | complexity | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1zi7xx7UVEFkmKfv06H8x0 | One Dance | 173986 | 12 | 1 | False | 92 | Baby, I like your style\n\nGrips on your waist... | 469 | 0.934066 | 438.076923 |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 6LxSe8YmdPxy095Ux6znaQ | Headlines | 235986 | 3 | 1 | True | 89 | I might be too strung out on compliments\nOver... | 509 | 0.917969 | 467.246094 |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 5mCPDVBb16L4XQwDdbRUpz | Passionfruit | 298940 | 3 | 1 | True | 89 | Hold on, hold on, fuck that\nFuck that shit\nH... | 228 | 0.861472 | 196.415584 |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 6DCZcSspjsKoFjzjrWoCdn | God's Plan | 198973 | 5 | 1 | True | 87 | And they wishin' and wishin'\nAnd wishin' and ... | 349 | 0.864023 | 301.543909 |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 3Q4gttWQ6hxqWOa3tHoTNi | Not You Too (feat. Chris Brown) | 269680 | 4 | 1 | True | 86 | First time in a long time\nHurtin' deeply insi... | 388 | 0.878553 | 340.878553 |
| 5 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2u9S9JJ6hTZS3Vf22HOZKg | NOKIA | 241023 | 14 | 1 | True | 85 | Who's callin' my phone?\n (Who's callin' that ... | 784 | 0.943700 | 739.860590 |
| 6 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 0wwPcA6wtMf6HUMpIRdeP7 | Hotline Bling | 267066 | 20 | 1 | False | 85 | You used to call me on my\nYou used to, you us... | 431 | 0.931663 | 401.546697 |
| 7 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 0NUqi0ps17YpLUC3kgsZq0 | DIE TRYING | 195431 | 15 | 1 | True | 84 | Yeah\n\nGirl, I can't decide if I should stay ... | 411 | 0.895377 | 368.000000 |
| 8 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 6n3HGiq4v35D6eFOSwqYuo | Teenage Fever | 219692 | 14 | 1 | True | 83 | Your heart is hard to carry after dark\nYou're... | 319 | 0.862500 | 275.137500 |
| 9 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1C7KSXR2GVxknex6I4ANco | 9 | 255786 | 2 | 1 | True | 83 | Yeah, for the dogs dem, you know\nEverybody wa... | 518 | 0.896078 | 464.168627 |
| 10 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2ZUFSbIkmFkGag000RWOpA | Nothing Was The Same (Deluxe) | album | 2013-01-01 | 6jdOi5U5LBzQrc4c1VT983 | Hold On, We're Going Home | 227880 | 8 | 1 | False | 82 | I got my eyes on you\nYou're everything that I... | 339 | 0.996923 | 337.956923 |
| 11 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3cf4iSSKd8ffTncbtKljXw | Honestly, Nevermind | album | 2022-06-17 | 3F5CgOj3wFlRv51JsHbxhe | Jimmy Cooks (feat. 21 Savage) | 218364 | 14 | 1 | True | 82 | Desperté sacudido una vez más, para que sepas ... | 750 | 0.943704 | 707.777778 |
| 12 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 3CA9pLiwRIGtUBiMjbZmRw | Nice For What | 210746 | 4 | 2 | True | 81 | I wanna know who mothafuckin' representin' in ... | 751 | 0.932091 | 700.000000 |
| 13 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2kZoOj1n5vk9BuF0sih58M | SOMEBODY LOVES ME | 182767 | 16 | 1 | True | 81 | (All the girls)\nI know there's somebody who l... | 371 | 0.916442 | 340.000000 |
| 14 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4TWJJZmgYm6tE6PzqpluQ0 | Which One | single | 2025-07-25 | 5FMyXeZ0reYloRTiCkPprT | Which One (feat. Central Cee) | 169134 | 1 | 1 | True | 81 | Meu cabelo tá bonito? (Yeah)\nMeus peitos tão ... | 566 | 0.937238 | 530.476987 |
| 15 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1LShhEEKRT5MNPcO7jtYHh | So Far Gone | album | 2009 | 3QLjDkgLh9AOEHlhQtDuhs | Best I Ever Had | 257690 | 10 | 1 | True | 81 | You know, a lot of girls be\nThinkin' my songs... | 837 | 0.940334 | 787.059666 |
| 16 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7dqpveMVcWgbzqYrOdkFTD | Care Package | album | 2019-08-02 | 4Wjhj0WjkyECccfHVIgaTq | Trust Issues | 281518 | 4 | 1 | True | 81 | Uh\nAw yeah, aw yeah\nCall up on drank and let... | 543 | 0.909256 | 493.725953 |
| 17 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3SpBlxme9WbeQdI9kx7KAV | Certified Lover Boy | album | 2021-09-03 | 1PDP7mLiAMwhfmgIwzhOm2 | Yebba’s Heartbreak | 133762 | 11 | 1 | True | 81 | How much better can I show my love for you\nTh... | 127 | 0.803150 | 102.000000 |
| 18 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 5H4mXWKcicuLKDn4Jy0sK7 | Time Flies | 192931 | 7 | 1 | True | 80 | Yeah, I'm outside in an AMG\nRight outside, TT... | 383 | 0.913146 | 349.734742 |
| 19 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 4wVOKKEHUJxHCFFNUWDn0B | Chicago Freestyle (feat. Giveon) | 220487 | 3 | 1 | True | 80 | A las 2:30, cariño, ¿nos reuniremos en The Bea... | 580 | 0.953347 | 552.941176 |
| 20 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0bNfrGST1xSPZ3V3g5jjHT | What Did I Miss? | single | 2025-07-05 | 57GsLpRtEtrzcPGPop20rS | What Did I Miss? | 194324 | 1 | 1 | True | 80 | I don't give a fuck if you love me, I don't gi... | 466 | 0.892704 | 416.000000 |
| 21 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 124NFj84ppZ5pAxTuVQYCQ | Take Care | 277386 | 5 | 1 | True | 80 | I know you've been hurt by someone else\nI can... | 486 | 0.902490 | 438.609959 |
| 22 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 047fCsbO4NdmwCBn8pcUXl | Marvins Room | 347226 | 6 | 1 | True | 80 | Hello?\nYeah, I just walked in\nYeah, I'm good... | 596 | 0.932432 | 555.729730 |
| 23 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 0jF2AdhsalO1L7KkhK4LE5 | Practice | 237733 | 17 | 1 | True | 80 | Yeah, Cash Money shit, Cash Money shit\n\nI ca... | 579 | 0.954783 | 552.819130 |
| 24 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 2Gnsof1hvZzjE1xdLRpjtf | Over My Dead Body | 272573 | 1 | 1 | True | 80 | How I'm feeling, it doesn't matter\n'Cause you... | 608 | 0.911475 | 554.177049 |
| 25 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4czdORdCWP9umpbhFXK2fW | For All The Dogs | album | 2023-10-06 | 1yeB8MUNeLo9Ek1UEpsyz6 | Rich Baby Daddy (feat. Sexyy Red & SZA) | 319191 | 20 | 1 | True | 80 | ¿Se terminó? Podría ser otro\n¿Se terminó? Pod... | 811 | 0.960729 | 779.151473 |
| 26 | Drake | 3TVXtAsR1Inumwj472S9r4 | 5LuoozUhs2pl3glZeAJl89 | Scary Hours 2 | single | 2021-03-05 | 65OVbaJR5O1RmwOQx0875b | Wants and Needs (feat. Lil Baby) | 192956 | 2 | 1 | True | 79 | One Take\nDD\n\nPainted with purple to match w... | 514 | 0.857977 | 441.000000 |
| 27 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 3cjF2OFRmip8spwZYQRKxP | Feel No Ways | 240653 | 4 | 1 | True | 79 | I should be downtown, whipping on the way to y... | 340 | 0.955882 | 325.000000 |
| 28 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 2KvHC9z14GSl4YpkNMX384 | Do Not Disturb | 283550 | 22 | 1 | True | 79 | Silence keeps cloudin' me\nHand on my heart\nA... | 656 | 0.882622 | 579.000000 |
| 29 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0v4UlHEDcUBbV9kM3TX4bj | Live For | single | 2013-01-01 | 4v1wpe6QTvLN7bu3gM6tRh | Live For | 222720 | 1 | 1 | False | 29 | Getting sober for a day got me feeling too low... | 567 | 0.899115 | 509.798230 |
| 30 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True | 34 | I said, "Tell me what's really goin' on"\nDriz... | 857 | 0.904707 | 775.334099 |
| 31 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4OQEGCbts7MiJm8wfwC9BX | LOYAL (feat. Drake) | single | 2019-11-22 | 13NAmCCRYxRcr2NEtiWGa8 | LOYAL (feat. Drake) | 197973 | 1 | 1 | False | 37 | True, you're a star in my head\nYou, nuh need ... | 342 | 0.991228 | 339.000000 |
| 32 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7iLdPmU6eUTwKsYifBQ6zb | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | single | 2020-08-06 | 6R1eAccx1fnh8P5HhFzn84 | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | 259651 | 1 | 1 | False | 38 | Your body drive mi crazy-y-y\nYour body need a... | 620 | 0.934609 | 579.457735 |
| 33 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4v2wkI8xYxp0gTtSMwbRoj | She Will | single | 2011-08-16 | 0WPbCs75tnRVM1Wag5PLeW | She Will | 307360 | 1 | 1 | True | 39 | Young Money\nYeah, four\nAhem\n\nI tell her, "... | 824 | 0.929697 | 766.070303 |
| 34 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4P9NQ88JRt2r39QlsevM1n | Make Me Proud | single | 2011-01-01 | 3psB8LAWdw813k9ZmLvjmZ | Make Me Proud | 220053 | 1 | 1 | True | 42 | I like a woman with a future and a past\nA lit... | 685 | 0.909091 | 622.727273 |
Now that I have gathered the necessary stats it is time to visualize the data¶
combined = pd.concat([kendrickStats.assign(artist="Kendrick Lamar"), drakeStats.assign(artist="Drake")]) # Combine dfs
combined[["artist", "track_name", "rhyme_density", "word_count", "complexity", "popularity"]]
| artist | track_name | rhyme_density | word_count | complexity | popularity | |
|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | Not Like Us | 0.897577 | 907 | 814.102423 | 89 |
| 1 | Kendrick Lamar | HUMBLE. | 0.892562 | 598 | 533.752066 | 86 |
| 2 | Kendrick Lamar | tv off (feat. lefty gunplay) | 0.929504 | 770 | 715.718016 | 86 |
| 3 | Kendrick Lamar | LOVE. FEAT. ZACARI. | 0.947242 | 488 | 462.254197 | 85 |
| 4 | Kendrick Lamar | Swimming Pools (Drank) | 0.928654 | 859 | 797.713464 | 84 |
| 5 | Kendrick Lamar | PRIDE. | 0.882353 | 504 | 444.705882 | 82 |
| 6 | Kendrick Lamar | DNA. | 0.875367 | 671 | 587.370968 | 81 |
| 7 | Kendrick Lamar | Money Trees | 0.947232 | 1153 | 1092.158304 | 81 |
| 8 | Kendrick Lamar | squabble up | 0.872340 | 536 | 467.574468 | 81 |
| 9 | Kendrick Lamar | Alright | 0.929379 | 705 | 655.211864 | 81 |
| 10 | Kendrick Lamar | LOYALTY. FEAT. RIHANNA. | 0.954380 | 591 | 564.038321 | 78 |
| 11 | Kendrick Lamar | Count Me Out | 0.925966 | 956 | 885.223176 | 77 |
| 12 | Kendrick Lamar | peekaboo (feat. azchike) | 0.926357 | 602 | 557.666667 | 77 |
| 13 | Kendrick Lamar | United In Grief | 0.885978 | 646 | 572.342065 | 76 |
| 14 | Kendrick Lamar | euphoria | 0.924138 | 1441 | 1331.682759 | 76 |
| 15 | Kendrick Lamar | King Kunta | 0.928471 | 714 | 662.928471 | 75 |
| 16 | Kendrick Lamar | Poetic Justice | 0.942623 | 981 | 924.713115 | 75 |
| 17 | Kendrick Lamar | Push Thru | 0.873418 | 673 | 587.810127 | 16 |
| 18 | Kendrick Lamar | Malcolm X | 0.910781 | 534 | 486.356877 | 27 |
| 19 | Kendrick Lamar | Bitch, Don’t Kill My Vibe - Remix | 0.896181 | 842 | 754.584726 | 28 |
| 20 | Kendrick Lamar | Two Presidents | 0.889465 | 575 | 511.442142 | 34 |
| 21 | Kendrick Lamar | BLOOD. | 0.741379 | 172 | 127.517241 | 38 |
| 0 | Drake | One Dance | 0.934066 | 469 | 438.076923 | 92 |
| 1 | Drake | Headlines | 0.917969 | 509 | 467.246094 | 89 |
| 2 | Drake | Passionfruit | 0.861472 | 228 | 196.415584 | 89 |
| 3 | Drake | God's Plan | 0.864023 | 349 | 301.543909 | 87 |
| 4 | Drake | Not You Too (feat. Chris Brown) | 0.878553 | 388 | 340.878553 | 86 |
| 5 | Drake | NOKIA | 0.943700 | 784 | 739.860590 | 85 |
| 6 | Drake | Hotline Bling | 0.931663 | 431 | 401.546697 | 85 |
| 7 | Drake | DIE TRYING | 0.895377 | 411 | 368.000000 | 84 |
| 8 | Drake | Teenage Fever | 0.862500 | 319 | 275.137500 | 83 |
| 9 | Drake | 9 | 0.896078 | 518 | 464.168627 | 83 |
| 10 | Drake | Hold On, We're Going Home | 0.996923 | 339 | 337.956923 | 82 |
| 11 | Drake | Jimmy Cooks (feat. 21 Savage) | 0.943704 | 750 | 707.777778 | 82 |
| 12 | Drake | Nice For What | 0.932091 | 751 | 700.000000 | 81 |
| 13 | Drake | SOMEBODY LOVES ME | 0.916442 | 371 | 340.000000 | 81 |
| 14 | Drake | Which One (feat. Central Cee) | 0.937238 | 566 | 530.476987 | 81 |
| 15 | Drake | Best I Ever Had | 0.940334 | 837 | 787.059666 | 81 |
| 16 | Drake | Trust Issues | 0.909256 | 543 | 493.725953 | 81 |
| 17 | Drake | Yebba’s Heartbreak | 0.803150 | 127 | 102.000000 | 81 |
| 18 | Drake | Time Flies | 0.913146 | 383 | 349.734742 | 80 |
| 19 | Drake | Chicago Freestyle (feat. Giveon) | 0.953347 | 580 | 552.941176 | 80 |
| 20 | Drake | What Did I Miss? | 0.892704 | 466 | 416.000000 | 80 |
| 21 | Drake | Take Care | 0.902490 | 486 | 438.609959 | 80 |
| 22 | Drake | Marvins Room | 0.932432 | 596 | 555.729730 | 80 |
| 23 | Drake | Practice | 0.954783 | 579 | 552.819130 | 80 |
| 24 | Drake | Over My Dead Body | 0.911475 | 608 | 554.177049 | 80 |
| 25 | Drake | Rich Baby Daddy (feat. Sexyy Red & SZA) | 0.960729 | 811 | 779.151473 | 80 |
| 26 | Drake | Wants and Needs (feat. Lil Baby) | 0.857977 | 514 | 441.000000 | 79 |
| 27 | Drake | Feel No Ways | 0.955882 | 340 | 325.000000 | 79 |
| 28 | Drake | Do Not Disturb | 0.882622 | 656 | 579.000000 | 79 |
| 29 | Drake | Live For | 0.899115 | 567 | 509.798230 | 29 |
| 30 | Drake | Miss Me | 0.904707 | 857 | 775.334099 | 34 |
| 31 | Drake | LOYAL (feat. Drake) | 0.991228 | 342 | 339.000000 | 37 |
| 32 | Drake | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | 0.934609 | 620 | 579.457735 | 38 |
| 33 | Drake | She Will | 0.929697 | 824 | 766.070303 | 39 |
| 34 | Drake | Make Me Proud | 0.909091 | 685 | 622.727273 | 42 |
combined.describe()[["rhyme_density", "word_count", "complexity", "popularity"]] # Quick display
| rhyme_density | word_count | complexity | popularity | |
|---|---|---|---|---|
| count | 57.000000 | 57.000000 | 57.000000 | 57.000000 |
| mean | 0.911437 | 605.649123 | 555.531404 | 72.315789 |
| std | 0.041395 | 234.576251 | 221.631553 | 19.989424 |
| min | 0.741379 | 127.000000 | 102.000000 | 16.000000 |
| 25% | 0.892562 | 469.000000 | 438.076923 | 76.000000 |
| 50% | 0.916442 | 580.000000 | 552.819130 | 80.000000 |
| 75% | 0.934609 | 750.000000 | 700.000000 | 83.000000 |
| max | 0.996923 | 1441.000000 | 1331.682759 | 92.000000 |
sb.boxplot(x="artist", y="rhyme_density", data=combined)
plt.title("Rhyme Density Comparison Between Artists")
plt.ylabel("Rhyme Density (proportion of rhymed words)")
plt.xlabel("Artist")
plt.show()
Both artists show very high rhyme density (Lots 0.9+). Drake’s median looks slightly higher, but both distributions overlap heavily. This shows rhyme use is consistently strong in both catalogs.
sb.scatterplot(x="popularity", y="rhyme_density", hue="artist", data=combined)
plt.title("Rhyme Density vs Popularity")
plt.xlabel("Spotify Popularity Score")
plt.ylabel("Rhyme Density")
plt.show()
Kendrick: +0.44 -> moderate positive correlation. This suggests his more lyrically complex tracks tend to be more popular. This aligns with his reputation for producing technically dense songs that still resonate well with his audience.
Drake: –0.29 -> weak negative correlation. This shows more rhyming or complex writing slightly correlates with lower popularity. Makes sense given Drake’s pop crossover appeal his simpler, melodic songs are usually the hits.
sb.scatterplot(x="popularity", y="complexity", hue="artist", data=combined)
plt.title("Complexity vs Popularity")
plt.xlabel("Spotify Popularity Score")
plt.ylabel("Complexity (word_count * rhyme_density)")
plt.show()
Correlation magnitudes are smaller (Kendrick +0.25, Drake –0.24). This implies rhyme density matters a bit more than total wordiness.
Now lets look at the actual correlation numbers to double check findings¶
print("Kendrick: rhyme density vs popularity =",
kendrickStats["rhyme_density"].corr(kendrickStats["popularity"]))
print("Drake: rhyme density vs popularity =",
drakeStats["rhyme_density"].corr(drakeStats["popularity"]))
print("Kendrick: complexity vs popularity =",
kendrickStats["complexity"].corr(kendrickStats["popularity"]))
print("Drake: complexity vs popularity =",
drakeStats["complexity"].corr(drakeStats["popularity"]))
Kendrick: rhyme density vs popularity = 0.43626748634343915 Drake: rhyme density vs popularity = -0.15539574770524997 Kendrick: complexity vs popularity = 0.2870718851108495 Drake: complexity vs popularity = -0.31819599194826137
The data above suggests that Kendrick Lamar’s songs show a moderate positive relationship between lyrical density and popularity. This implies that his more lyrically intricate song-writing tends to perform well with the public. Drake, on the other hand, displays a mild negative correlation between rhyme complexity and popularity. This consistent with his broader pop appeal. Simpler and more melodic tracks dominate his top-performing songs. While both artists exhibit high overall rhyme density, the role of lyrical complexity in driving popularity appears more significant for Kendrick than for Drake.
Thank you for viewing!¶
Little Bonus Analysis¶
Since my question has a focus on each artists careers as a whole, I think it is fitting to view these stats across each year of their careers
combined["release_year"] = combined["release_date"].str[:4].astype(float) # Extract year
combined
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | lyrics | word_count | rhyme_density | complexity | release_year | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5JjnoGJyOxfSZUZtk2rRwZ | Not Like Us | single | 2024-05-04 | 6AI3ezQ4o3HUoP6Dhudph3 | Not Like Us | 274192 | 1 | 1 | True | 89 | Psst, I see dead people\n(\nMustard on the bea... | 907 | 0.897577 | 814.102423 | 2024.0 |
| 1 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 7KXjTSCq5nL1LoYtL7XAwS | HUMBLE. | 177000 | 8 | 1 | True | 86 | Nobody pray for me\nIt been that day for me\nW... | 598 | 0.892562 | 533.752066 | 2017.0 |
| 2 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0aB0v4027ukVziUGwVGYpG | tv off (feat. lefty gunplay) | 220690 | 7 | 1 | True | 86 | All I ever wanted was a black Grand National\n... | 770 | 0.929504 | 715.718016 | 2024.0 |
| 3 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6PGoSes0D9eUDeeAafB2As | LOVE. FEAT. ZACARI. | 213400 | 10 | 1 | False | 85 | Maldición, amor o lujuria\nMaldición, todos no... | 488 | 0.947242 | 462.254197 | 2017.0 |
| 4 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 2XPrwlaAHHXnJzP9tBcIzH | Swimming Pools (Drank) | single | 2012-01-01 | 6REbwUNlppTfcnV4d4ZoZi | Swimming Pools (Drank) | 247800 | 1 | 1 | True | 84 | Pour up (Drank), head shot (Drank)\nSit down (... | 859 | 0.928654 | 797.713464 | 2012.0 |
| 5 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6IZvVAP7VPPnsGX6bvgkqg | PRIDE. | 275253 | 7 | 1 | True | 82 | Love's gonna get you killed\nBut pride’s gonna... | 504 | 0.882353 | 444.705882 | 2017.0 |
| 6 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6HZILIRieu8S0iqY8kIKhj | DNA. | 185946 | 2 | 1 | True | 81 | I got, I got, I got, I got—\nLoyalty, got roya... | 671 | 0.875367 | 587.370968 | 2017.0 |
| 7 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 6PBZN8cbwkqm1ERj2BGXJ1 | good kid, m.A.A.d city | album | 2012 | 2HbKqm4o0w5wEeEFXm2sD4 | Money Trees | 386906 | 5 | 1 | True | 81 | Uh, me and my niggas tryna get it, ya bish (Ya... | 1153 | 0.947232 | 1092.158304 | 2012.0 |
| 8 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0nj9Bq5sHDiTxSHunhgkFb | squabble up | 157992 | 2 | 1 | True | 81 | God knows\nI am reincarnated\nI was stargazin'... | 536 | 0.872340 | 467.574468 | 2024.0 |
| 9 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 3iVcZ5G6tvkXZkZKlMpIUs | Alright | 219333 | 7 | 1 | True | 81 | Alls my life, I has to fight, nigga\nAlls my l... | 705 | 0.929379 | 655.211864 | 2015.0 |
| 10 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6SwRhMLwNqEi6alNPVG00n | LOYALTY. FEAT. RIHANNA. | 227360 | 6 | 1 | True | 78 | Dije que estoy consumido por la droga y que es... | 591 | 0.954380 | 564.038321 | 2017.0 |
| 11 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 6BU1RZexmvJcBjgagVVt3M | Count Me Out | 283642 | 1 | 2 | True | 77 | We may not know which way to go on this dark r... | 956 | 0.925966 | 885.223176 | 2022.0 |
| 12 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 2Uts1QFB4u2YNIMiqcb4de | peekaboo (feat. azchike) | 155917 | 9 | 1 | True | 77 | Sana la mano que ayuda\nA tu semejante hombre,... | 602 | 0.926357 | 557.666667 | 2024.0 |
| 13 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 5Gt9bxniM1SxN61yRzRhXL | United In Grief | 255377 | 1 | 1 | True | 76 | I hope \nyou find some\n peace of mind in this... | 646 | 0.885978 | 572.342065 | 2022.0 |
| 14 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 32bR4LcEc1PvJEhaKoo4ZN | euphoria | single | 2024-04-30 | 77DRzu7ERs0TX3roZcre7Q | euphoria | 383639 | 1 | 1 | True | 76 | eurt s'em tuoba yas yeht gnihtyrevE\nEuphoria... | 1441 | 0.924138 | 1331.682759 | 2024.0 |
| 15 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 0N3W5peJUQtI4eyR6GJT5O | King Kunta | 234693 | 3 | 1 | True | 75 | I got a bone to pick\nI don't want you monkey-... | 714 | 0.928471 | 662.928471 | 2015.0 |
| 16 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3DGQ1iZ9XKUQxAUWjfC34w | good kid, m.A.A.d city (Deluxe) | album | 2012 | 2P3SLxeQHPqh8qKB6gtJY2 | Poetic Justice | 300160 | 6 | 1 | True | 75 | Every second, every minute, man, I swear that ... | 981 | 0.942623 | 924.713115 | 2012.0 |
| 17 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 1kDctACNpFgSB7lZXPrazv | Push Thru | 301240 | 2 | 1 | False | 16 | I rise as day breaks\nClouds hide the sun’s ra... | 673 | 0.873418 | 587.810127 | 2012.0 |
| 18 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4NuKTiNjwcX4ZG7TXEBnYh | Malcolm X | single | 2021-06-25 | 6Y2Sdnlpf2Lxb0lh4s81Fb | Malcolm X | 195440 | 1 | 1 | True | 27 | K-Boy, Kendrick Lamar\nTB ain't shit yap\nYa d... | 534 | 0.910781 | 486.356877 | 2021.0 |
| 19 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4XF4wNh0WHyrayqCYS8xY0 | Bitch, Don't Kill My Vibe (Remix) | single | 2013-01-01 | 5GmqAFOndnDJnIgDPUeiol | Bitch, Don’t Kill My Vibe - Remix | 306053 | 1 | 1 | False | 28 | I am a sinner\nWho's prob'ly gonna sin again\n... | 842 | 0.896181 | 754.584726 | 2013.0 |
| 20 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5moHeRF6YwQz9Mhc1SB0v0 | Two Presidents | single | 2013-12-03 | 2Xjvo0g3jPZB8QgTmRv5oU | Two Presidents | 230038 | 1 | 1 | True | 34 | (BraveStarr beats)\n\nTwo presidents and we bl... | 575 | 0.889465 | 511.442142 | 2013.0 |
| 21 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4alcGHjstaALJHHiljfy3H | DAMN. COLLECTORS EDITION. | album | 2017-12-08 | 1WonGCoO1sz7I4aD0HRbXy | BLOOD. | 118066 | 14 | 1 | True | 38 | Is it wickedness?\nIs it weakness?\nYou decide... | 172 | 0.741379 | 127.517241 | 2017.0 |
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1zi7xx7UVEFkmKfv06H8x0 | One Dance | 173986 | 12 | 1 | False | 92 | Baby, I like your style\n\nGrips on your waist... | 469 | 0.934066 | 438.076923 | 2016.0 |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 6LxSe8YmdPxy095Ux6znaQ | Headlines | 235986 | 3 | 1 | True | 89 | I might be too strung out on compliments\nOver... | 509 | 0.917969 | 467.246094 | 2011.0 |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 5mCPDVBb16L4XQwDdbRUpz | Passionfruit | 298940 | 3 | 1 | True | 89 | Hold on, hold on, fuck that\nFuck that shit\nH... | 228 | 0.861472 | 196.415584 | 2017.0 |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 6DCZcSspjsKoFjzjrWoCdn | God's Plan | 198973 | 5 | 1 | True | 87 | And they wishin' and wishin'\nAnd wishin' and ... | 349 | 0.864023 | 301.543909 | 2018.0 |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 3Q4gttWQ6hxqWOa3tHoTNi | Not You Too (feat. Chris Brown) | 269680 | 4 | 1 | True | 86 | First time in a long time\nHurtin' deeply insi... | 388 | 0.878553 | 340.878553 | 2020.0 |
| 5 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2u9S9JJ6hTZS3Vf22HOZKg | NOKIA | 241023 | 14 | 1 | True | 85 | Who's callin' my phone?\n (Who's callin' that ... | 784 | 0.943700 | 739.860590 | 2025.0 |
| 6 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 0wwPcA6wtMf6HUMpIRdeP7 | Hotline Bling | 267066 | 20 | 1 | False | 85 | You used to call me on my\nYou used to, you us... | 431 | 0.931663 | 401.546697 | 2016.0 |
| 7 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 0NUqi0ps17YpLUC3kgsZq0 | DIE TRYING | 195431 | 15 | 1 | True | 84 | Yeah\n\nGirl, I can't decide if I should stay ... | 411 | 0.895377 | 368.000000 | 2025.0 |
| 8 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 6n3HGiq4v35D6eFOSwqYuo | Teenage Fever | 219692 | 14 | 1 | True | 83 | Your heart is hard to carry after dark\nYou're... | 319 | 0.862500 | 275.137500 | 2017.0 |
| 9 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1C7KSXR2GVxknex6I4ANco | 9 | 255786 | 2 | 1 | True | 83 | Yeah, for the dogs dem, you know\nEverybody wa... | 518 | 0.896078 | 464.168627 | 2016.0 |
| 10 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2ZUFSbIkmFkGag000RWOpA | Nothing Was The Same (Deluxe) | album | 2013-01-01 | 6jdOi5U5LBzQrc4c1VT983 | Hold On, We're Going Home | 227880 | 8 | 1 | False | 82 | I got my eyes on you\nYou're everything that I... | 339 | 0.996923 | 337.956923 | 2013.0 |
| 11 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3cf4iSSKd8ffTncbtKljXw | Honestly, Nevermind | album | 2022-06-17 | 3F5CgOj3wFlRv51JsHbxhe | Jimmy Cooks (feat. 21 Savage) | 218364 | 14 | 1 | True | 82 | Desperté sacudido una vez más, para que sepas ... | 750 | 0.943704 | 707.777778 | 2022.0 |
| 12 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 3CA9pLiwRIGtUBiMjbZmRw | Nice For What | 210746 | 4 | 2 | True | 81 | I wanna know who mothafuckin' representin' in ... | 751 | 0.932091 | 700.000000 | 2018.0 |
| 13 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2kZoOj1n5vk9BuF0sih58M | SOMEBODY LOVES ME | 182767 | 16 | 1 | True | 81 | (All the girls)\nI know there's somebody who l... | 371 | 0.916442 | 340.000000 | 2025.0 |
| 14 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4TWJJZmgYm6tE6PzqpluQ0 | Which One | single | 2025-07-25 | 5FMyXeZ0reYloRTiCkPprT | Which One (feat. Central Cee) | 169134 | 1 | 1 | True | 81 | Meu cabelo tá bonito? (Yeah)\nMeus peitos tão ... | 566 | 0.937238 | 530.476987 | 2025.0 |
| 15 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1LShhEEKRT5MNPcO7jtYHh | So Far Gone | album | 2009 | 3QLjDkgLh9AOEHlhQtDuhs | Best I Ever Had | 257690 | 10 | 1 | True | 81 | You know, a lot of girls be\nThinkin' my songs... | 837 | 0.940334 | 787.059666 | 2009.0 |
| 16 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7dqpveMVcWgbzqYrOdkFTD | Care Package | album | 2019-08-02 | 4Wjhj0WjkyECccfHVIgaTq | Trust Issues | 281518 | 4 | 1 | True | 81 | Uh\nAw yeah, aw yeah\nCall up on drank and let... | 543 | 0.909256 | 493.725953 | 2019.0 |
| 17 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3SpBlxme9WbeQdI9kx7KAV | Certified Lover Boy | album | 2021-09-03 | 1PDP7mLiAMwhfmgIwzhOm2 | Yebba’s Heartbreak | 133762 | 11 | 1 | True | 81 | How much better can I show my love for you\nTh... | 127 | 0.803150 | 102.000000 | 2021.0 |
| 18 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 5H4mXWKcicuLKDn4Jy0sK7 | Time Flies | 192931 | 7 | 1 | True | 80 | Yeah, I'm outside in an AMG\nRight outside, TT... | 383 | 0.913146 | 349.734742 | 2020.0 |
| 19 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 4wVOKKEHUJxHCFFNUWDn0B | Chicago Freestyle (feat. Giveon) | 220487 | 3 | 1 | True | 80 | A las 2:30, cariño, ¿nos reuniremos en The Bea... | 580 | 0.953347 | 552.941176 | 2020.0 |
| 20 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0bNfrGST1xSPZ3V3g5jjHT | What Did I Miss? | single | 2025-07-05 | 57GsLpRtEtrzcPGPop20rS | What Did I Miss? | 194324 | 1 | 1 | True | 80 | I don't give a fuck if you love me, I don't gi... | 466 | 0.892704 | 416.000000 | 2025.0 |
| 21 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 124NFj84ppZ5pAxTuVQYCQ | Take Care | 277386 | 5 | 1 | True | 80 | I know you've been hurt by someone else\nI can... | 486 | 0.902490 | 438.609959 | 2011.0 |
| 22 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 047fCsbO4NdmwCBn8pcUXl | Marvins Room | 347226 | 6 | 1 | True | 80 | Hello?\nYeah, I just walked in\nYeah, I'm good... | 596 | 0.932432 | 555.729730 | 2011.0 |
| 23 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 0jF2AdhsalO1L7KkhK4LE5 | Practice | 237733 | 17 | 1 | True | 80 | Yeah, Cash Money shit, Cash Money shit\n\nI ca... | 579 | 0.954783 | 552.819130 | 2011.0 |
| 24 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 2Gnsof1hvZzjE1xdLRpjtf | Over My Dead Body | 272573 | 1 | 1 | True | 80 | How I'm feeling, it doesn't matter\n'Cause you... | 608 | 0.911475 | 554.177049 | 2011.0 |
| 25 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4czdORdCWP9umpbhFXK2fW | For All The Dogs | album | 2023-10-06 | 1yeB8MUNeLo9Ek1UEpsyz6 | Rich Baby Daddy (feat. Sexyy Red & SZA) | 319191 | 20 | 1 | True | 80 | ¿Se terminó? Podría ser otro\n¿Se terminó? Pod... | 811 | 0.960729 | 779.151473 | 2023.0 |
| 26 | Drake | 3TVXtAsR1Inumwj472S9r4 | 5LuoozUhs2pl3glZeAJl89 | Scary Hours 2 | single | 2021-03-05 | 65OVbaJR5O1RmwOQx0875b | Wants and Needs (feat. Lil Baby) | 192956 | 2 | 1 | True | 79 | One Take\nDD\n\nPainted with purple to match w... | 514 | 0.857977 | 441.000000 | 2021.0 |
| 27 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 3cjF2OFRmip8spwZYQRKxP | Feel No Ways | 240653 | 4 | 1 | True | 79 | I should be downtown, whipping on the way to y... | 340 | 0.955882 | 325.000000 | 2016.0 |
| 28 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 2KvHC9z14GSl4YpkNMX384 | Do Not Disturb | 283550 | 22 | 1 | True | 79 | Silence keeps cloudin' me\nHand on my heart\nA... | 656 | 0.882622 | 579.000000 | 2017.0 |
| 29 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0v4UlHEDcUBbV9kM3TX4bj | Live For | single | 2013-01-01 | 4v1wpe6QTvLN7bu3gM6tRh | Live For | 222720 | 1 | 1 | False | 29 | Getting sober for a day got me feeling too low... | 567 | 0.899115 | 509.798230 | 2013.0 |
| 30 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True | 34 | I said, "Tell me what's really goin' on"\nDriz... | 857 | 0.904707 | 775.334099 | 2010.0 |
| 31 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4OQEGCbts7MiJm8wfwC9BX | LOYAL (feat. Drake) | single | 2019-11-22 | 13NAmCCRYxRcr2NEtiWGa8 | LOYAL (feat. Drake) | 197973 | 1 | 1 | False | 37 | True, you're a star in my head\nYou, nuh need ... | 342 | 0.991228 | 339.000000 | 2019.0 |
| 32 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7iLdPmU6eUTwKsYifBQ6zb | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | single | 2020-08-06 | 6R1eAccx1fnh8P5HhFzn84 | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | 259651 | 1 | 1 | False | 38 | Your body drive mi crazy-y-y\nYour body need a... | 620 | 0.934609 | 579.457735 | 2020.0 |
| 33 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4v2wkI8xYxp0gTtSMwbRoj | She Will | single | 2011-08-16 | 0WPbCs75tnRVM1Wag5PLeW | She Will | 307360 | 1 | 1 | True | 39 | Young Money\nYeah, four\nAhem\n\nI tell her, "... | 824 | 0.929697 | 766.070303 | 2011.0 |
| 34 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4P9NQ88JRt2r39QlsevM1n | Make Me Proud | single | 2011-01-01 | 3psB8LAWdw813k9ZmLvjmZ | Make Me Proud | 220053 | 1 | 1 | True | 42 | I like a woman with a future and a past\nA lit... | 685 | 0.909091 | 622.727273 | 2011.0 |
yearly = (combined.groupby(["artist", "release_year"])["rhyme_density"].mean().reset_index())
sb.lineplot(data=yearly, x="release_year", y="rhyme_density", hue="artist", marker="o")
plt.title("Average Rhyme Density Over Time")
plt.xlabel("Release Year")
plt.ylabel("Rhyme Density")
plt.show()
combined
| artist | artist_id | album_id | album_name | album_type | release_date | track_id | track_name | duration_ms | track_number | disc_number | explicit | popularity | lyrics | word_count | rhyme_density | complexity | release_year | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5JjnoGJyOxfSZUZtk2rRwZ | Not Like Us | single | 2024-05-04 | 6AI3ezQ4o3HUoP6Dhudph3 | Not Like Us | 274192 | 1 | 1 | True | 89 | Psst, I see dead people\n(\nMustard on the bea... | 907 | 0.897577 | 814.102423 | 2024.0 |
| 1 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 7KXjTSCq5nL1LoYtL7XAwS | HUMBLE. | 177000 | 8 | 1 | True | 86 | Nobody pray for me\nIt been that day for me\nW... | 598 | 0.892562 | 533.752066 | 2017.0 |
| 2 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0aB0v4027ukVziUGwVGYpG | tv off (feat. lefty gunplay) | 220690 | 7 | 1 | True | 86 | All I ever wanted was a black Grand National\n... | 770 | 0.929504 | 715.718016 | 2024.0 |
| 3 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6PGoSes0D9eUDeeAafB2As | LOVE. FEAT. ZACARI. | 213400 | 10 | 1 | False | 85 | Maldición, amor o lujuria\nMaldición, todos no... | 488 | 0.947242 | 462.254197 | 2017.0 |
| 4 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 2XPrwlaAHHXnJzP9tBcIzH | Swimming Pools (Drank) | single | 2012-01-01 | 6REbwUNlppTfcnV4d4ZoZi | Swimming Pools (Drank) | 247800 | 1 | 1 | True | 84 | Pour up (Drank), head shot (Drank)\nSit down (... | 859 | 0.928654 | 797.713464 | 2012.0 |
| 5 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6IZvVAP7VPPnsGX6bvgkqg | PRIDE. | 275253 | 7 | 1 | True | 82 | Love's gonna get you killed\nBut pride’s gonna... | 504 | 0.882353 | 444.705882 | 2017.0 |
| 6 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6HZILIRieu8S0iqY8kIKhj | DNA. | 185946 | 2 | 1 | True | 81 | I got, I got, I got, I got—\nLoyalty, got roya... | 671 | 0.875367 | 587.370968 | 2017.0 |
| 7 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 6PBZN8cbwkqm1ERj2BGXJ1 | good kid, m.A.A.d city | album | 2012 | 2HbKqm4o0w5wEeEFXm2sD4 | Money Trees | 386906 | 5 | 1 | True | 81 | Uh, me and my niggas tryna get it, ya bish (Ya... | 1153 | 0.947232 | 1092.158304 | 2012.0 |
| 8 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 0nj9Bq5sHDiTxSHunhgkFb | squabble up | 157992 | 2 | 1 | True | 81 | God knows\nI am reincarnated\nI was stargazin'... | 536 | 0.872340 | 467.574468 | 2024.0 |
| 9 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 3iVcZ5G6tvkXZkZKlMpIUs | Alright | 219333 | 7 | 1 | True | 81 | Alls my life, I has to fight, nigga\nAlls my l... | 705 | 0.929379 | 655.211864 | 2015.0 |
| 10 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4eLPsYPBmXABThSJ821sqY | DAMN. | album | 2017-04-14 | 6SwRhMLwNqEi6alNPVG00n | LOYALTY. FEAT. RIHANNA. | 227360 | 6 | 1 | True | 78 | Dije que estoy consumido por la droga y que es... | 591 | 0.954380 | 564.038321 | 2017.0 |
| 11 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 6BU1RZexmvJcBjgagVVt3M | Count Me Out | 283642 | 1 | 2 | True | 77 | We may not know which way to go on this dark r... | 956 | 0.925966 | 885.223176 | 2022.0 |
| 12 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 0hvT3yIEysuuvkK73vgdcW | GNX | album | 2024-11-22 | 2Uts1QFB4u2YNIMiqcb4de | peekaboo (feat. azchike) | 155917 | 9 | 1 | True | 77 | Sana la mano que ayuda\nA tu semejante hombre,... | 602 | 0.926357 | 557.666667 | 2024.0 |
| 13 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 79ONNoS4M9tfIA1mYLBYVX | Mr. Morale & The Big Steppers | album | 2022-05-13 | 5Gt9bxniM1SxN61yRzRhXL | United In Grief | 255377 | 1 | 1 | True | 76 | I hope \nyou find some\n peace of mind in this... | 646 | 0.885978 | 572.342065 | 2022.0 |
| 14 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 32bR4LcEc1PvJEhaKoo4ZN | euphoria | single | 2024-04-30 | 77DRzu7ERs0TX3roZcre7Q | euphoria | 383639 | 1 | 1 | True | 76 | eurt s'em tuoba yas yeht gnihtyrevE\nEuphoria... | 1441 | 0.924138 | 1331.682759 | 2024.0 |
| 15 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 7ycBtnsMtyVbbwTfJwRjSP | To Pimp A Butterfly | album | 2015-03-16 | 0N3W5peJUQtI4eyR6GJT5O | King Kunta | 234693 | 3 | 1 | True | 75 | I got a bone to pick\nI don't want you monkey-... | 714 | 0.928471 | 662.928471 | 2015.0 |
| 16 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3DGQ1iZ9XKUQxAUWjfC34w | good kid, m.A.A.d city (Deluxe) | album | 2012 | 2P3SLxeQHPqh8qKB6gtJY2 | Poetic Justice | 300160 | 6 | 1 | True | 75 | Every second, every minute, man, I swear that ... | 981 | 0.942623 | 924.713115 | 2012.0 |
| 17 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 3qHsYfN7ua1WGhQn1wquIn | Push Thru (feat. Kendrick Lamar and Curren$y) | single | 2012 | 1kDctACNpFgSB7lZXPrazv | Push Thru | 301240 | 2 | 1 | False | 16 | I rise as day breaks\nClouds hide the sun’s ra... | 673 | 0.873418 | 587.810127 | 2012.0 |
| 18 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4NuKTiNjwcX4ZG7TXEBnYh | Malcolm X | single | 2021-06-25 | 6Y2Sdnlpf2Lxb0lh4s81Fb | Malcolm X | 195440 | 1 | 1 | True | 27 | K-Boy, Kendrick Lamar\nTB ain't shit yap\nYa d... | 534 | 0.910781 | 486.356877 | 2021.0 |
| 19 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4XF4wNh0WHyrayqCYS8xY0 | Bitch, Don't Kill My Vibe (Remix) | single | 2013-01-01 | 5GmqAFOndnDJnIgDPUeiol | Bitch, Don’t Kill My Vibe - Remix | 306053 | 1 | 1 | False | 28 | I am a sinner\nWho's prob'ly gonna sin again\n... | 842 | 0.896181 | 754.584726 | 2013.0 |
| 20 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 5moHeRF6YwQz9Mhc1SB0v0 | Two Presidents | single | 2013-12-03 | 2Xjvo0g3jPZB8QgTmRv5oU | Two Presidents | 230038 | 1 | 1 | True | 34 | (BraveStarr beats)\n\nTwo presidents and we bl... | 575 | 0.889465 | 511.442142 | 2013.0 |
| 21 | Kendrick Lamar | 2YZyLoL8N0Wb9xBt1NhZWg | 4alcGHjstaALJHHiljfy3H | DAMN. COLLECTORS EDITION. | album | 2017-12-08 | 1WonGCoO1sz7I4aD0HRbXy | BLOOD. | 118066 | 14 | 1 | True | 38 | Is it wickedness?\nIs it weakness?\nYou decide... | 172 | 0.741379 | 127.517241 | 2017.0 |
| 0 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1zi7xx7UVEFkmKfv06H8x0 | One Dance | 173986 | 12 | 1 | False | 92 | Baby, I like your style\n\nGrips on your waist... | 469 | 0.934066 | 438.076923 | 2016.0 |
| 1 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 6LxSe8YmdPxy095Ux6znaQ | Headlines | 235986 | 3 | 1 | True | 89 | I might be too strung out on compliments\nOver... | 509 | 0.917969 | 467.246094 | 2011.0 |
| 2 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 5mCPDVBb16L4XQwDdbRUpz | Passionfruit | 298940 | 3 | 1 | True | 89 | Hold on, hold on, fuck that\nFuck that shit\nH... | 228 | 0.861472 | 196.415584 | 2017.0 |
| 3 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 6DCZcSspjsKoFjzjrWoCdn | God's Plan | 198973 | 5 | 1 | True | 87 | And they wishin' and wishin'\nAnd wishin' and ... | 349 | 0.864023 | 301.543909 | 2018.0 |
| 4 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 3Q4gttWQ6hxqWOa3tHoTNi | Not You Too (feat. Chris Brown) | 269680 | 4 | 1 | True | 86 | First time in a long time\nHurtin' deeply insi... | 388 | 0.878553 | 340.878553 | 2020.0 |
| 5 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2u9S9JJ6hTZS3Vf22HOZKg | NOKIA | 241023 | 14 | 1 | True | 85 | Who's callin' my phone?\n (Who's callin' that ... | 784 | 0.943700 | 739.860590 | 2025.0 |
| 6 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 0wwPcA6wtMf6HUMpIRdeP7 | Hotline Bling | 267066 | 20 | 1 | False | 85 | You used to call me on my\nYou used to, you us... | 431 | 0.931663 | 401.546697 | 2016.0 |
| 7 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 0NUqi0ps17YpLUC3kgsZq0 | DIE TRYING | 195431 | 15 | 1 | True | 84 | Yeah\n\nGirl, I can't decide if I should stay ... | 411 | 0.895377 | 368.000000 | 2025.0 |
| 8 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 6n3HGiq4v35D6eFOSwqYuo | Teenage Fever | 219692 | 14 | 1 | True | 83 | Your heart is hard to carry after dark\nYou're... | 319 | 0.862500 | 275.137500 | 2017.0 |
| 9 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 1C7KSXR2GVxknex6I4ANco | 9 | 255786 | 2 | 1 | True | 83 | Yeah, for the dogs dem, you know\nEverybody wa... | 518 | 0.896078 | 464.168627 | 2016.0 |
| 10 | Drake | 3TVXtAsR1Inumwj472S9r4 | 2ZUFSbIkmFkGag000RWOpA | Nothing Was The Same (Deluxe) | album | 2013-01-01 | 6jdOi5U5LBzQrc4c1VT983 | Hold On, We're Going Home | 227880 | 8 | 1 | False | 82 | I got my eyes on you\nYou're everything that I... | 339 | 0.996923 | 337.956923 | 2013.0 |
| 11 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3cf4iSSKd8ffTncbtKljXw | Honestly, Nevermind | album | 2022-06-17 | 3F5CgOj3wFlRv51JsHbxhe | Jimmy Cooks (feat. 21 Savage) | 218364 | 14 | 1 | True | 82 | Desperté sacudido una vez más, para que sepas ... | 750 | 0.943704 | 707.777778 | 2022.0 |
| 12 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1ATL5GLyefJaxhQzSPVrLX | Scorpion | album | 2018-06-29 | 3CA9pLiwRIGtUBiMjbZmRw | Nice For What | 210746 | 4 | 2 | True | 81 | I wanna know who mothafuckin' representin' in ... | 751 | 0.932091 | 700.000000 | 2018.0 |
| 13 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6Rl6YoCarF2GHPSQmmFjuR | $ome $exy $ongs 4 U | album | 2025-02-14 | 2kZoOj1n5vk9BuF0sih58M | SOMEBODY LOVES ME | 182767 | 16 | 1 | True | 81 | (All the girls)\nI know there's somebody who l... | 371 | 0.916442 | 340.000000 | 2025.0 |
| 14 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4TWJJZmgYm6tE6PzqpluQ0 | Which One | single | 2025-07-25 | 5FMyXeZ0reYloRTiCkPprT | Which One (feat. Central Cee) | 169134 | 1 | 1 | True | 81 | Meu cabelo tá bonito? (Yeah)\nMeus peitos tão ... | 566 | 0.937238 | 530.476987 | 2025.0 |
| 15 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1LShhEEKRT5MNPcO7jtYHh | So Far Gone | album | 2009 | 3QLjDkgLh9AOEHlhQtDuhs | Best I Ever Had | 257690 | 10 | 1 | True | 81 | You know, a lot of girls be\nThinkin' my songs... | 837 | 0.940334 | 787.059666 | 2009.0 |
| 16 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7dqpveMVcWgbzqYrOdkFTD | Care Package | album | 2019-08-02 | 4Wjhj0WjkyECccfHVIgaTq | Trust Issues | 281518 | 4 | 1 | True | 81 | Uh\nAw yeah, aw yeah\nCall up on drank and let... | 543 | 0.909256 | 493.725953 | 2019.0 |
| 17 | Drake | 3TVXtAsR1Inumwj472S9r4 | 3SpBlxme9WbeQdI9kx7KAV | Certified Lover Boy | album | 2021-09-03 | 1PDP7mLiAMwhfmgIwzhOm2 | Yebba’s Heartbreak | 133762 | 11 | 1 | True | 81 | How much better can I show my love for you\nTh... | 127 | 0.803150 | 102.000000 | 2021.0 |
| 18 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 5H4mXWKcicuLKDn4Jy0sK7 | Time Flies | 192931 | 7 | 1 | True | 80 | Yeah, I'm outside in an AMG\nRight outside, TT... | 383 | 0.913146 | 349.734742 | 2020.0 |
| 19 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6OQ9gBfg5EXeNAEwGSs6jK | Dark Lane Demo Tapes | album | 2020-05-01 | 4wVOKKEHUJxHCFFNUWDn0B | Chicago Freestyle (feat. Giveon) | 220487 | 3 | 1 | True | 80 | A las 2:30, cariño, ¿nos reuniremos en The Bea... | 580 | 0.953347 | 552.941176 | 2020.0 |
| 20 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0bNfrGST1xSPZ3V3g5jjHT | What Did I Miss? | single | 2025-07-05 | 57GsLpRtEtrzcPGPop20rS | What Did I Miss? | 194324 | 1 | 1 | True | 80 | I don't give a fuck if you love me, I don't gi... | 466 | 0.892704 | 416.000000 | 2025.0 |
| 21 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 124NFj84ppZ5pAxTuVQYCQ | Take Care | 277386 | 5 | 1 | True | 80 | I know you've been hurt by someone else\nI can... | 486 | 0.902490 | 438.609959 | 2011.0 |
| 22 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 047fCsbO4NdmwCBn8pcUXl | Marvins Room | 347226 | 6 | 1 | True | 80 | Hello?\nYeah, I just walked in\nYeah, I'm good... | 596 | 0.932432 | 555.729730 | 2011.0 |
| 23 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 0jF2AdhsalO1L7KkhK4LE5 | Practice | 237733 | 17 | 1 | True | 80 | Yeah, Cash Money shit, Cash Money shit\n\nI ca... | 579 | 0.954783 | 552.819130 | 2011.0 |
| 24 | Drake | 3TVXtAsR1Inumwj472S9r4 | 6X1x82kppWZmDzlXXK3y3q | Take Care (Deluxe) | album | 2011-11-15 | 2Gnsof1hvZzjE1xdLRpjtf | Over My Dead Body | 272573 | 1 | 1 | True | 80 | How I'm feeling, it doesn't matter\n'Cause you... | 608 | 0.911475 | 554.177049 | 2011.0 |
| 25 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4czdORdCWP9umpbhFXK2fW | For All The Dogs | album | 2023-10-06 | 1yeB8MUNeLo9Ek1UEpsyz6 | Rich Baby Daddy (feat. Sexyy Red & SZA) | 319191 | 20 | 1 | True | 80 | ¿Se terminó? Podría ser otro\n¿Se terminó? Pod... | 811 | 0.960729 | 779.151473 | 2023.0 |
| 26 | Drake | 3TVXtAsR1Inumwj472S9r4 | 5LuoozUhs2pl3glZeAJl89 | Scary Hours 2 | single | 2021-03-05 | 65OVbaJR5O1RmwOQx0875b | Wants and Needs (feat. Lil Baby) | 192956 | 2 | 1 | True | 79 | One Take\nDD\n\nPainted with purple to match w... | 514 | 0.857977 | 441.000000 | 2021.0 |
| 27 | Drake | 3TVXtAsR1Inumwj472S9r4 | 40GMAhriYJRO1rsY4YdrZb | Views | album | 2016-05-06 | 3cjF2OFRmip8spwZYQRKxP | Feel No Ways | 240653 | 4 | 1 | True | 79 | I should be downtown, whipping on the way to y... | 340 | 0.955882 | 325.000000 | 2016.0 |
| 28 | Drake | 3TVXtAsR1Inumwj472S9r4 | 1lXY618HWkwYKJWBRYR4MK | More Life | album | 2017-03-18 | 2KvHC9z14GSl4YpkNMX384 | Do Not Disturb | 283550 | 22 | 1 | True | 79 | Silence keeps cloudin' me\nHand on my heart\nA... | 656 | 0.882622 | 579.000000 | 2017.0 |
| 29 | Drake | 3TVXtAsR1Inumwj472S9r4 | 0v4UlHEDcUBbV9kM3TX4bj | Live For | single | 2013-01-01 | 4v1wpe6QTvLN7bu3gM6tRh | Live For | 222720 | 1 | 1 | False | 29 | Getting sober for a day got me feeling too low... | 567 | 0.899115 | 509.798230 | 2013.0 |
| 30 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4VVBDjcpEc8vFWMlQfnmHX | Miss Me | single | 2010-01-01 | 3h5boR23744b1CCE54hN3k | Miss Me | 305786 | 1 | 1 | True | 34 | I said, "Tell me what's really goin' on"\nDriz... | 857 | 0.904707 | 775.334099 | 2010.0 |
| 31 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4OQEGCbts7MiJm8wfwC9BX | LOYAL (feat. Drake) | single | 2019-11-22 | 13NAmCCRYxRcr2NEtiWGa8 | LOYAL (feat. Drake) | 197973 | 1 | 1 | False | 37 | True, you're a star in my head\nYou, nuh need ... | 342 | 0.991228 | 339.000000 | 2019.0 |
| 32 | Drake | 3TVXtAsR1Inumwj472S9r4 | 7iLdPmU6eUTwKsYifBQ6zb | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | single | 2020-08-06 | 6R1eAccx1fnh8P5HhFzn84 | TWIST & TURN (feat. Drake & PARTYNEXTDOOR) | 259651 | 1 | 1 | False | 38 | Your body drive mi crazy-y-y\nYour body need a... | 620 | 0.934609 | 579.457735 | 2020.0 |
| 33 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4v2wkI8xYxp0gTtSMwbRoj | She Will | single | 2011-08-16 | 0WPbCs75tnRVM1Wag5PLeW | She Will | 307360 | 1 | 1 | True | 39 | Young Money\nYeah, four\nAhem\n\nI tell her, "... | 824 | 0.929697 | 766.070303 | 2011.0 |
| 34 | Drake | 3TVXtAsR1Inumwj472S9r4 | 4P9NQ88JRt2r39QlsevM1n | Make Me Proud | single | 2011-01-01 | 3psB8LAWdw813k9ZmLvjmZ | Make Me Proud | 220053 | 1 | 1 | True | 42 | I like a woman with a future and a past\nA lit... | 685 | 0.909091 | 622.727273 | 2011.0 |
Both artists maintain pretty high levels of lyrical complexity throughout their careers. Drake’s rhyme density fluctuates more, suggesting variation across releases, while Kendrick Lamar’s appears more stable and slightly trends upward, reflecting more lyrical refinement over time.
combined['release_year'] = combined['release_year'].astype(int)
project2ReleaseYears = combined[['track_name', 'artist', 'release_year']]
project2ReleaseYears.to_csv('project2ReleaseYears.csv', index=False)