본문 바로가기
문송충의 코딩하기/네이버 API

[파이썬] - 네이버 쇼핑 인사이트 API를 통해 콜라, 사이다, 이온음료 제품 카테고리 검색 클릭량 추이 비교

by 동장군님 2020. 11. 1.
728x90
반응형

네이버 쇼핑 인사이트 with Python

이번 포스팅에서는 네이버에서 제공하고 있는 네이버 쇼핑 인사이트 데이터를 한번 다루어보고자 한다. 아래 링크에서도 확인 가능하지만 네이버 쇼핑 인사이트란 네이버 사이트에서 특정 쇼핑 카테고리 분야별 검색 클릭 추이 데이터를 제공함으로써 특정 제품 카테고리에 대한 소비자 관심을 확인할 수 있다. 자세한 내용은 아래 링크에서 확인하기 바라고, 이번 포스팅에서는 내가 가장 좋아하는 콜라, 사이다, 이온음료 제품에 대한 네이버 쇼핑 클릭 추이를 비교해보고자 한다. 당연히 여기서도 파이썬으로 분석할 것이다. 네이버 API 키 값을 신청하고 확인해보고 싶은 특정 제품의 쇼핑 카테고리 값을 네이버 쇼핑 사이트에서 가져오면 분석을 위한 사전 준비는 끝이다!

 

developers.naver.com/docs/datalab/shopping/#%EC%87%BC%ED%95%91%EC%9D%B8%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%B6%84%EC%95%BC%EB%B3%84-%ED%8A%B8%EB%A0%8C%EB%93%9C-%EC%A1%B0%ED%9A%8C

 

쇼핑인사이트 API 적용 가이드

쇼핑인사이트 API는 '네이버 데이터랩'의 '쇼핑인사이트'를 API로 실행할 수 있게하는 RESTful API입니다.

developers.naver.com

 

 

 

데이터 추출

네이버 API에서 제공하고 있는 파이썬 코드를 그대로 가져왔다. 19년 1월부터 20년 10월까지의 기간, 연령/성별은 전체로 하는 조건으로 데이터 추출 요청하도록 하겠다.

 

import os
import sys
import urllib.request
import json

client_id = "~"
client_secret = "~"
url='https://openapi.naver.com/v1/datalab/shopping/categories'

body = '''{\"startDate\":\"2019-01-01\",\"endDate\":\"2020-10-30\",\"timeUnit\":\"month\",
\"category\":
[
{\"name\":\"사이다\",\"param\":[\"50002253\"]},
{\"name\":\"콜라\",\"param\":[\"50002254\"]},
{\"name\":\"이온음료\",\"param\":[\"50002256\"]}
],
\"device\":\"\",\"ages\":[],\"gender\":\"\"}'''

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()
    scraped=response_body.decode('utf-8')
else:
    print("Error Code:" + rescode)

 

 

데이터 DataFrame

위에서 추출한 코드를 데이터 프레임화 하겠다. 데이터가 Json으로 구성되어 있기 때문에 아래 코드처럼 반복문으로 쉽게 데이터프레임화할 수 있을 것이다.

 

data=json.loads(scraped)
dt=dict()
months=[]


for i in data['results'][0]['data']:
    months.append(i['period'])

for a in range(0,3):
    ratio=[]
    for b in data['results'][a]['data']:
        ratio.append(b['ratio'])
        dt[data['results'][a]['title']]=ratio
        
df=pd.DataFrame.from_dict(dt) 
df['Month']=months
df['Period']=df['Month'].apply(lambda x : x[2:7] )
df2=df.set_index('Period')

 

데이터 시각화

위에서 추출한 데이터를 바탕으로 그래프 시각화하도록 하겠다.

 

import matplotlib.pyplot as plt

plt.rcParams["font.family"] = 'Malgun Gothic'
plt.rcParams["font.size"] = 12
plt.figure(figsize=(16,8))
plt.title("콜라 사이다 이온음료 네이버 검색 클릭 추이")

plt.plot(df2.index,df2['사이다'])
for x, y in enumerate( list(df2['사이다']) ):
    plt.text(x, y, y, fontsize=10, color='#ff0000', 
                    horizontalalignment='center', verticalalignment='bottom')
    
plt.plot(df2.index,df2['콜라'])
for x, y in enumerate( list(df2['콜라']) ):
    plt.text(x, y, y, fontsize=10, color='#ff0000', 
                    horizontalalignment='center', verticalalignment='bottom')

plt.plot(df2.index,df2['이온음료'])
for x, y in enumerate( list(df2['이온음료']) ):
    plt.text(x, y, y, fontsize=10, color='#ff0000', 
                    horizontalalignment='center', verticalalignment='bottom')
    
plt.legend(['사이다','콜라','이온음료'],loc='upper left')
    
plt.show()

 

이미 많이 예상했겠지만 역시나 콜라 제품들의 검색 클릭 추이가 사이다, 이온음료 대비 높은 점이 두드러지게 나타났다. 탄산음료 하면 콜라이고, 음료수 하면 콜라기 때문에 당연한 결과이다. 콜라, 사이다 말고 다른 제품 분야로 비교하려고 했는데 생각나는 게 없었다. 다음 시간에는 분야가 아닌 특정 제품을 기준으로 비교하도록 하겠다. ㅃㅇ

728x90
반응형

댓글