반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

오늘은 아래와 같이 요즘 조회수가 잘 나오는 유튜브 채널 Top20개의 그래프를 얻는 법에 대해 공부해 보겠습니다.

 

 


 

1. Kaggle에서 데이터 가져오기

 

구글이나 네이버에서 kaggle을 검색하여 접속해줍니다.

 

그리고 화명 상단의 검색창에서 youtube를 검색한 후, 좌측의 Today 옵션을 클릭해서 가장 상단의 자료를 클릭해줍니다.

 

 

가장 상단의 YouTube Trending Video Dataset (updated daily)를 클릭하셨다면 아래와 같이 데이터를 받을 수 있는 화면이 뜨는데 우리는 KR_youtube_trendig_data.csv 자료를 클릭해서 다운로드 해주겠습니다.

 

링크. https://www.kaggle.com/rsrishav/youtube-trending-video-dataset?select=KR_youtube_trending_data.csv

 

 

<여기서 잠깐>

 

Kaggle이란?

 

Kaggle은 세계에서 가장 큰 데이터 사이언스 커뮤니티입니다.

 

다양한 종류의 데이터 셋(Datasets)을 제공받을수 있을 뿐만 아니라, 여러 경연들(Competitons)에 참여하여 자신의 데이터 분석 실력을 검증해볼 수도 있습니다. 경연에서 우수한 성적을 거두어 높은 랭킹에 이름을 알림으로써 PR용도로 활용할 수 있답니다.

 

기업 및 단체에서 데이터와 해결과제를 등록하면, 데이터 과학자들이 이를 해결하는 모델을 개발하고 경쟁해서 상금도 거머쥘 수 있습니다. 교육용 예제 데이터가 아닌 실제 비즈니스 현장에서 나온 데이터이기에 실전 감각도 기를 수 있습니다.

 

또한 경쟁자들의 코드 혹은 그들이 진행했던 프로젝트와 코드를 공유하는 곳도 따로 있어서, 그걸 따라하면서 실력을 키워볼 수도 있는 너무나도 유용한 사이트입니다.

 

 

 

2. 데이터 전처리

 

데이터를 다운로드 받았다면 프로젝트 폴더에 csv 파일을 위치시켜준 후, 적당한 제목으로 주피터 노트북 혹은 vscode의 주피터 노트북 연동을 통해 ipynb 파일을 하나 생성해줍니다.

 

1) 관련 패키지 import

 

가장 먼저해줄 것은 관련 패키지를 불러오는 것입니다.

 

import pandas as pd
import numpy as numpy
import seaborn as sns
import matplotlib.pyplot as plt
import os

 

2) Dataset 판다스로 불러오기

 

다음으로는 csv 형식의 데이터를 가져와보겠습니다.

 

KRvideo = pd.read_csv("KR_youtube_trending_data.csv")

 

만약 에러가 출력되신다면 아래와 같은 옵션을 추가해보세요.

 

KRvideo = pd.read_csv("KR_youtube_trending_data.csv", engine="python", error_bad_lines="false")

 

 

3) 불러온 데이터 살펴보기

 

데이터가 에러 없이 잘 불러와졌다면 데이터를 조금 살펴보겠습니다.

 

데이터 프레임 형태 파악

 

# 데이터 프레임 형태 파악 (상위 5개 행 x 전체 열 출력)
KRvideo.head()

 

열(column)이 많아서 스크롤을 넘기면서 무엇을 데이터 분석에 사용할지 고르는게 좋을 것 같습니다.

저는 영상제목(title), 채널명(channelTitle), 조회수(view_count)만 사용할 예정입니다.

 

 

데이터 전체 정보 요약

 

# 데이터 프레임의 전체 정보 요약
KRvideo.info()

 

<출력 결과>

 

총 65754 x 16 사이즈의 데이터 프레임이며, 위와 같은 16 종류의 데이터를 갖는 것을 알 수 있습니다.

 

 

4) 데이터 전처리

 

지금부터 데이터를 조금씩 입맛에 맞게 골라내고 다듬어 보겠습니다.

df = KRvideo[["title", "channelTitle", "view_count"]]
df

 

 

조회수 순 내림차순 정렬

 

