본문 바로가기

파이썬 데이터 분석

[python스터디] folium으로 지도 시각화

오늘은 위도 경도 데이터를 통해 지도를 그려보는 스터디를 해보도록 하겠습니다.

진행을 위해서는 folium 이라는 라이브러리를 설치하고 불러와야 하는데요.

저는 설치가 되어있다고 가정하고 import 하는 부분부터 진행해보도록 하겠습니다.

 

import folium

# 지도의 중심을 지정하기 위해 위도와 경도의 평균을 구합니다. 
lat = df_31['위도'].mean()
long = df_31['경도도'].mean()

m =folium.Map(location=[lat,long],  zoom_start= 12)

명령어를 적으면 아래 이미지와 같이 위도/경도 평균값을 나타내는 지도가 나오게 됩니다.

 

샘플값을 추출해서 지도에 표시해보도록 하겠습니다.

df_31.sample(1)

 

m =folium.Map(location=[lat,long],  zoom_start= 12)

folium.Marker(
    [37.530233, 126.873278], 
    popup='<i>베스킨라빈스</i>', 
    tooltip="베스킨라빈스").add_to(m)

 

아래 지도에 파랗게 표시되는 것을 확인할 수 있습니다. folium.Markert라는 함수를 사용하였고 popup은 클릭시, tooltip은 마우스를 대면 '베스킨라빈스'라고 뜨는 것을 확인하실 수 있습니다.

 

그러면 이제 데이터셋에 있는 위도/경도 데이터를 통해 베스킨라빈스와 던킨도너츠를 지도에 나타내보도록 하겠습니다.

# 데이터프레임의 인덱스만 출력합니다. -> 인덱스번호를 반복문을 통해 데이터 값을 불러오려고 합니다.
df_31.index

 

m =folium.Map(location=[lat,long],  zoom_start= 12)

for i in df_31.index :
    sub_lat =df_31.loc[i,'위도']
    sub_long =df_31.loc[i,'경도']
    title = df_31.loc[i,'상호명'] + "-" + df_31.loc[i,'도로명주소']
    
    icon_color = "blue"
    if df_31.loc[i, "브랜드명"] == "던킨":
        icon_color = "red"
    
    folium.Marker(
        [sub_lat, sub_long], 
        icon=folium.Icon(color=icon_color),
        popup= f'<i>{title}</i>', 
        tooltip=f"{title}").add_to(m)
m