빅데이터분석기사/코드

[빅데이터분석기사] 작업형 1유형 연습문제 #1

EveningPrimrose 2023. 5. 30. 01:44
반응형

데이터 출처(유튜브 데일리 인기동영상) : 

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

 

YouTube Trending Video Dataset (updated daily)

YouTube Trending Video data-set which gets updated daily.

www.kaggle.com

데이터 URL : https://raw.githubusercontent.com/Datamanim/datarepo/main/youtube/youtube.csv

 

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/youtube/youtube.csv)
df.head()

 

인기동영상 제작횟수가 많은 상위 10개명을 출력하라 (날짜기준, 중복포함)

answer = list(df.loc[df.channelId.isin(df.channelId.value_counts().head(10).index)].channelTitle.unique())
print(answer)

 

논란으로 인기동영상이 된 케이스를 확인하고 싶다. dislikes 수가 like 수보다 높은 동영상을 제작한 채널을 모두 출력하라

answer = list(df.loc[df.likes < df.dislikes].channelTitle.unique())
print(answer)

 

채널명을 바꾼 케이스가 있는지 확인하고 싶다. channelId의 경우 고유값이므로 이를 통해 채널명을 한번이라도 바꾼 채널의 갯수를 구하여라

change = df[['channelTitle', 'channelId']].drop_duplicates().channelId.value_counts()
target = change[change>1]
print(len(target))

 

일요일에 인기있었던 영상들 중 가장 많은 영상 종류(categoryId)는 무엇인가?

df['trending_date2'] = pd.to_datetime(df['trending_date2'])
answer = df.loc[df['trending_date2'].dt.day_name() == 'Sunday'].categoryId.value_counts().index[0]
print(answer)

 

각 요일별 인기 영상들의 categoryId는 각각 몇개씩인지 하나의 데이터프레임으로 표현하라

group = df.groupby([df['trending_date2'].dt.day_name(), 'categoryId'], as_index=False).size()
answer = group.pivot(index='categoryId'.columns='trending_date2')
display(answer)

 

댓글의 수로(comment_count) 영상 반응에 대한 판단을 할 수 있다. viewcount 대비 댓글수가 가장 높은 영상을 확인하라(view_count 값이 0인 경우는 제외한다)

target2 = df.loc[df.view_count!=0]
t = target2.copy()
t['ratio'] = (target2['commnet_count']/target2['view_count']).dropna()
result = t.sort_values(by='ratio', ascending=False).iloc[0].title
print(result)

 

댓글의 수로(commnet_count) 영상 반응에 대한 판단을 할 수 있다. viewcount 대비 댓글수가 가장 낮은 영상을 확인하라. (view_counts, ratio 값이 0인 경우는 제외한다.)

ratio = (df['comment_count'] / df['view_count']).dropna().sort_values()
ratio[ratio!=0].index[0]

result = df.iloc[ratio[ratio!=0].index[0]].title
print(result)

 

like 대비 dislike의 수가 가장 적은 영상은 무엇인가?(like, dislike 값이 0인 경우는 제외한다.)

target = df.loc[(df.likes != 0) & (df.dislikes != 0)]
num = (target['dislike'] / target['likes']).sort_values().index[0]

answer = df.iloc[num].title
print(answer)

 

가장 많은 트렌드 영상을 제작한 채널의 이름은 무엇인가? (날짜기준, 중복포함)

answer = df.loc[df.channelId == df.channelId.value_count().index[0]].channelTitle.unique()[0]
print(answer)

 

20회(20일) 이상 인기동영상 리스트에 포함된 동영상의 숫자는?

answer = (df[['title', 'channelId']].value_counts()>=20).sum()
print(answer)

 

 

출처 : https://www.datamanim.com/dataset/03_dataq/typeone.html#id4

반응형