스타벅스 API를 이용한 프로젝트
라이브러리 import
import requests
import folium
import json
from pandas.io.json import json_normalize
import warnings
warnings.filterwarnings("ignore")
스타벅스 api 데이터 가져오기
targetSite = 'https://www.starbucks.co.kr/store/getSidoList.do'
request = requests.post(targetSite)
print(request)
print(request.text)
스타벅스 데이터를 딕셔너리 타입으로 변환하기
star_json = json.loads(request.text)
print(star_json)
스타벅스 데이터의 'list' 키 값의 길이 확인
print(len(star_json["list"])) # 17
스타벅스 '시도' 코드 출력하기
# sido_list 딕셔너리 선언
sido_list = dict()
# star_json["list"]의 길이만큼 반복
for sido in star_json["list"]:
# 코드를 key 값, 이름을 value 값으로 저장
sido_list[sido["sido_cd"]] = sido["sido_nm"]
print(sido_list)
```
{'01': '서울', '08': '경기', '02': '광주', '03': '대구',
'04': '대전', '05': '부산', '06': '울산', '07': '인천',
'09': '강원', '10': '경남', '11': '경북', '12': '전남',
'13': '전북', '14': '충남', '15': '충북', '16': '제주', '17': '세종'}
```
'시도 코드'를 입력받고 해당 시의 구군 출력
sido_cd = input("시도 코드를 입력하세요 : ")
targetSite = 'https://www.starbucks.co.kr/store/getGugunList.do'
# post로 시도코드를 data={"sido_cd":sido_cd})로 요청
request = requests.post(targetSite, data={"sido_cd":sido_cd})
print(request) #<Response [200]>
print(request.text)
스타벅스 '구군 코드' 출력하기
star_json = json.loads(request.text)
gugun_list = dict()
for gugun in star_json["list"]:
gugun_list[gugun["gugun_cd"]] = gugun["gugun_nm"]
print(gugun_list)
```
{'0101': '강남구', '0120': '강동구', '0102': '강북구', '0103': '강서구',
'0104': '관악구', '0105': '광진구', '0121': '구로구', '0106': '금천구',
'0107': '노원구', '0108': '도봉구', '0122': '동대문구', '0109': '동작구',
'0110': '마포구', '0111': '서대문구', '0112': '서초구', '0123': '성동구',
'0113': '성북구', '0114': '송파구', '0115': '양천구', '0116': '영등포구',
'0124': '용산구', '0117': '은평구', '0118': '종로구', '0119': '중구', '0125': '중랑구'}
```
'시도 코드'와 '구군 코드'를 입력 받고 해당 매장의 리스트 정보 저장
# 검색하고자 하는 매장의 시도코드를 입력하세요
sido_cd = input("검색하고자 하는 매장의 시도코드를 입력하세요 : ")
# 검색하고자 하는 매장의 구군코드를 입력하세요
gugun_cd = input("검색하고자 하는 매장의 구군코드를 입력하세요 : ")
# 해당 매장의 리스트
targetSite = "https://www.starbucks.co.kr/store/getStore.do"
request = requests.post(targetSite, data={
'ins_lat': 37.5108295,
'ins_lng': 127.02928809999999,
'p_sido_cd':sido_cd,
'p_gugun_cd':gugun_cd,
'in_biz_cd': '',
'iend':2000,
'set_date': ''
})
star_json = json.loads(request.text)
해당(강남구) 매장 정보를 데이터프레임으로 출력
star_df = json_normalize(star_json, "list")
star_df
info 확인
star_df.info
필요한 컬럼만 남기고 저장
# s_name, sido_code, sido_name, gogun_code, gugun_name, doro_address, lat, lot 컬럼만 저장
star_df_copy = star_df[['s_name','sido_code', 'sido_name', 'gugun_code', 'gugun_name', 'doro_address', 'lat', 'lot']]
dtype 확인
star_df_copy.dtypes
위도 경도 dtype float로 변경
star_df_copy["lat"] = star_df_copy["lat"].astype(float)
star_df_copy["lot"] = star_df_copy["lot"].astype(float)
해당 데이터를 지도에 출력
# 강남구 모든 지점의 평균 위도, 경도로 설정
star_map = folium.Map(location=[star_df_copy['lat'].mean(), star_df_copy['lot'].mean()], zoom_start=12)
for index, data in star_df_copy.iterrows():
# popup: 00점 주소: 0000
string = '{}점 주소: {}'.format(data['s_name'],data['doro_address'])
popup = folium.Popup(string, max_width=600)
# 해당 지점의 위도와 경도에 마커 찍기
folium.Marker(location=[data['lat'], data['lot']], popup=popup).add_to(star_map)
star_map
'데이터 분석' 카테고리의 다른 글
13. 떡볶이집의 입점전략 (1) | 2023.06.16 |
---|---|
11. 따릉이 API를 이용한 프로젝트 (0) | 2023.06.15 |
10. 전국 도시공원 데이터 프로젝트 (0) | 2023.06.15 |
9. 상권별 업종 밀집 통계 프로젝트 (0) | 2023.06.14 |
8. folium (0) | 2023.06.14 |