축구

PL 홈구장 지도를 만들어보자![python/folium]

leon_choi 2022. 7. 17. 09:05
반응형

안녕하세요. 지난 번에는 아놀드의 데이터를 다뤄봤다면, 이번에는 조금 더 재밌는 지도 그리기를 해볼까 합니다. 파이썬에는 'Folium'이라는 라이브러리가 있는데요. 이를 통해서 지도에 다양한 시각화 요소를 넣을 때 굉장히 유용하게 쓸 수 있는 라이브러리 입니다.  저는 이를 가지고 다가올 22/23시즌 프리미어리그 20팀의 홈구장이 표시된 지도를 만들어보려고 하는데요. 이를 위해서는 먼저 홈구장 마커를 찍을 잉글랜드 지도가 먼저 필요합니다. 우선 코드를 보시겠습니다.

 

import pandas as pd
import folium

df= pd.read_excel('PL.xlsx',sheet_name='Sheet1',index_col=0)

print(df)

#잉글랜드 지도 만들기
England_map = folium.Map(location=[52.83820341,-2.32781866], zoom_start=7.49)

네 이렇게 잉글랜드의 지도를 불러왔는데요. 지도를 만들기 위해서는 위도와 경도가 필요합니다. 위도와 경도는 구글어스를 통해 얻을 수 있고요. 구조를 보면 folium.Map(location=[위도, 경도], zoom_start= 시작화면 줌 크기) 입니다.  네 이제 그럼 20개 구단의 홈구장을 마킹해야 하는 데요. 이를 하기 위해서는 20개 구장의 이름과 위도, 경도가 필요합니다. 저는 데이터프레임으로 반복문을 돌려 마킹을 완성할 것이기 때문에 구글 어스를 통해 20개 구장의 이름과 위도, 경도를 모두 모아 놓았고 데이터프레임화 시켰습니다. 그렇다면 이를 가지고 반복문을 어떻게 돌려야 할까요? 다음 코드 결과를 보고 풀이를 해보겠습니다.

20개 구장의 위도와 경도

import pandas as pd
import folium

df= pd.read_excel('PL.xlsx',sheet_name='Sheet1',index_col=0)

print(df)

#잉글랜드 지도 만들기
England_map = folium.Map(location=[52.83820341,-2.32781866], zoom_start=7.49)

England_map.save('./england.html')

#PL 20개 구단 홈구장 Marker로 표시
for i in range(len(df)):
    folium.Marker([df.iloc[i,1],df.iloc[i,2]],popup=df.index[i]).add_to(England_map)
    
England_map.save('./pl.html')

네 이렇게 20개 구장의 좌표를 찍어봤습니다. folium에서 이렇게 좌표를 찍기 위해서는 folium.Marker()매소드를 활용하면됩니다. 구조는 folium.Marker([위도,경도], popup =  마커 클릭시 나올 이름 ).add_to(마커를 입힐 지도)입니다. 저는 반복문을 통해 데이터프레임의 첫번째부터 마지막까지 총 20개를 찍어야 하는데요. 반복문 잘라와서 보자면

#PL 20개 구단 홈구장 Marker로 표시

for i in range(len(df)):
-> 데이터프레임 첫번째부터 마지막까지 반복

	folium.Marker([df.iloc[i,1],df.iloc[i,2]],popup=df.index[i]).add_to(England_map)
   -> df.iloc[i,1] : i번째 위도 
   -> df.iloc[i,2] : i번째 경도
   -> popup = df.index[i] : i번째 인덱스명 -> 현재 인덱스를 구장명을 지정한 상태
   
England_map.save('./pl.html')

이런식으로 1부터 20까지 반복해 지도에 마커를 완성할 수 있었습니다. 다음 시간에는 이를 가지고 좀 더 다양하게 꾸밀 수는 없는지 알아보도록 하겠습니다.

반응형