[플레이데이터 빅데이터 부트캠프]Python Open API 만들기(2)

Folium

Folium 라이브러리를 사용하여 지도 시각화를 할 수 있다.

map = folium.Map( location = [37, 127], zoom_start=7 )

마커 표시하기

for i in maps.index:
  # print( maps.loc[i, '위도'], maps.loc[i, '경도'] )
  folium.Marker( [ maps.loc[i, '위도'], maps.loc[i, '경도']] ).add_to(map)

 

위와 같이 마커가 표시되는 것을 확인할 수 있다.

이제 행정구역별 코로나 확진자 사망자를 지도 시각화를 통하여 나타내어 보자.

행정구역별 단계 구분도는 국가 지리 정보원에서 다운받을 수 있다.

!pip install geopandas
import geopandas as gpd
korea = gpd.read_file('/content/drive/MyDrive/2022 FocusOn/00_Old/ENCORE/수업자료 (외부 공개 금지)/한국지도json/Z_NGII_N3A_G0010000.zip', encoding='euc-kr')
korea

 

일자별 각 지역 확진자수를 모두 누적한 데이터프레임 confirmed_df1, 일자별 각 지역 사망자 수를 모두 누적한 데이터프레임 death_df1을 각각 만들어 보자.

confirmed_df.loc['2022-07-25'][:-1].T
death_df.loc['2022-07-25'][:-1]​

 

그리고 누적 확진자 수maps에 추가한다.

death_df.loc['2022-07-25'][:-1]
maps['지역별사망자수'] = death_df.loc['2022-07-25'][:-1].T.rename( index={
    '서울':'서울특별시',
    '경기':'경기도',
    '인천':'인천광역시',
    '대구':'대구광역시',
    '부산':'부산광역시',
    '경남':'경상남도',
    '충남':'충청남도',
    '경북':'경상북도',
    '충북':'충청북도',
    '대전':'대전광역시',
    '강원':'강원도',
    '전북':'전라북도',
    '광주':'광주광역시',
    '울산':'울산광역시',
    '전남':'전라남도',
    '제주':'제주특별자치도',
    '세종':'세종특별자치시'
})
maps

이후 과정은 강의 자료 유출 방지로 인하여 생략하였습니다. 추후 프로젝트에서 행정구역별 통계 시각화를 통해 완성해 보자.! (본인 깃허브 참고)

네이버 API

네이버 개발자 센터

#-*- coding: utf-8 -*-
import os
import sys
import urllib.request
client_id = "T8Mp931zxMboBxvKwEop"
client_secret = "t0h23ZQRTZ"
url = "https://openapi.naver.com/v1/datalab/search";
body = "{\"startDate\":\"2018-01-01\",\"endDate\":\"2022-07-25\",\"timeUnit\":\"week\",\"keywordGroups\":[{\"groupName\":\"여름휴가\",\"keywords\":[\"피서\",\"바다여행\",\"바다여행\"]},{\"groupName\":\"꽃놀이\",\"keywords\":[\"벚꽃축제\",\"봄꽃\"]}],\"device\":\"pc\",\"ages\":[\"3\",\"4\",\"5\",\"6\"],\"gender\":\"f\"}";

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

카카오 디벨로퍼스 API

-*- coding: utf-8 -*-
import os
import sys
import urllib.request
client_id = "T8Mp931zxMboBxvKwEop"
client_secret = "t0h23ZQRTZ"
url = "https://openapi.naver.com/v1/datalab/search";
body = "{\"startDate\":\"2018-01-01\",\"endDate\":\"2022-07-25\",\"timeUnit\":\"week\",\"keywordGroups\":[{\"groupName\":\"여름휴가\",\"keywords\":[\"피서\",\"바다여행\",\"바다여행\"]},{\"groupName\":\"꽃놀이\",\"keywords\":[\"벚꽃축제\",\"봄꽃\"]}],\"device\":\"pc\",\"ages\":[\"3\",\"4\",\"5\",\"6\"],\"gender\":\"f\"}";

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()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
url = 'https://openapi.naver.com/v1/datalab/search'
header = {
  'X-Naver-Client-Id': client_id,
  'X-Naver-Client-Secret': client_secret,
  'Content-Type': 'application/json'
}

data = {
  'startDate':'2018-01-01',
  'endDate':'2022-07-24',
  'timeUnit':'week',
  'keywordGroups':[
    {
      'groupName':'꽃놀이',
      'keywords':['벚꽃축제', '꽃놀이', '봄여행지', '봄꽃축제']
    },
    {
      'groupName':'피서',
      'keywords':['여름여행', '피서', '바다여행', '여름축제']
    }
  ],
  'ages':['3', '4', '5', '6', '7', '8']
}
import json
import requests

jsonData = json.dumps(data)

response = requests.post( url, data=jsonData, headers=header )
print( response.status_code )
result = response.json()

원하는 값을 찾아오려면 result.keys()를 통하여 불러올 수 있다.