힙합/알엔비 챠트 1위곡 데이터분석

Jinyoung Kim
8 min readAug 12, 2019
from billboard.com

빌보드의 힙합/알엔비 챠트 1위 곡의 아티스트, 유지기간 등의 데이터가 궁금하여 확인해 본다. 요즘 파이썬을 파고 있어서 파이썬으로 진행하기로 결정.

우선은 날짜별 빌보드 힙합/알엔비 챠트 데이터가 있어야 한다. 빌보드에서 제공하는 공식 API는 있었는데 현재는 없어진 것 같다. 구글링을 해보니 billboard.py라는 패키지가 있음. 페이지의 설명이 그리 친절하진 않다. 초보자가 보기엔 적절하지 않아서 레퍼런스 중에 하나가 문법 예시가 비교적 잘 나와있어서 참고.

2010년부터 현재까지 “매주 일요일”의 1위 곡을 기준으로 비교하기로 결정. 매주 일요일은 어떻게 구분할까. Calendar 패키지를 이용해서 간단하게(결과적으로 코드를 보면 간단하지만 삽질 엄청함) 각 일요일의 날짜 데이터(‘2010-XX-XX’)뽑아내고 반복문을 통해 해당 날짜의 1곡 아티스트와 곡명까지 딕셔너리에 담는다. 해당 데이터를 csv로 export하여 엑셀로 데이터 확인 예정. (*참고 : 빌보드는 매주 토요일 기준으로 차트를 운영하는 것 같다)

Pandas라는 데이터관련 패키지가 검색을 하면 무조건 나올정도로 데이터관련 필수 패키지 인듯 하다. 우선은 기본 내장함수로 처리하려고 했으나 csv export는 pandas를 사용하면 훨씬 더 편한듯 하여 pandas를 사용. 생각보다 복잡한 개념은 아니고, 데이터 자체도 “날짜-곡명-아티스트”정도의 간단한 구조로 된 거라 금방 적용을 했다.

코드는 대략 아래와 같다. (반복적으로 사용할 목적이 아니고 개발자가 아니므로 코드가 러프하다)

import billboard
import calendar
import csv
from datetime import date, timedelta
from pandas import DataFrame,Series
# Get chart date
year = [2010,2011,2012,2013,2014,2015,2016,2017,2018,2019]
for i in year:
year = i
c = calendar.TextCalendar(calendar.SUNDAY)
for m in range(1,13):
for x in c.itermonthdays(year,m):
if x != 0: #calendar constructs months with leading zeros (days belongng to the previous month)
day = date(year,m,x)
if day.weekday() == 1 or day.weekday() == 3: #if its Tuesday or Thursday
# print ("%s-%s-%s" % (year,m,x))
chart = billboard.ChartData('r-b-hip-hop-songs', date=day)
day_edit = ("%s-%s-%s" % (year,m,x))
# Get No.1 song
song = chart[0]
song_title = song.title
song_artist = song.artist
#result = [day_edit,song_artist, song_title]
result = {'Date' : [day_edit], 'Artist' : [song_artist] , 'Song' : [song_title] }df = DataFrame(result)
#print(df)
df.to_csv("chart.csv", mode='a', header=False)

데이터양이 꽤 되니까 스크립트 파일 실행하는데 시간이 좀 걸린다.

우선은 1위 한 곡의 아티스트를 기준으로 분류한 결과다.

피쳐링 포함

(예상한대로) Drake가 압도적으로 많다. 피쳐링 한 것 까지 합치면 더 늘어날 것으로 보인다.

다음은 피처링을 제외한 데이터

피쳐링 미포함
(*참고 : 업로드를 하면 자동으로 이미지가 리사이징 되면서 화질이 안좋아진다. 해결중)

Drake가 약 9년7개월치 토탈 약 1000주치의 데이터중 약 14% 기간동안 1위한 셈이다. 2위는 Rihanna로 1위 점유율은 약 5% 정도. 2위와 점유율이 약 3배 가까이 되므로 Drake의 압도적인 독식이라고 볼 수 있다.