지금은 조회수 순이 아닌 가장 처음의 데이터 셋에 저장된 순서이므로 내림차순(큰 것이 위에 오도록)으로 정렬해주겠습니다.

 

df_sorted = df.sort_values(by='view_count', ascending=False)
df_sorted

 

 

역시 글로벌 스타인 방탄소년단의 영상이 가장 핫하네요! 하지만 이상한게 보이시죠? 바로 데이터들이 중복된다는 것입니다.

 

그 이유는 우리가 사용하는 데이터 셋이 매일 최대 200개의 인기 급상승 동영상의 정보를 계속 추가하기 때문입니다.

 

인기 급상승 동영상으로 선정되는 알고리즘을 잘 모르지만 기존 조회수 대비 조회수가 짧은 시간 내에 급격히 증가하면 선정되므로, 이미 인기있어진 동영상은 어느 순간부터 최신의 view_count가 반영되지 않는 듯 하네요.

 

2021년 7월 17일 기준 4.5억회이지만 위의 데이터 셋에는 2.9억회 정도까지만 반영된 것을 보면 말이죠!

 

이런 정황으로 보았을 때, 이 데이터 셋으로는 어떤 채널의 조회수가 가장 많이 나오는지 보다는 어떤 채널의 동영상들이 급격히 인기를 얻었는지를 알 수 있지 않나 생각합니다.

 

 

중복 제거

 

데이터가 매일 누적되며, 중복되는 것들이 있으므로 가장 최신것만 남기고 제거해주도록 하겠습니다.

 

# 영상제목과 채널명이 둘 다 중복인 영상 제거
df_sorted_latest = df_sorted.drop_duplicates(['title','channelTitle'], keep='first')

# 상위 10개 영상 확인
df_sorted_latest.head()

 

역시 방탄소년단과 블랙핑크가 세계적인 인기를 받고 있다는 것이 보이는 결과입니다. 10위에 제가 요즘 좋아하는 에스파도 보이네요!

 

 

채널별 조회수 합계 및 조회수 상위 20개 채널 확인

 

이제 마지막으로 어떤 채널이 가장 인기를 끌고 있는지 채널별로 조회수를 모두 합쳐서 순위를 매겨보겠습니다.

 

# groupby() : 특정 컬럼을 기준으로 그룹을 묶어서 평균, 합계를 낼 수 있음

# 채널별 조회수 합계 계산
df_channel_view_sum = df_sorted_latest.groupby(['channelTitle']).sum()

# 채널별 조회수 내림차순 정렬
df_channel_view = df_channel_view_sum.sort_values(by='view_count', ascending=False)

# 총 2253개의 채널 중 상위 20개 채널만 가져오기
df_channel_view_top20 = df_channel_view[:20]

# 데이터 출력
df_channel_view_top20

 

 

그래프로 데이터 시각화

 

시각화를 위해서 데이터에 index를 추가해줄 필요가 있습니다. 0~99까지의 index가 있어야지 그래프가 그려진답니다.

 

df_channel_view_top20_index = df_channel_view_top20.reset_index()
df_channel_view_top20_index

 

글이 너무 길어져서 결과는 생략하였으니, 직접 확인해보시기 바랍니다.

 

그럼 이번 프로젝트의 마지막 결과물인 데이터 시각화를 해보겠습니다.

 

# 그래프 출력 시 이상한 에러들 무시
import warnings
warnings.filterwarnings("ignore")


# 그래프 그릴 때 한글 깨짐 방지 설정
import os

# Mac OS의 경우와 그 외 OS의 경우로 나누어 설정

if os.name == 'posix':
    plt.rc("font", family="AppleGothic")

else:
    plt.rc("font", family="Malgun Gothic")


# 그래프 사이즈 설정
plt.figure(figsize=(10,10))


# seaborn 패키지로 수평막대 그래프 그리기
sns.barplot(x='view_count', y='channelTitle', data=df_channel_view_top20_index)

 

결과를 보니 상위권은 거의 다 엔터테인먼트 회사의 유튜브 채널들이 차지하고 있는 것을 확인할 수 있습니다.

 


<참고 자료>

 

직장인을 위한 파이썬 데이터분석 올인원 패키지 Online_패스트 캠퍼스 유료강의

반응형

+ Recent posts