-
코로나19 예방접종센터 현황 확인 - 지도 시각화 With Python, PydeckData Analysis/Social Issues 2021. 6. 9. 15:09
공공데이터에서 아래와 같이 코로나 19 예방 접종센터 정보를 제공하고 있어서 해당 데이터를 사용해서 간략히 지도에 찍어보도록 하겠다. 역시나 이번 분석에는 파이썬과 우버에서 만든 지도 시각화 라이브러리 Pydeck을 사용하겠다.
https://www.data.go.kr/tcs/dss/selectFileDataDetailView.do?publicDataPk=15077603
예방접종센터 위도, 경도 데이터가 없기 때문에 카카오 지도 API를 사용해서 시각화에 필요한 위경도 데이터를 추출하도록 하겠다.
import pandas as pd import requests df=pd.read_csv('C:/Users/banad/Downloads/예방.csv',encoding='cp949') lat=[] lon=[] for i in df['주소']: try: url = f'''https://dapi.kakao.com/v2/local/search/keyword.json?query={i}''' print(i) headers = { "Authorization": "KakaoAK 69233a275b4e0a1a982f010015193944" } #json 형태로 데이터가 주어진다 places = requests.get(url, headers = headers).json()['documents'] lat.append(places[0]['y']) lon.append(places[0]['x']) except: lat.append('') lon.append('') df['lat']=lat df['lon']=lon df2=df[df['lat']==''] df_=df[df['lat']!=''] df2['주소'] = df2['주소'].astype(str).str.replace(r"\(.*\)","") lat2=[] lon2=[] for i in df2['주소']: try: url = f'''https://dapi.kakao.com/v2/local/search/keyword.json?query={i}''' print(i) headers = { "Authorization": "KakaoAK 69233a275b4e0a1a982f010015193944" } #json 형태로 데이터가 주어진다 places = requests.get(url, headers = headers).json()['documents'] lat2.append(places[0]['y']) lon2.append(places[0]['x']) except: lat2.append('') lon2.append('') df2['lat']=lat2 df2['lon']=lon2
Uber에서 만든 시각화 라이브러리 Pydeck을 사용해서 코로나 19 예방접종센터 위치를 지도에 찍도록 하겠다. 마우스를 빨간 점 위에 호버링 하면 주소, 센터명, 전화번호를 확인할 수 있다.
df2.loc[df2['주소']=='광주광역시 동구 남문로 646, 4층',['lat']]=35.128559 df2.loc[df2['주소']=='광주광역시 동구 남문로 646, 4층',['lon']]=126.930997 df2.loc[df2['주소']=='충청남도 보령시 보령남로 339',['lat']]=36.314711 df2.loc[df2['주소']=='충청남도 보령시 보령남로 339',['lon']]=126.603651 df2.loc[df2['주소']=='전라남도 강진군 강진읍 종합운동장길 60',['lat']]=34.646589 df2.loc[df2['주소']=='전라남도 강진군 강진읍 종합운동장길 60',['lon']]=126.782530 df3=pd.concat([df_,df2],axis=0) df3=df3.drop('address',axis=1) import pydeck as pdk df3['lat']=df3['lat'].astype(float) df3['lon']=df3['lon'].astype(float) layer = pdk.Layer( 'ScatterplotLayer', df3, get_position=['lon','lat'], get_radius=800, get_fill_color='[180]', pickable=True, auto_highlight=True, opacity=0.6, stroked=True, filled=True, ) center = [126.986, 37.565] view_state = pdk.ViewState( longitude=center[0], latitude=center[1], zoom=9) r = pdk.Deck(layers=layer, initial_view_state=view_state, tooltip={"text": "{센터명}\n{시설명}\n{주소}\n{사무실전화번호}"}) r.to_html("vaccine.html")
'Data Analysis > Social Issues' 카테고리의 다른 글
국내 목욕탕/사우나 폐업 수 데이터 분석 & 시각화 With Python (0) 2021.08.22 외국인 입국 통계 데이터 분석 With Python (1) 2021.04.14 2010~2020년 국내 시도별 예금은행 예금액 분석 with Python (0) 2021.04.13 전국 시도별 빈집 상황 알아보자 with Python (0) 2021.04.11 2015년 ~ 2019년 대한민국 인구 10만명당 자살 통계 데이터 분석 With Python (0) 2021.04.02