💻프로그래밍/👩‍🔬빅데이터분석

[파이썬] 주소데이터분석 + 지오맵 📍

hyerimmy 2021. 2. 19. 00:03

2021.02.18
PM 22:00 - 23:05

지오데이터
위도와 경도의 GPS 좌표와 같은 지리 정보

folium 라이브러리의 Map() 함수
GPS 좌표를 중심 위치로 하는 지도 객체를 생성할 때 사용

오픈소프트웨어 Geocoder-Xr
파일을 불러와, 주소값을 지정하면 이를 좌표값으로 변환하는 프로그램

 

import pandas as pd
CB = pd.read_csv('9-1_data\\CoffeeBean.csv', #CB객체에 파일 로드
                 encoding='CP949',index_col=0,header=0,engine='python')
CB.head() #작업내용확인용출력-<<상위5개행>>
addr = []
for address in CB.address:
    addr.append(str(address).split()) #address 컬럼값 분리해서 addr리스트로
addr #작업내용확인용출력 
addr2 = []

# addr에서 행정구역 표준 이름이 아닌것 수정하기
for i in range(len(addr)):
    if addr[i][0] == "서울": addr[i][0]="서울특별시"
    elif addr[i][0] == "서울시": addr[i][0]="서울특별시"
    elif addr[i][0] == "부산시": addr[i][0]="부산광역시"
    elif addr[i][0] == "인천": addr[i][0]="인천광역시"
    elif addr[i][0] == "광주": addr[i][0]="광주광역시"
    elif addr[i][0] == "대전시": addr[i][0]="대전광역시"
    elif addr[i][0] == "울산시": addr[i][0]="울산광역시"    
    elif addr[i][0] == "세종시": addr[i][0]="세종특별자치시"
    elif addr[i][0] == "경기": addr[i][0]="경기도"
    elif addr[i][0] == "충북": addr[i][0]="충청북도"
    elif addr[i][0] == "충남": addr[i][0]="충청남도"
    elif addr[i][0] == "전북": addr[i][0]="전라북도"
    elif addr[i][0] == "전남": addr[i][0]="전라남도"
    elif addr[i][0] == "경북": addr[i][0]="경상북도"
    elif addr[i][0] == "경남": addr[i][0]="경상남도"
    elif addr[i][0] == "제주": addr[i][0]="제주특별자치도"
    elif addr[i][0] == "제주도": addr[i][0]="제주특별자치도"
    elif addr[i][0] == "제주시": addr[i][0]="제주특별자치도" 
        
    addr2.append(' '.join(addr[i])) #분리했던 항목 연결해 addr2리스트만들기

addr2 #작업내용확인용출력 
#DataFrame 타입으로 변경, 칼럼 이름을 address2로 지정
addr2 = pd.DataFrame(addr2, columns = ['address2']) 
#DataFrame 타입으로 변경, 칼럼 이름을 address2로 지정
addr2 = pd.DataFrame(addr2, columns = ['address2'])
CB2.to_csv('9-1_data\\CoffeeBean_2.csv', encoding='CP949', index=False) 
!pip install folium  #folium 패키지 설치 
import folium 
#숭례문 좌표를 folium.Map의 location 속성 값으로 설정, 지도 크기 확대
map_osm = folium.Map(location = [37.559978, 126.975291], zoom_start = 16) 
#생성한 지도 객체를 파일로 저장
map_osm.save('9-1_data\\map.html') 
#CB_geo.shp.csv파일을 불러와 CB_geoData 객체 로드
CB_geoData = pd.read_csv('9-1_data\\CB_geo.shp.csv', 
                         encoding='cp949',engine='python') 
#지도객체 map_CB 생성
map_CB = folium.Map(location = [37.560284, 126.975334], zoom_start = 15) 
for i, store in CB_geoData.iterrows():
    folium.Marker(location = [store['위도'], store['경도']],
                              popup = store['store'], #팝업글자:매장이름
                              #마커모양:빨간색별
                              icon = folium.Icon(color='red', icon = 'star')
                 ).add_to(map_CB) #지도객체 map_CB에 추가 
#완성된 지오맵 저장
map_CB.save('9-1_data\\map_CB.html') 
#저장한 지오맵 파일을 웹브라우저에서 열기
import webbrowser
webbrowser.open('9-1_data\\map_CB.html')

 

최종출력결과