컴퓨터사이언스/파이썬 & 알고리즘

pytrends API를 활용하여 인사이트 도출해보기

누군가의 이야기 2022. 1. 10. 04:21
728x90

구글 트렌드 데이터를 가져올 수 있는 비공식 API다.
특정 검색어의 시간대별, 지역별 검색량 추세나 연관 검색어를 대략적으로 파악할 수 있고,

국가 별로 필터링된 트렌드도 확인할 수 있다.
따로 CSV 파일을 다운로드 하지 않고 데이터를 바로 가져올 수 있다는 게 장점이 있다.

https://pypi.org/project/pytrends/#description

 

pytrends

Pseudo API for Google Trends

pypi.org

위 링크에서 설치 방법과 메소드 사용 방법을 익힐 수 있다.
가벼운 수준으로 데이터를 불러오고 plot 시켜보겠다.
실습환경은 주피터 노트북을 활용하였다.

import matplotlib.pyplot as plt 
from matplotlib import rc 
import pandas as pd 
from pytrends.request import TrendReq 
plt.rcParams['axes.unicode_minus'] = False 
%matplotlib inline

필요한 라이브러리를 import하였다.

keyword = ['윤예주']	#트렌드를 조회할 검색어를 리스트 형태로 저장 
pytrend = TrendReq()	#구글 트렌드에 접속 
pytrend.build_payload(keyword, timeframe="now 7-d")	#지금으로부터 7일 
trenddf = pytrend.interest_over_time()	#데이터프레임 형태로 저장 
trenddf

함수와 변수 설명은 주석으로 해놓았고, 따로 알아두면 좋은 것은 build_payload() 메소드의 timeframe 부분을
'today 5-y' -> 지금부터 5년 간 추세 데이터,
'YYYY-MM-DD YYYY-MM-DD' -> 특정 년월일부터 특정 년월일까지 등
다양한 방법으로 기간을 지정할 수 있다는 것이다. 더 자세한 방법은 홈페이지 참조.

기간 설정이 잘못되면 ResposeError code 400 나오는데 이거 때문에 좀 시행착오 겪었다.

코드를 실행하면 trenddf 변수에 위와 같은 데이터프레임이 저장된다.

plt.style.use("ggplot") 
plt.figure(figsize=(24,8)) 
trenddf["윤예주"].plot() 
plt.title("pytrends start", size=15)

아주 간단한 방법으로 시각화해보면 위와 같은 그래프를 볼 수 있다.
최근 일주일 간 유독 1월 4일에 검색량이 많은 것을 볼 수 있고,
해당 배우가 1월 4일에 새 회사와 계약을 맺으며 여러 개의 기사가 나오며 주목 받은 점과 연관지어 설명할 수 있다.
https://www.wowtv.co.kr/NewsCenter/News/Read?articleId=A202201040287

 

윤예주 HB엔터테인먼트와 전속계약 체결새로운 도약 예고

배우 윤예주가 HB엔터테인먼트와 전속계약을 체결, 새로운 도약에 나선다. 4일 HB엔터테인먼트 측은 “현실감 넘치는 연기로 시청자들에게 눈도장을 찍었던 배우 윤예주와 좋은 인연을 맺게 됐

www.wowtv.co.kr


검색량 표본이 적은 키워드 말고 복수의 키워드 리스트의 트렌드도 plot 해보았다.
코드는 생략한다.

2022년 1월 기준 지난 3개월 간 3개의 드라마의 검색 추세를 살펴보면
지리산과 지금 헤어지는 중입니다는 계속해서 감소하는 모습을 보이는 반면
옷소매 붉은 끝동은 지금까지 증가하는 모습이다.
세 드라마는 거의 동일한 방영하였고, 드라마 흥행 수준 + 시청률과 보여지는 트렌드가 일맥상통하다 볼 수 있다.
지리산 같은 경우 나머지 두 드라마에 비해 방영 시작일이 한 달 정도 빠르다는 것도 그래프에 반영되어 있다.
tmi를 덧붙이자면 본인은 옷소매 붉은 끝동만 본방사수 하였다. (나머진 재미 없더라.)

두 사례는 모두 본인이 매우 잘 아는 분야이기 때문에 사실 그래프를 보기 전부터 해석할 수 있었지만,
pytrends API를 잘 활용하면 사전정보 없이 어떤 목적에 상응하는 꽤나 유용한 인사이트를 얻을 수 있을 것이다.

728x90