| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- OOP
- reactnavigation
- parser
- defaultdict
- DFS
- 함수형프로그래밍
- flexbox
- ReactNative
- 파일시스템
- 단위테스트
- CSS
- SQLD
- 코딩테스트
- sql
- Graph
- folium
- pandas
- 이벤트처리
- javascript
- 챌린지
- 부스트캠프
- 가상메모리
- 보안솔루션
- db
- 베이직
- BFS
- 프로그래밍패러다임
- display
- database
- PYTHON
- Today
- Total
DevLog
파이썬으로 서울시 따릉이 지도 만들기 (3) - folium 라이브러리로 지도 시각화하기 본문
서울시 공공자전거 실시간 대여 정보를 확인할 수 있는 "따릉이 지도" 만들기
- 목적 : 파이썬 활용 데이터 분석 & 시각화 실습 미니 프로젝트
- 개발 환경 : Jupyter Notebook
- 사용 언어 : Python3 (pandas, folium)
본격적으로 지도를 제작해보자!
데이터 불러오기

먼저 `pandas` 라이브러리로 엑셀 파일을 불러온다.
다음으로 `folium` 라이브러리를 사용해서 자전거 정보를 기록할 서울시 지도를 만들어주자.
데이터 시각화 지도 제작하기
folium 라이브러리 간단 가이드
1. 지도 생성하기
- `m = folium.Map(location = [위도, 경도], zoom_start = 확대정도) // 지도 m 생성`
2. 정보 추가하기
- 마커 추가하기 `folium.Marker([위도, 경도]).add_to(m)`
- 원 추가하기 `folium.CircleMarker([위도, 경도], radius = 원 크기).add_to(m)`
- 지도에서 클릭할 경우 마커 추가 `ClickForMarker().add_to(m)`
- 추가옵션
tooltip : "마우스 올리면 보이는 정보"
popup : "클릭했을 때 보이는 정보"
icon : 마커 아이콘 디자인, 색상 등 설정
# pip install folium
import folium
# 지도 만들기
# 기점: 서울역 [37.5536067, 126.9674308]
m = folium.Map(location = [37.5536067, 126.9674308], zoom_start = 12)

다음으로 엑셀 파일을 읽어온 `data`에서 필요한 정보를 추출하여 지도에 마커를 추가해보자.
# 각 row의 위도, 경도, 대여소명, 자전거 수 추출해서 마커 추가
for i in range(len(data)):
lat = data.loc[i, 'stationLatitude'] # 대여소 위치정보 (위도)
long = data.loc[i, 'stationLongitude'] # 대여소 위치정보 (경도)
name = data.loc[i, 'stationName'] # 대여소명
bike = data.loc[i, 'parkingBikeTotCnt'] # 현재 사용 가능한 자전거 수
total = data.loc[i, 'rackTotCnt'] # 전체 자전거 수
folium.Marker([lat, long], tooltip = f'{name}: {bike}', popup = name).add_to(m)
for 반복문으로 데이터프레임의 row를 하나씩 읽어와서 각 row에 있는 value들을 변수로 저장해줬다.
변수에 저장한 값을 사용해서 마커를 생성한 후, 최종적으로 지도에 add 해주면 끝!

+) 색상으로 마커 구분하기
지도에 똑같이 생긴 마커가 너무 많으면 원하는 정보를 찾기 어려울 수밖에 없다.
이럴 때 조건문을 사용해서 마커 아이콘의 색상 정보를 변경해주면 시각적으로 정보를 구분하기 쉬워진다!
# 각 row의 위도, 경도, 대여소명, 자전거 수 추출해서 마커 추가
for i in range(len(data)):
(...)
# 자전거 보유율에 따라서 마커 색상을 다르게 표시
# 50% 이상 보유 -> 파란색
# 3개 미만 보유 -> 빨간색
# 그 외 -> 초록색
if bike < 3:
color = 'red'
elif bike / total >= 0.5:
color = 'blue'
else:
color = 'green'
icon = folium.Icon(color = color, icon = 'info-sign')
folium.Marker([lat, long], tooltip = f'{name}: {bike}', icon = icon, popup = name).add_to(m)
앞선 코드에서 마커를 생성하기 전에 `folium.Icon()`으로 마커의 아이콘을 먼저 제작해주자.
이때, 아이콘의 색상을
현재 이용 가능한 자전거가 전체 자전거 수의 50% 이상이면 파란색으로,
자전거가 3대 미만이면 빨간색으로,
그 외의 경우에는 초록색으로 설정하여 아이콘을 생성해줄 것이다.
그렇게 만든 아이콘을 마커의 `icon` 옵션으로 넣어주면 최종적으로 아래와 같은 지도가 만들어진다.

folium 지도를 파일로 저장하기 (HTML)
만들어진 지도는 `save('경로')` 함수로 손쉽게 파일로 저장할 수 있다.
# html 파일로 저장
m.save('./bicycle_map.html')

초간단 따릉이 지도 완성~
'프로그래밍 언어 > Python' 카테고리의 다른 글
| [Python] index() vs. find() (0) | 2023.10.06 |
|---|---|
| [Python] iterator(반복자)란? - itertools를 이용한 효율적인 데이터 순회 방법 (0) | 2023.09.18 |
| 파이썬으로 서울시 따릉이 지도 만들기 (+α) - folium 마커 클러스터 MarkerCluster, 미니맵 MiniMap 추가하기 (0) | 2023.09.01 |
| 파이썬으로 서울시 따릉이 지도 만들기 (2) - 데이터 변환하기 (0) | 2023.08.31 |
| 파이썬으로 서울시 따릉이 지도 만들기 (1) - API 받아오기 (0) | 2023.08.31 |