[AIVLE SCHOOL] 데이터 분석 표현(4) - 지도

춤추는 머쉬룸·2024년 10월 10일

AIVLE SCHOOL 6기

목록 보기
43/80
post-thumbnail

10/10 7세션

A. Simple Map

  • 위도, 경도를 마커로 표시
  • st.map() 사용
# 위도 : latitude  경도 : longitude
data = pd.DataFrame({
    'lat':[-34, 49, -38, 59.93, 5.33, 45.52, -1.29, -12.97],
    'lon':[-58, 2, 145, 30.32, -4.03, -73.57, 36.82, -38.5]
})

# 지도 그리기
st.map(data,
       latitude='lat',
       longitude='lon')


B. Folium Map

  1. 지도 초기 설정
  • 지도의 초기 위치 설정 (중심점)
  • zoom_start : 지도 크기 설정
  1. 지도에 원형 마커와 값 추가
  • iterrows() : 데이터 프레임을 한 행씩 읽어서 처리
  1. html 에 지도 그리기
  • _repr_html_() : 지도를 HTML 형식으로 표시
# 지도 초기 설정
my_map = folium.Map( location=[map_data['lat'].mean(), map_data['lon'].mean()], zoom_start=2 )

# # 지도에 원형 마커와 값 추가
for index, row in map_data.iterrows():       # 데이터프레임 한 행 씩 index, row에 담아서 처리 
    folium.CircleMarker(                     # 원 표시 선언
        location=[row['lat'], row['lon']],   # 원 중심- 위도, 경도
        radius=row['value'] / 5,             # 원의 반지름
        color='pink',                        # 원의 테두리 색상
        fill=True,                           # 원을 채움
        fill_opacity=1.0                     # 원의 내부를 채울 때의 투명도
    ).add_to(my_map)                         # my_map에 원형 마커 추가

    folium.Marker(                           # 값 표시 선언
        location=[row['lat'], row['lon']],   # 값 표시 위치- 위도, 경도
        icon=folium.DivIcon(html=f"<div>{row['name']} {row['value']}</div>"), # row['name'], row['value'] 표시
    ).add_to(my_map)                         # my_map에 값 추가
    
    
# 지도 그리기
st.components.v1.html(my_map._repr_html_(), width=800, height=600)
  • folium.Map() : 지도 객체 생성
  • map_data['lat'].mean()과 map_data['lon'].mean() : 평균 위도와 경도 위치를 지도 중심으로 설정
  • folium.CircleMarker() : 데이터프레임을 한 행씩 돌면서 위도, 경도로 마커 생성
  • folium.Marker() : 데이터프레임을 한 행씩 돌면서 위도, 경도에 값 표시

0개의 댓글