250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- __len__
- remove()
- MySqlDB
- glob
- __annotations__
- choice()
- shutil
- locals()
- __getitem__
- JS
- MySQL
- CSS
- __sub__
- View
- items()
- Database
- inplace()
- shuffle()
- count()
- fileinput
- HTML
- node.js
- fnmatch
- zipfile
- discard()
- randrange()
- mro()
- 오버라이딩
- 파이썬
- decode()
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(Python) folium 본문
728x90
반응형
1. folium
- leaflet.js 기반으로 만들어진 라이브러리
- 지도위에 데이터를 표현해주는 대표적인 파이썬 지도 시각화 라이브러리
- folium.document
In [ ]:
!pip install folium
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Requirement already satisfied: folium in /usr/local/lib/python3.10/dist-packages (0.14.0)
Requirement already satisfied: branca>=0.6.0 in /usr/local/lib/python3.10/dist-packages (from folium) (0.6.0)
Requirement already satisfied: jinja2>=2.9 in /usr/local/lib/python3.10/dist-packages (from folium) (3.1.2)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from folium) (1.22.4)
Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from folium) (2.27.1)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2>=2.9->folium) (2.1.2)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (1.26.15)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (2022.12.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (2.0.12)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->folium) (3.4)
In [ ]:
import folium
In [ ]:
# folium.Map(location=[위도, 경도], zomm_start=배율, ...)
map_folium = folium.Map(location=[37.50006, 127.0355806], zoom_start=17)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
# Marker(): location 속성으로 지정한 위치에 마커를 생성
# popup(): 마커를 클릭했을 때 표시할 문자열을 설정
# add_to(): 작성된 마커를 지도에 추가
map_folium = folium.Map(location=[37.50000,127.0355806],zoom_start=17)
popup = folium.Popup('코리아it아카데미',max_width=200)
folium.Marker(location=[37.50000,127.0355806],popup=popup).add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
# 지도: 37.56652479270633, 126.9779129116262
# 서울특별시청: 37.56652479270633, 126.9779129116262
# 덕수궁: 37.56585320879458, 126.97514572197248
# 서울지방경찰청: 37.57504045678939, 126.97195576938117
# 광화문: 37.57617987638928, 126.97694467807803
# 영풍문고-종로본점: 37.56999947440024, 126.98228391170936
from folium.features import CustomIcon
icon_image = 'batman.png'
icon = CustomIcon(icon_image, icon_size=(45, 45))
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262],zoom_start=15)
popup = folium.Popup('서울특별시청',max_width=200)
folium.Marker(location=[37.56652479270633, 126.9779129116262],popup=popup,
icon = folium.Icon(color='red', icon='star')).add_to(map_folium)
popup = folium.Popup('덕수궁',max_width=200)
folium.Marker(location=[37.56585320879458, 126.97514572197248],popup=popup,
icon = folium.Icon(color='pink', icon='ok')).add_to(map_folium)
popup = folium.Popup('서울지방경찰청',max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117],popup=popup,
icon = icon).add_to(map_folium)
popup = folium.Popup('광화문',max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803],popup=popup).add_to(map_folium)
popup = folium.Popup('영풍문고-종로본점',max_width=200)
folium.Marker(location=[37.56999947440024, 126.98228391170936],popup=popup).add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
# CircleMarker(): 원의 범위를 마커로 생성
map_folium = folium.Map(location=[37.56652479270633, 126.9779129116262],zoom_start=15)
popup = folium.Popup('서울특별시청',max_width=200)
folium.CircleMarker(location=[37.56652479270633, 126.9779129116262],popup=popup,
radius=100, color='red', fill_color='#EC4074').add_to(map_folium)
map_folium
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

