728x90
반응형
SMALL
1. folium
- leaflet.js 기반으로 만들어진 라이브러리
- 지도위에 데이터를 표현해주는 대표적인 파이썬 지도 시각화 라이브러리
- foliunm문서(https://python-visualization.github.io/folium)
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 |