본문 바로가기

Theory/DataScience

네이버 검색어 트렌드 API를 사용해 보죠.. 그리고 타다~

아주 가끔은 추억이 생각날 떄가 있습니다. 정말 사소한 인연인데 그게 생각기 선명하게 나고, 또 그래서 그 추억의 고리를 함께한 사람들이 어떻게 지내고 있는지도 궁금해 질때가 있습니다. 나이를 먹어가고 있기 때문일까요^^

2009년 당시 VCNC 블로그로부터 릴레이를 받아 작성된 PinkWink의 글

이 때가 2009년 6월입니다. 이때는 블로거들이 어떤 주제를 정하고 서로에게 질문을 하던 릴레이 놀이가 자주 생겼습니다. 이 때는 편견타파 릴레이였습니다.^^

2009년 당시 PinkWink에게 릴레이를 보내던 VCNC의 글

그리고 제 앞에서 릴레이를 하신 주자가 VCNC라는 블로그를 운영하시던 분이었습니다. 많이 들어 보셨나요? 네 맞습니다. 요즘 핫한 타다/쏘카를 서비스하는 그~~~ VCNC입니다.^^.

2009년 PinkWink에게 릴레이를 보내는 부분

그리고, 이 분이 자신의 다음 릴레이 주자로 저를 지목하신거죠^^ 2009년 6월 25일 오전 11시에~~^^ 전 그 릴레이를 받아 그날 오후 3시쯤 글을 발행했구요^^

2009년 PinkWInk가 릴레이를 받았음을 알리는 부분

제가 받은 릴레이를 나열한 글에 김상우 VC라고 되어있는 분입니다. 이분은 지금은 VCNC에 계시지 않는것 같습니다.^^ (5/9일 수정 : 아니네요. 데이터그룹장이라는 중책을 맡고 계시네요~^^)

2009년 당시 김상우VC와 댓글을 주고 받는 부분

이렇게 댓글도 나누었는데 말이죠^^ 아 .. 이때 인사하고 재미있게 놀던 라라윈님이나 아이미슈님이나, 회색구름님이 그립네요^^

출처 : 비트윈 홈페이지

아무튼~~ 지금은 이렇게 비트윈이라는 앱도 개발하시고~

출처 : 타다 홈페이지

이런 타다도 서비스하셔서~~~ 뭐 저처럼 평범한 월급쟁이와는 차원이 다른 분들이 되셨습니다~~~^^

그래서~~~ 오늘 원래 네이버의 오픈 API에서 데이터랩을 주제로 글을 적으려고 했는데, 그 대상 검색어로 "타다"를 선정했습니다.^^. 이 이야기를 하려고.. ㅎㅎ^^

입력 인자들의 의미가 있습니다. 나중에 이걸 잘 이용해야겠죠^^ 일단 가이드 대로 시작해 봅니다~~~

import urllib.request

def get_trend(body):
    url = "https://openapi.naver.com/v1/datalab/search"
    
    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"))

    return json.loads(response.read().decode('utf-8'))

body = {
    "startDate":"2019-01-01",
    "endDate":"2019-04-30",
    "timeUnit":"date",
    "keywordGroups":[
        {"groupName":"타다","keywords":["타다","소카","vcnc","VCNC"]},
    ],
}

body = json.dumps(body, indent=4, ensure_ascii=False)

tada_raw_data = get_trend(body)

예전에 네이버 API에 대한 글중에 다른 점은 body라는 변수에 보이는 대로 헤더에 포함할 내용을 작성해야 합니다. 기간과 검색어를 선정하는 것이죠.

결과는 원체 잘 들어옵니다.^^

ratio = [each['ratio'] for each in tada_raw_data['results'][0]['data']]
date = [each['period'] for each in tada_raw_data['results'][0]['data']]

plt.figure(figsize=(18,6))
plt.plot(date, ratio)
plt.grid()
plt.xticks(rotation=90)
plt.show()

이제 그려야죠~~ ratio는 100을 최고 수치로 하는 상대적인 값입니다.

이런 결과가 나왔네요. 일단 x축 날짜가 너무 촘촘하지만, 그래프에서는 저 피크치가 의미하는 것이 궁금하네요^^

tada_pd = pd.DataFrame({'data':ratio}, index=date)
vertical_range = tada_pd[tada_pd['data']>30]

vline = [vertical_range.index[0], 
         vertical_range.index[-2], 
         vertical_range.index[-1]]

plt.figure(figsize=(18,8))
plt.plot(date, ratio)

for each in vline:
    plt.axvline(x=each, color='black')

plt.grid()
plt.xticks('')
plt.show()

그 부분을 강조해 보겠습니다.

넵~~~ 좀 더 애를 써야 겠네요^^

from random import randint

plt.figure(figsize=(18,8))
plt.plot(date, ratio)
for each in vline:
    plt.axvline(x=each, color='black')
    plt.annotate(each, xy=(each, randint(40, 80)), 
                 xytext=(randint(40, 80), randint(40, 80)), size=15, 
                 arrowprops=dict(facecolor='black', shrink=0.04))
    
plt.xticks('')

plt.show()

이렇게 날짜를 표시하는 annotate를 사용했습니다. annotate는 예전에 필터에서 제가 소개했던 적이 있습니다.

이렇네요~ 첫번째 2월18일부터 22일 구간은 타다에서 고급형 중형 서비스를 시작한다는 기사와 함께 타다에 대한 블로그 글들이 나오던 기간인것 같습니다. 그 후 4월 15일은 택시업에 종사하는 분들이 타다 기사에 대한 일종의 횡포가 있다는 기사가 나타는 기간이었던 것 같은데, 정확하게 해당 날짜에 검색 피크를 찍는 것은 상세히 들여다 봐야겠지요^^ 아무튼... 

십년... 저같은 이들은 월급과 생활에 안주할때, 새로운 서비스를 도전적으로 시작하고, 10년이나 그 기간을 버틴 VCNC 여러분들에게 존경을 보냅니다.~^^ 특히 요즘처럼 기존의 질서가 재수정되는 시기에 어찌보면 의도하든 아니든 논란의 중심에 몇번을 오르내리는 과정도 잘 거처가는 듯 해서 역시 보통분들이 아니라고 생각합니다. 아무튼 화이팅입니다.^^ (비록 10년전 PinkWink를 기억하진 못하겠지만 ~~^^)


반응형