반응형
네이버 API의 통합 검색어를 이용해 연령대별 검색어 트렌트가 어떻게 다른지 확인해보겠습니다.
1. 네이버 API에서 통합 검색어 트렌드 데이터를 가져올 환경 확인(Skip가능)
2. 연령대별 통합 검색어 트렌드 비교
1. 네이버 API에서 통합 검색어 트렌드 데이터를 가져올 환경 확인(Skip가능)
2. 연령대별 통합 검색어 트렌드 비교
위 포스팅의 결과를 수정한 전체 코드는 아래와 같습니다.
import os
import sys
import urllib.request
import json
import pandas as pd
import matplotlib.pyplot as plt
plt.rc('font', family='NanumGothic')
age_conv={'1':'0∼12세','2':'13∼18세','3':'19∼24세','4':'25∼29세','5':'30∼34세',
'6':'35∼39세','7':'40∼44세','8':'45∼49세','9':'50∼54세','10':'55∼59세','11':'60세 이상'}
def getresult(startDate,endDate,timeUnit,keywordGroups,device,gender,ages):
url = "https://openapi.naver.com/v1/datalab/search";
response_results_all = pd.DataFrame()
for age in ages:
body_dict={} #검색 정보를 저장할 변수
body_dict['startDate']=startDate
body_dict['endDate']=endDate
body_dict['timeUnit']=timeUnit
body_dict['keywordGroups']=keywordGroups
body_dict['device']=device
body_dict['gender']=gender
body_dict['ages']=[age]
body=str(body_dict).replace("'",'"') # ' 문자로는 에러가 발생해서 " 로 변환
request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
request.add_header("Content-Type","application/json")
response = urllib.request.urlopen(request, data=body.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
response_body = response.read()
response_json = json.loads(response_body)
else:
print("Error Code:" + rescode)
# 결과데이터중 'data' 와 'title'만 따로 DataFrame으로 저장
response_results = pd.DataFrame()
for data in response_json['results']:
result=pd.DataFrame(data['data'])
result['title']=data['title']
result['age']=age # 연령대 정보를 추가
response_results = pd.concat([response_results,result])
response_results_all = pd.concat([response_results_all,response_results])
#title별로 그래프를 그리기 위한부분
titles=response_results['title'].unique()
for age in ages:
plt.figure(figsize=(4,1))
for title in titles:
data=response_results_all.loc[(response_results_all['title']==title)
& (response_results_all['age']==age),:]
plt.plot(data['period'],data['ratio'],label=title)
plt.xticks(rotation=90)
plt.legend()
plt.title(str(age_conv[age]))
plt.show()
검색어 정보 입력 부분입니다.
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
startDate='2022-01-01'
endDate='2022-09-30'
timeUnit='month' #'day','week','month'
keywordGroups=[
{'groupName':'경복궁', 'keywords':['경복궁','야간개장','주차','티켓']},
{'groupName':'제주도', 'keywords':['제주도','맛집','브이패스']},
]
device='pc' #'pc','mo'
gender='f' #'m','f'
ages=['1','2','3','4','5','6','7','8','9','10','11'] # #1: 0∼12세, 2: 13∼18세, 3: 19∼24세, 4: 25∼29세,
#5: 30∼34세, 6: 35∼39세, 7: 40∼44세, 8: 45∼49세, 9: 50∼54세, 10: 55∼59세, 11: 60세 이상
getresult(startDate,endDate,timeUnit,keywordGroups,device,gender,ages)
주요구문을 살펴보겠습니다.
age의 숫자 정보를 알기 쉬운 정보로 바꾸기 위한 Dictionary입니다.
age_conv={'1':'0∼12세','2':'13∼18세','3':'19∼24세','4':'25∼29세','5':'30∼34세',
'6':'35∼39세','7':'40∼44세','8':'45∼49세','9':'50∼54세','10':'55∼59세','11':'60세 이상'}
전체 데이터가 저장될 DataFrame이 되겠습니다.
response_results_all = pd.DataFrame()
연령대 별로 Naver API의 통합트렌드 정보를 가져와서 response_result에 저장 후
response_results_all에 합치는 작업이 되겠습니다.
for age in ages:
...생략...
for data in response_json['results']:
result=pd.DataFrame(data['data'])
result['title']=data['title']
result['age']=age # 연령대 정보를 추가
response_results = pd.concat([response_results,result])
response_results_all = pd.concat([response_results_all,response_results])
그래프를 그리는 부분으로 age(연령대) 단위로 그래프를 그립니다.
for age in ages:
plt.figure(figsize=(4,1))
for title in titles:
data=response_results_all.loc[(response_results_all['title']==title)
& (response_results_all['age']==age),:]
plt.plot(data['period'],data['ratio'],label=title)
plt.xticks(rotation=90)
plt.legend()
plt.title(str(age_conv[age]))
plt.show()
결과는 아래와 같습니다.
경복궁 - 제주도의 검색어 트렌트의 경우, 20세 이상은 제주도가 검색 비중이 높은데
0~12세의 경우는 경복궁이 높은 달도 있는것이 확인됩니다.
아래 검색어에 대한 결과를 확인해보겠습니다.
startDate='2022-01-01'
endDate='2022-09-30'
timeUnit='month' #'day','week','month'
keywordGroups=[
{'groupName':'아이돌', 'keywords':['아이돌','그룹']},
{'groupName':'단풍놀이', 'keywords':['단풍놀이','코스','명소']},
]
예상대로 10대까지는 아이돌이 단풍놀이를 앞서네요.
이상으로 연령대별 검색어 트렌트를 비교해 봤습니다.
반응형
'API' 카테고리의 다른 글
네이버 검색광고 API 연관검색어 결과 가져오기(파이썬) (10) | 2022.10.10 |
---|---|
네이버 검색 광고 API 가입 및 API KEY 확인하기 (4) | 2022.10.10 |
[네이버 개발자센터 API] 통합 검색어 트렌드 데이터 가져오기(파이썬) (6) | 2022.10.07 |
[네이버 개발자센터 API] 키워드로 블로그 순위에 들어갈 비율을 추정 (9) | 2022.10.06 |
[네이버 개발자센터 API] 영화 검색어의 국가별 Top3 영화 및 평점 가져오기 (6) | 2022.10.05 |