2. folium 활용
In [ ]:
import pandas as pd
In [ ]:
library = pd.read_csv('/content/drive/MyDrive/KDT/2. 데이터분석/data.csv')
In [ ]:
library
Out[ ]:
고유번호 | 구명 | 법정동명 | 산지여부 | 주지번 | 부지번 | 새주소명 | 시설명 | 운영기관 | 설립주체 | 시설구분 | 개관일 | 면적 | 홈페이지주소 | 연락처 | 생성일 | 경도 | 위도 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 21 | 구로구 | 구로3동 | 1 | 777 | 1 | 구로구 디지털로 27다길 65 2층 | 꿈마을 도서관 | 구로구 시설관리공단 | 구립도서관 | 2007-04-05 | 476.0 | lib.guro.go.kr/dreamtown/ | 830-5807 | 126.890115 | 37.487220 | ||
1 | 22 | 용산구 | 후암동 | 1 | 30 | 84 | 용산구 후암동 30-84 | 남산 도서관 | 교육청도서관 | 1922-10-05 | 0.0 | lib.sen.go.kr/lib_index.jsp | 126.981375 | 37.552664 | ||||
2 | 23 | 중구 | 신당동 | 1 | 844 | 중구 다산로 32 | 남산타운 문화체육센터 어린이도서관 | 시설관리공단 | 구립도서관 | 2010-04-01 | 273.8 | www.e-junggulib.or.kr | 02-2280-8520 | 127.009297 | 37.549020 | |||
3 | 24 | 노원구 | 상계10동 | 1 | 686 | 노원구 온곡길 21 | 노원 정보도서관 | 노원 교육복지재단 | 구립도서관 | 2006-02-15 | 6526.0 | www.nowonlib.kr | 02-950-0029 | 127.064177 | 37.660927 | |||
4 | 25 | 노원구 | 중계3동 | 1 | 508 | 노원구 중계3동 508 | 노원 평생학습관 | 교육청도서관 | 1990-05-08 | 0.0 | lib.sen.go.kr/lib_index.jsp | 127.067120 | 37.640120 | |||||
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
118 | 118 | 광진구 | 중곡동 | 1 | 168 | 8 | 광진구 능동로 16 | 중곡 문화체육센터 도서관 | 광진구 시설관리공단 | 구립도서관 | 2008-10-27 | 1320.0 | gwangjinlib.seoul.kr | 3408-4900 | 127.084751 | 37.567803 | ||
119 | 119 | 중구 | 신당동 | 1 | 52 | 164 | 중구 다산로38길 66-35 | 중구 구립 신당 도서관 | 시설관리공단 | 구립도서관 | 2011-03-24 | 1557.4 | www.e-junggulib.or.kr | 02-2280-9240 | 127.018969 | 37.561726 | ||
120 | 121 | 강남구 | 대치4동 | 1 | 928 | 22 | 강남구 도곡로 북49길 23 | 즐거운 도서관 | (사)작은도서관 만드는 사람들 | 구립도서관 | 2004-09-01 | 325.0 | library.gangnam.go.kr | 02-565-7533 | 127.057872 | 37.499750 | ||
121 | 122 | 은평구 | 증산동 | 1 | 173 | 8 | 은평구 증산로5길 6 | 증산 정보도서관 | 사회복지법인 인덕원 | 구립도서관 | 2008-10-09 | 2110.0 | www.jsplib.or.kr | 02-307-6030 | 126.907643 | 37.582804 | ||
122 | 123 | 강남구 | 청담동 | 1 | 124 | 1 | 강남구 압구정로동50길 26 | 청담 도서관 | (사)작은도서관 만드는 사람들 | 구립도서관 | 1999-10-11 | 348.0 | library.gangnam.go.kr | 02-540-7042 | 127.049339 | 37.525094 |
123 rows × 18 columns
In [ ]:
map = folium.Map(location=[37.58, 127.0], zoom_start=11)
map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
map = folium.Map(location=[37.58, 127.0], zoom_start=11)
for _, row in library.iterrows():
icon_image = 'library.png'
icon = CustomIcon(icon_image, icon_size=(45, 45))
popup = folium.Popup(row['시설명'], max_width=200)
folium.Marker(location=[row['위도'], row['경도']], popup=popup, icon=icon).add_to(map)
map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
# MarkerCluster
from folium.plugins import MarkerCluster
mc=MarkerCluster()
for _, row in library.iterrows():
icon_image = 'library.png'
icon = CustomIcon(icon_image, icon_size=(45,45))
popup = folium.Popup(row['시설명'], max_width=200)
folium.Marker(location=[row['위도'], row['경도']], popup=row['시설명'], icon=icon)
map.add_child(mc)
map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

In [ ]:
# 서클마커로 도서관 표시하기
# 2010년 이후 개장: 파란색
# 2010년 이전 개장: 빨간색
def select_color(row):
year = int(row['개관일'].split('-')[0])
if year > 2010:
return 'blue'
else:
return 'red'
map = folium.Map(location=[37.58, 127.0], zoom_start=13)
for _, row in library.iterrows():
popup = folium.Popup(row['시설명'], max_width=200)
folium.Circle(location=[row['위도'], row['경도']], popup=popup, radius=200, color=select_color(row),
fill_color=select_color(row)).add_to(map)
map
Out[ ]:
Make this Notebook Trusted to load map: File -> Trust Notebook

728x90
반응형
'파이썬 데이터 분석' 카테고리의 다른 글
(Python) 전국 도시공원 데이터 프로젝트 (0) | 2023.06.09 |
---|---|
(Python) 상권별 업종 밀집 통계 프로젝트 (0) | 2023.06.09 |
(Python) 워드 클라우드 (0) | 2023.06.08 |
(Python) 형태소 (0) | 2023.06.08 |
(Python) 가상 쇼핑몰 데이터 프로젝트 (0) | 2023.06.08 |
Comments