전국 대학교 folium활용하여 표시하기

2024. 11. 8. 20:07카테고리 없음

데이터 가져오기

  • 데이터에 경도 위도 값이 있지만 열을 제거하고 없다는 가정하에 데이터 실습을 진행해 보자.(구글 sheets 사용 필수)

  • 이번에는 주소를 활용하여서 경도, 위도 값을 가져오기 위해서는 다음과 같은 방법을 사용하면 된다.
1. 확장 프로그램 => 부가 기능 => 부가 기능 설치 순으로 클릭해 준다.
2. 검색창에 Geocode by Awesome Table 치고 설치해 준다.

3. 설치 화면을 나간 다음에 확장 프로그램 => Geocode by Awesom Table => Start Geocoding을 눌러서 시작해 준다.

4. 시작해준 뒤 지번 주소로 바꾸어 준다.
 5. Geocode를 눌러서 위도/경도를 생성해준다음 파일을 다운로드해준다. (위도 경도는 자동으로 생성된다.)
  • 혹시 안된다면 다른 대학교 데이터를 찾아서 활용하는 것도 좋다.
  • 판다스를 활용하여서 데이터를 불러온다.
import pandas as pd

df=pd.read_excel('/제목 없는 스프레드시트.xlsx')

df.head()

 

대학 1 국립강릉원주대학교 본교 대학교 강원 국립 고등교육법 강원특별자치도 강릉시 죽헌길 7 강원특별자치도 강릉시 지변동 123 37.765695 128.870005 7 Jukheon-gil, Gangneung-si, Gangwon-do 7 Jukheon-gil, Gangneung-si, Gangwon-do 25457 1979-03-01 00:00:00 www.gwnu.ac.kr 박덕영 033-642-7001 033-643-7110
대학 2 국립강릉원주대학교 제2캠퍼스 대학교 강원 국립 고등교육법 강원특별자치도 원주시 흥업면 남원로 150 강원특별자치도 원주시 흥업면 흥업리 7 37.305172 127.922147 150 Namwon-ro, Heungeop-myeon, Wonju-si, Gangw... 150 Namwon-ro, Heungeop-myeon, Wonju-si, Gangw... 26403 2007-03-01 00:00:00 www.gwnu.ac.kr 박덕영 033-760-8020 033-760-8029
대학 3 강원대학교 본교 대학교 강원 국립 고등교육법 강원특별자치도 춘천시 강원대학길 1 강원특별자치도 춘천시 효자동 192-1 37.868024 127.748387 1 Kangwondaehak-gil, Chuncheon-si, Gangwon-do 1 Kangwondaehak-gil, Chuncheon-si, Gangwon-do 24341 1970-03-01 00:00:00 www.kangwon.ac.kr/ 정재연 033-250-6114 033-251-9556
대학 4 강원대학교 제2캠퍼스 대학교 강원 국립 고등교육법 강원특별자치도 삼척시 중앙로 346 강원특별자치도 삼척시 교동 777 37.450792 129.159941 346 Jungang-ro, Samcheok-si, Gangwon-do 346 Jungang-ro, Samcheok-si, Gangwon-do 25913 2006-03-01 00:00:00 www.kangwon.ac.kr/ 정재연 033-570-6114 033-572-8620
대학 5 경북대학교 본교 대학교 대구 국립 고등교육법 대구광역시 북구 대학로 80 대구광역시 북구 산격동 1370-1 35.889097 128.614322 80, Daehak-ro, Buk-gu, Daegu, Republic of Korea 80, Daehak-ro, Buk-gu, Daegu, Republic of Korea 41566 1946-05-28 00:00:00 www.knu.ac.kr 홍원화 053-950-5114 053-950-2149
  • 그다음에 먼저 지도를 생성해 준다.
import folium 

Map=folium.Map(location=[36.714580, 127.720143],
               zoom_start=7,
               zoom_control=True,
               control_scale=True)
Map

  • 그런 다음 위도, 경도, 학교명을 하나씩 가져와서 Marker를 활용하여서 지도에 표시해 준다.
for i in range(len(df)):
  위도=df['위도'][i]
  경도=df['경도'][i]
  학교명=df['학교명'][i]
  mk=folium.Marker([위도, 경도],
                   popup=folium.Popup(학교명, max_width=100))
  mk.add_to(Map)

Map

  • 마지막으로 MarkerCluster를 표시해서 예쁘게(?) 지도를 만들어 준다.
import folium
from folium.plugins import MarkerCluster

Map=folium.Map(location=[36.714580, 127.720143],
               zoom_start=7,
               zoom_control=True,
               control_scale=True)

mc=MarkerCluster().add_to(Map) #MarkerCluster를 Map에 적용하기

for i in range(len(df)):
  위도=df['위도'][i]
  경도=df['경도'][i]
  학교명=df['학교명'][i]
  mk=folium.Marker([위도, 경도],
                   popup=folium.Popup(학교명, max_width=100))
  mk.add_to(mc) #Map이 아니라 mc에 마커를 적용해준다

Map

cf) iterrows()
for i in range(len(df)):
  위도=df['위도'][i]
  경도=df['경도'][i]
  학교명=df['학교명'][i]
  mk=folium.Marker([위도, 경도],
                   popup=folium.Popup(학교명, max_width=100))
  mk.add_to(mc)​

이 부분에서 위도와 경도, 학교명에 해당하는 데이터를 한 번에 가져오기 위해서 iterrows를 사용한다.
iterrows 같은 경우에는 열-값 형태로 변환해 준다.

import folium
from folium.plugins import MarkerCluster

Map=folium.Map(location=[36.714580, 127.720143],
               zoom_start=7,
               zoom_control=True,
               control_scale=True)

mc=MarkerCluster().add_to(Map)

for idx, row in df.iterrows(): #row: i번째 열에 해당하는 데이터를 튜플 형식으로 저장!
  mk=folium.Marker(location=[row['위도'], row['경도']], #튜플에 접근 하기위해서 row[''] 활용!
            popup=folium.Popup(row['학교명'],max_width=100))
  mk.add_to(mc)

Map