[Python] [Folium] 해외의 일본인 축구 선수를 지도상에서 시각화한다 2021.1.1 현재

Japanese football players in foreign clubs shown on the map.

이 기사에 대하여



현재, 비야레알의 쿠보 선수의 동향이 화제가 되고 있는 곳입니다만, 해외에서 활약되고 있는 선수는 어디에 있는지 Python/Folium에서 가시화해 보았습니다. 그 중에서 궁리한 포인트를 설명하고 싶습니다.

1. Folium에서 아이콘을 소속 팀으로 표시
2. 소속 선수명을 클릭이 아니라 마우스 오버로 표시하도록 한다
3. 데이터의 입수·전처리에 대해서

결과



완성 된 것은 여기에서 액세스하십시오


팀 아이콘 표시 정보



맞춤 아이콘은 folium.features.CustomIcon을 사용했습니다.
좀처럼 일본어 설명도 없고, 영어 Folium 사이트 설명

팀의 아이콘은 그물에서 수집한 것을 배경 투명하게 하고 png로 image 폴더에 넣어져 있고 아이콘을 찾을 수 없는 경우의 에러 처리도 아래의 코드에는 넣어져 있습니다.

소속 선수명을 클릭이 아니라 마우스 오버로 표시하도록 한다



이 마우스 오버로 정보를 표시하는 것을 영어로 tooltip이라고 합니다.
Folium 마커를 지정할 때
tooltip='문자열'
로 지정하면 됩니다. 아래 코드를 참조하십시오.

데이터의 입수·전처리에 대해서



우선은 Wikipedia의 정보를 바탕으로, 홈 타운, 홈 스타디움의 경도·위도, 아이콘 등을 모아 엑셀로 하고 있습니다.
진짜는 자동으로 스크래핑으로 하고 싶었지만, 그다지 수도 없기 때문에 수동으로 했습니다. . .
수집한 각 선수·팀의 데이터는 EXCEL로 저장하고 Pandas/Dataframe에서 플롯하고 있습니다.

엑셀 데이터는 이쪽의 밝은 하늘색의 열만 이용


나름대로 데이터를 수집하는 것은 어려웠습니다 땀

코드



import pandas as pd
import folium
from glob import glob

df_player= pd.read_excel ('PlayerClubData.xlsx', header=0,encoding='utf-8' )

m = folium.Map(location=[46, -1.5],  zoom_start=4)

for club in df_player['club'].unique():
    df2=df_player[df_player['club']==club]  #2名以上いる場合、名前を結合する
    names=' '.join(df2['Player'].tolist()) # Series = > List => joinしてstr

    for item in df2.head(1).iterrows():  #ちょっとややこしいが、各クラブの1人目だけプロットするのでhead(1)

        if item[1]['lat']>0 or item[1]['lat']<0 :  # 経度データがfloatでnanはスキップする
            l_in = [s for s in glob("./images/*.png") if club in s]  #アイコンファイルがあるかチェックする
            if len(l_in)>0: #該当するファイル数 通常は1
                iconTmp = folium.features.CustomIcon(l_in[0], icon_size=(50,50)) #ここでアイコンファイルを指定する 
            else:
                iconTmp=folium.Icon(color='red') #アイコンファイルがない場合はこちら

            folium.Marker(location=[item[1]['lat'], item[1]['lon']], 
                tooltip=item[1]['club']+'<br>'+names,   # このtooltipでマウスオーバーで表示できる
                icon=iconTmp).add_to(m) #上で指定したアイコンファイルにする

m.save('index.html')

print ('finished!')

소스 코드 및 데이터 파일은 여기에서

참고



Folium에서 아이콘을 표시하는 샘플(영문)Python Folium — A Data Visualization Superhero
샘플 코드를 알기 쉬웠습니다.

축구 해외 팀의 소속 클럽 - 전체 화면지도
처음에는 이쪽을 보고 같은 것을 만들고 싶었습니다. 이 멤버는 2012년? !

Python의 folium으로 이와테현내의 병원의 장소를 시각화해 본다
이쪽도 여러가지 참고로 했습니다.

감상



covid-19로 해외에 부담없이 갈 수 없게 되어 버렸습니다만, 개인적으로는 해외 여행은 관광 명소를 둘러보는 것도 좋지만, 현지에서 축구 관전하는 것도 즐거운가라고 생각합니다. 그 때에는 이 지도에서 효율적으로 관전할 수 있는 루트를 검토해 주시면 좋겠습니다.

# 개인적으로는, 쿠보건영, 미나미노 타쿠미, 스웨덴에 있는 스기타 유키야, 미야시 료에 기대하고 있습니다!

좋은 웹페이지 즐겨찾기