반응형
SK Open API의 국내여행을 이용해 검색하는 지역의 월간 추정 여행자수를 구해보겠습니다.
1. API 가져 올 환경 확인하기
2. 월간 추정 여행자수 가져오기
1. API 가져 올 환경 확인하기
2. 월간 추정 여행자수 가져오기
여행지 리스트와 검색어에 대한 월간 여행자수를 가져오는 함수를 작성합니다.
SK Open API의 예제를 수정해서 함수로 만들었습니다.
import requests
import pandas as pd
# 여행지 리스트 수집
def gettravellist(appkey):
url = "https://apis.openapi.sk.com/puzzle/travel?type=sig"
headers = {
"accept": "application/json",
"appkey": appkey
}
response = requests.get(url, headers=headers)
result=response.json()
return pd.DataFrame(result['contents'])
# 검색 지역의 월간 여행자수 구하기
def gettraveller_bymonth(appkey,districtCode,districtName,yearmonth):
url = "https://apis.openapi.sk.com/puzzle/traveler-count/raw/monthly/districts/" + \
districtCode + "?" + "yearMonth=" + yearmonth + \
"&gender=all&ageGrp=all&companionType=all"
headers = {
"accept": "application/json",
"appkey": appkey
}
response = requests.get(url, headers=headers)
#
result=response.json()
travelerCount=result['contents']['raw']['travelerCount']
yearMonth=result['contents']['raw']['yearMonth']
df=pd.DataFrame({'districtCode':[districtCode],'districtName':[districtName],
'yearMonth':[yearMonth],'travelerCount':[travelerCount]})
df['date']=pd.to_datetime(df['yearMonth'], format='%Y%m')
return(df.set_index('date'))
결과를 Dictionary 형태로 저장하고 여행자수와 해당 년월을 가져옵니다.
result=response.json()
travelerCount=result['contents']['raw']['travelerCount']
yearMonth=result['contents']['raw']['yearMonth']
Return할 데이터를 DataFrame 으로 만들고,
'yearMonth'를 이용해 'date'의 datetime 형태로 column을 생성합니다.
df=pd.DataFrame({'districtCode':[districtCode],'districtName':[districtName],
'yearMonth':[yearMonth],'travelerCount':[travelerCount]})
df['date']=pd.to_datetime(df['yearMonth'], format='%Y%m')
'date'를 Index로 만들고 결과를 return합니다.
return(df.set_index('date'))
검색지역을 제주로 하고 2022년 9월 추정 여행자수를 확인합니다.
appkey는 본인의 데이터의 입력이 필요합니다.
appkey='YOUR_APPKEY'
#제주를 검색어로.
keyword='제주'
yearmonth='202209'
#여행지 리스트 가져오기
df_list=gettravellist(appkey)
#여행지에서 검색어를 포함한 지역들을 가져오기
districtName_df=df_list.loc[df_list['districtName'].str.contains(keyword),:]
#여행지가 여러개일 경우 하나의 DataFrame에 저장하기
result_all=pd.DataFrame()
for i, r in districtName_df.iterrows():
districtCode = r['districtCode']
districtName = r['districtName']
result=gettraveller_bymonth(appkey,districtCode,districtName,yearmonth)
result_all = pd.concat([result_all,result])
여행지 리스트에서 '제주'를 포함하는 지역을 가져옵니다.
#여행지에서 검색어를 포함한 지역들을 가져오기
districtName_df=df_list.loc[df_list['districtName'].str.contains(keyword),:]
여행지가 여러개일경우 하나의 DataFrame에 저장하기 위한 변수입니다.
'제주'의 경우 '제주특별자치시도 제주시'와 '제주특별자치시도 서귀포시'가 포함됩니다.
result_all=pd.DataFrame()
각 지역별 결과를 저장합니다.
for i, r in districtName_df.iterrows():
districtCode = r['districtCode']
districtName = r['districtName']
result=gettraveller_bymonth(appkey,districtCode,districtName,yearmonth)
result_all = pd.concat([result_all,result])
결과를 확인합니다.
2022년 9월에 제주시 약 36만명, 서귀포시 약 29만명이 방문했네요.
result_all
이상으로 검색하는 지역의 월간 추정 여행자수를 구해봤습니다.
반응형
'API' 카테고리의 다른 글
[FinanceDataReader] 설치 및 주식 주가 정보 가져오기(코스피, 코스닥) (4) | 2022.10.15 |
---|---|
[네이버 SK API] 월별 검색수와 여행자수 비교하기(파이썬) (4) | 2022.10.14 |
[SK Open API] 앱 등록 및 상품 구매 후 응답결과확인(무료) (4) | 2022.10.12 |
네이버 API 통합 검색 트렌드의 월간 실 검색수 추정하기(파이썬) (5) | 2022.10.12 |
[SK Open API] 가입하기 (4) | 2022.10.11 |