피처링을 제외하고 Lead Artist를 기준으로 분류를 하니 피쳐링 포함한 차트 상위권에 없던 Chris Brown이 눈에 띈다. 힙합 아티스트들과의 피쳐링이 많아 분산이 되었는데 Lead Artist를 기준으로 분류를 하면서 상위권으로 올라왔다. DJ Khaled는 직접 퍼포먼스를 하는 아티스트가 아니라 모든 곡에 피쳐링이 있다. 피쳐링 미포함 Leas Artist에서는 상위권에 보인다.

최근에 빌보드 HOT 100챠트 17주 연속1위로 새로운 연속 1위 기록은 새운 Lil Nas X는 Old Town Load 단 1곡으로 36주간 힙합/알엔비 챠트 1위를 기록중이다.

그럼 노래를 기준으로도 분류해보자.

노래별 1위 횟수

힙합/알엔비 챠트 1위곡이 Hot 100 챠트의 1위곡이 된 경우가 얼마나 많을지가 궁금해 확인해 보았다. 마찬가지로 2010년 1월부터 현재까지 Hot 100차트 1위곡 데이터를 추출한 다음. 힙합/알엔비 챠트 1위 데이터와 병합해서 확인했다.

연속으로 1위를 한 중복데이터를 제외하고 힙합/알엔비 차트 1위를 기록한 유니크한 곡수는 80곡이었다. 총 103개월의 기간동안 80곡이 1위를 했으니 1곡당 평균 약 1.3개월 정도 1위를 유지한 셈이다.

총 80곡중 Hot 100 챠트 1위를 기록한 곡은 몇 곡이나 될까. 총 32곡이다. 힙합/알엔비 챠트 1위곡 중 40%의 곡이 Hot 100 차트 1위를 한 것이다. 다른장르 데이터도 확인을 해봐야 겠지만 이 정도면 상당히 높은 수치라고 볼 수 있을것 같다.

Hot 100과 힙합/알엔비 차트 모두 1위를 한 곡들 리스트

Hot 100과 힙합/알엔비 차트에서 모두 1위를 한 곡들의 리스트다. 눈에 들어오는 데이터가 하나 있는데 전체 곡중 약 30%정도는 힙합/알엔비 차트 1위를 하고 시간이 지난후 Hot 100 차트 1위가 된 것이다. 가장 기간이 오래걸린 The Weeknd의 Starboy의 경우 힙합/알엔비 차트 1위를 하고 약 84일 후 Hot 100차트 1위를 했다.

Lead Artist가 아닌 피쳐링 아티스트로 1위를 한 아티스트들의 데이터도 한번 보자.

피쳐링 1위 아티스트

Drake가 이 부분도 1위다. 피쳐링이 큰 비중을 차지하고 콜라보가 무척 많은 힙합/알엔비 장르에서 차트에서 영향력 있는 Drake가 피쳐링을 하면 1위할 확률이 높아지는 것은 필연적인 결과라고 볼수 있을것 같다. Rihanna 역시 이 부분 상위에 들어가 있는데, 본인외 다른 아티스트와 함께한 경우는 제외된 데이터이므로 포함을 하면 두 아티스트 모두 더 많은 횟수를 기록하게 된다. Drake는 총 6명의 다른 Lead Artist와 1위를 했다.

정리

  • 힙합/알엔비 차트 1위 곡의 약 40%정도는 Hot 100 차트 1위도 하였다.
  • 2010년~2019년까지 차트에서 가장 강세를 보인 뮤지션은 Drake(전체 103개월 중 약 14% 기간동안 1위 점유)와 Rihanna(차트 1위 점유율 약 5%)
  • 힙합/알엔비 차트 1위곡은 약 1.2개월 정도 1위를 유지한다. (최장기간 1위는 36주간 1위를 기록중인 Lil Nas X의 Old Town Load, 최소 기간은 2주 (1주만 1위한 경우는 없음)
  • 1위 곡 아티스트의 성별 비율은 남성:여성이 약 75%:25% (본문에 관련 내용없음)
  • raw 데이터를 가공한 스프레드시트는 여기에서 확인가능

--

--

Jinyoung Kim

Founder of YOLO Inc (R.I.P), Product Manager/Growth Hacker. I Love Hiphop/R&B, Museum.