yeon's πŸ‘©πŸ»‍πŸ’»

[데이터 뢄석] Folium | 지도 ν™œμš©ν•˜κΈ° λ³Έλ¬Έ

Computer πŸ’»/데이터 뢄석

[데이터 뢄석] Folium | 지도 ν™œμš©ν•˜κΈ°

yeon42 2021. 8. 4. 23:51
728x90

2. Foliumn으둜 지도 ν™œμš©ν•˜κΈ°

conda install -c conda-forge folium

 

 

 

2.0.1 Foliumn μ‚¬μš© 예제

 

  • μœ„μ—μ„œ κ·Έλ¦° 어린이집, 학원-μž…μ‹œ 의 μƒν˜Έ 데이터λ₯Ό 지도에 μ‹œκ°ν™” ν•΄λ³΄μž
import folium

long = df_academy_selected["경도"].mean()
lat = df_academy_selected["μœ„λ„"].mean()

  - 경도와 μœ„λ„μ˜ 평균 값을 각각 long, lat λ³€μˆ˜μ— λ‹΄μ•„μ€Œ

 

 

 

 

 

  • map 쀑심 작기
m = folium.Map(location=[lat, long], zoom_start=12)

  - zoom_start λ₯Ό 높이면 그만큼 더 ν™•λŒ€λœλ‹€.

 

 

 

 

 

  • μƒκΆŒμ—…μ’…μ†ŒλΆ„λ₯˜λͺ… 이 '어린이집' κ³Ό '학원-μž…μ‹œ' 인 λ°μ΄ν„°λ§Œ isin을 톡해 κ°€μ Έμ˜€κΈ°
df_m = df_academy_selected[df_acdemy_selected["μƒκΆŒμ—…μ’…μ†ŒλΆ„λ₯˜λͺ…"].isin(["어린이집", "학원-μž…μ‹œ"])]

  -> 10000개의 λ°μ΄ν„°μ—μ„œ 1000개의 λ°μ΄ν„°λ‘œ 좔렀짐

 

 

 

 

 

  • 일단 데이터 ν•˜λ‚˜λ§Œ μ°μ–΄λ³΄μž
m = folium.Map(location=[lat, long], zoom_start=12)

folium.Marker([XX.XX, OO.OO], tooltip="μƒκ°λ‚˜λ¬΄λ‘œλ΄‡κ΅μŠ΅μ†Œ").add_to(m)
# folium.Marker([XX.XX, OO.OO], popup="<i>μƒκ°λ‚˜λ¬΄λ‘œλ΄‡κ΅μŠ΅μ†Œ</i>", tooltip="μƒκ°λ‚˜λ¬΄λ‘œλ΄‡κ΅μŠ΅μ†Œ").add_to(m)

  - tooltip : 마우슀 κ°–λ‹€ λŒ€λ©΄ λ‚˜μ˜΄

  - popup : ν΄λ¦­ν•΄μ•Όλ§Œ λ‚˜μ˜΄

 

 

-> 일일이 λ‹€ 등둝을 ν•΄μ•Όν• κΉŒ? No !

 

 

 

 

 


 

 

 

 

  • for문으둜 λ°μ΄ν„°ν”„λ ˆμž„μ„ μˆœνšŒν•˜λ©° μ›ν•˜λŠ” κ°’ κ°€μ Έμ˜€κΈ°
for i in df_m.index[:100]:
	tooltip = df_m.loc[i, "μƒν˜Έλͺ…"] + "-" + df_m.loc[i, "λ„λ‘œλͺ…μ£Όμ†Œ"]
    lat = df_m.loc[i, "μœ„λ„"]
    long = df_m.loc[i, "경도"]
    
    print(tooltip, lat, long)

  - df_m.loc[인덱슀, "컬럼λͺ…"]

 

 

 

 

 

  • folium으둜 Markerλ₯Ό μ§€λ„λ‘œ ν‘œμ‹œν•˜κΈ°
for i in df_m.index[:100]:
	tooltip = df_m.loc[i, "μƒν˜Έλͺ…"] + "-" + df_m.loc[i, "λ„λ‘œλͺ…μ£Όμ†Œ"]
    lat = df_m.loc[i, "μœ„λ„"]
    long = df_m.loc[i, "경도"]
    
    folium.Marker([lat, long], tooltip=tooltip).add_to(m)

 

 

 

 

 

  • html 파일둜 μ €μž₯ν•˜κΈ°
m.save('index.html')

  - μœ„μ˜ 지도 파일이 μƒˆλ‘œμš΄ html 파일둜 μ €μž₯됨을 확인할 수 있음

 

 

 

 

 

 

  • CircleMarker둜 ν‘œν˜„ν•˜κΈ°
m = folium.Marker(location=[lat, long], zoom_start=12, tiles="Stamen Toner")

for i in df_m.index[:100]:
	tooltip = df.m_loc[i, "μƒν˜Έλͺ…"] + "-" + df.m_loc[i, "λ„λ‘œλͺ…μ£Όμ†Œ"]
    lat = df_m.loc[i, "μœ„λ„"]
    long = df_m.loc[i, "경도"]
    
    folium.CircleMarker([lat, long], tooltip=tooltip, radius=3).add_to(m)

Comments