728x90
반응형
SMALL
1. folium
- leaflet.js 기반으로 만들어진 라이브러리
- 지도위에 데이터를 표현해주는 대표적인 파이썬 지도 시각화 라이브러리
- foliunm문서(https://python-visualization.github.io/folium)
Folium — Folium 0.14.0 documentation
folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the leaflet.js library. Manipulate your data in Python, then visualize it in on a Leaflet map via folium. Concepts folium makes it easy to visualize data tha
python-visualization.github.io
1-1. folium 설치 및 임포트
!pip install folium
import folium
1-2. 지도 띄우기
# folium.Map(location=[위도, 경도], zoom_start=지도 배율)
map_folium = folium.Map(location=[37.5000065,127.0356027], zoom_start=17)
map_folium
1-3. 마커 생성
- Marker(): location 속성으로 지정한 위치에 마커를 생성
- Popup(): 마커를 클릭했을 때 표시할 문자열을 설정
- add_to(): 작성된 마커를 지도에 추가
map_folium = folium.Map(location=[37.5000065,127.0356027], zoom_start=17)
popup = folium.Popup('코리아IT아카데미', max_width=200) # 마커를 클릭했을 때 '코리아IT아카데미'를 띄유는 팝업 창
folium.Marker(location=[37.5000065,127.0356027], popup=popup).add_to(map_folium)
map_folium
✅ 다음 위치의 경도 위도 정보를 통해 지도에 마커로 나타내기, 마커를 원하는 이미지로 바꾸기
- 지도: 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 = 'paw.png'
icon = CustomIcon(icon_image, icon_size=(32,32),icon_anchor=(10,30))
icon2 = CustomIcon('strawberries.png', icon_size=(32,32),icon_anchor=(10,30))
map = 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)
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)
popup = folium.Popup('서울지방경찰청', max_width=200)
folium.Marker(location=[37.57504045678939, 126.97195576938117], popup=popup,
icon=folium.Icon(color='black', icon='user')).add_to(map)
popup = folium.Popup('광화문', max_width=200)
folium.Marker(location=[37.57617987638928, 126.97694467807803], popup=popup,
icon=icon).add_to(map)
popup = folium.Popup('영풍문고-종로본점', max_width=200)
folium.Marker(location=[37.56999947440024, 126.98228391170936], popup=popup,
icon=icon2).add_to(map)
map
1-4. 원의 범위로 마커 생성
- CircleMarker(): 원의 범위를 마커로 생성
map = 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)
map
2. folium 활용하여 도서관 데이터 다루기
📄 예제에 사용할 파일
# 데이터프레임을 다루기 위한 라이브러리 임포트
import pandas as pd
# csv파일로 데이터프레임 만들기
library = pd.read_csv('/content/drive/MyDrive/KDT/Python/2. 데이터분석/data.csv')
library.info()
# 지도 띄우기, 서울 중심
map = folium.Map(location=[37.58, 127.0], zoom_start=11)
map
# iterrows(): 데이터프레임의 행 한줄 한줄을 반복문을 통하여 읽어올 수 있도록 iterable한 객체로 만듦 -> 인덱스와 데이터 2개를 리턴함
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
# MarkerCluster - 마커를 군집으로 잡아 보여줌
from folium.plugins import MarkerCluster
mc = MarkerCluster()
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(mc)
mc.add_to(map)
map
# 서클마커로 도서관 표시하기
# 2010년 이후 개관: 파란색
# 2011년 이전 개관: 빨간색
map = folium.Map(location=[37.58, 127.0], zoom_start=11)
for _, row in library.iterrows():
row['개관일'] = pd.to_datetime(row['개관일'])
popup = folium.Popup(row['시설명'], max_width=200)
if row['개관일'].year >= 2010:
folium.CircleMarker(location=[row['위도'], row['경도']], popup=popup, radius=10, color='blue', fill_color='#B4E5FF').add_to(map)
else:
folium.CircleMarker(location=[row['위도'], row['경도']], popup=popup, radius=10, color='red', fill_color='#EC4074').add_to(map)
map
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=11)
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
728x90
반응형
LIST
'Python > Data Analysis' 카테고리의 다른 글
[파이썬, Python] 워드클라우드(WordCloud) - 핵심 단어 시각화 하기! (0) | 2023.06.13 |
---|---|
[파이썬, Python] 형태소 분석 - KoNLPy (0) | 2023.06.13 |
[파이썬, Python] Matplotlib - 시각화 라이브러리 (1) | 2023.06.13 |
[파이썬, Python] Pandas 모듈 - 🔟 원 핫 인코딩(One Hot Encoding) (0) | 2023.06.13 |
[파이썬, Python] Pandas 모듈 - 9️⃣ 데이터프레임에서 특정 데이터타입을 가진 열(column) 가져오기 select_dtypes (0) | 2023.06.13 |