www.pubgesports.kr
*저는 배틀그라운드 제작사, 게이머, 대회와 아무런 상관이 없읍니다.
이전 글에서 야심차게 배경설명을 했다. 사실 분석은 정말 쪼꼬맸는데.. 주변과 나 자신의 기대가 커져서 조금 더 이것저것 해보려고 하고 있는 중이다. 어떻게 설명하면 좋을지 잘 모르겠지만 일단 해본다.
시작은 이랬다. 좋은 꿈을 꿨어야 했다.
matches.xlsx
shooting.xlsx
OGN ENTUS(ENT)
Afreeca Freecs(AF)
Gen.G(GEN)
GRIFFIN(GRF)
VRLU GHIBLI(VLG)
OP.GG SPORTS(OPGG)
기본적으로 데이터프레임의 1개 행은 플레이어 1명의 1경기 관련 데이터다. matches.xlsx
데이터는 플레이어 아이디와 언제 한 경기인지를 비롯하여 팀 랭킹, 킬 수, 어시스트 수, 생존시간, 이동거리 등 경기 전반에 관한 한 플레이어의 정보를 담고 있다. 8614개의 행, 17개 열로 이루어져 있다. matches라는 변수에 할당했다.
shooting.xlsx
데이터는 그중에서도 게임의 핵심이라 할 수 있는 총기사용에 관한 데이터다. 총기를 활용한 공격 수, 상대에게 피해를 가한 수, 피해량, 부위별 명중 수 등을 담고 있다. 8178개의 행, 13개 열로 이루어져 있다. shooting이라는 변수에 할당했다.
데이터의 플레이어는 341명, 출전팀은 66개로 집계된다.
우선 개인별로 데이터가 마련되어 있으니, 개인 차원에서 어떤 경향을 보이는지 알고 싶었다. matches 테이블에서 게임당 평균 킬 수(kills
), 평균 어시스트 수(assists
), 평균 피해량(damage
)을 구해 킬 실적 순으로 줄을 세워봤다.
*말하고 넘어가고 싶었던 부분이 있다. 주피터 노트북에도 작게 적혀있는데, 전체 테이블을 보면 player_id
와 player_name
이 모두 존재한다. plyer_id
는 사실상 "팀명_닉네임"으로 구성돼있는데, 개인 단위로 컬럼들을 간결하게 만들고 싶을 때 둘 중 어떤 걸 남기는 게 나을까? player_id
다. 왜냐면 이건 나중에 팀명을 따로 떼어낼 수 있어 활용도가 높기 때문이다. 이걸 너무 늦게 깨달아서 player_name
로 지지고 볶고 참 많이 했다.
암튼, 표를 보면 조금 이상하다. player_id
의 팀명 부분을 보자. 잘한 순서대로라면 한국대표로 뽑힌 6개팀 이름이 주로 보여야 하는 거 아닌가? 서머리에서는 하나도 보이지 않는다.
위에 언급한 세 가지 요소로 K-means 클러스터링을 해봤다. 그럼 잘 하는 애들 그룹이 좀 나눠지지 않을까.
from sklearn.cluster import KMeans
import plotly.express as px
X = 개인유효공격[['kills', 'assists', 'damage']]
kmeans = KMeans(n_clusters=8, random_state=0).fit(X)
fig = px.scatter(
개인유효공격, x = 'damage', y='kills', hover_data=['player_id'], color=kmeans.labels_)
fig.show()
아쉽게도 이미지에 누가 누군지 나타나진 않지만, 표 상에서 상위 5위 안에 들었던 초멘 플레이어들이 가장 오른쪽 클러스터(잘하리라 짐작되는) 분포해있다. 이상하게도 우리의 톱6(ENT, GEN, OPGG, GRF, VLG, AF)는 잘 존재하지 않는다.
사실 이 부분은 '경기 참여 수'를 고려하지 않았을 때 일어나는 현상이다. 많게는 총 100회까지 토너먼트를 치른 플레이어와 10회 이하를 치른 선수의 데이터가 같이 있다면? 후자가 어떤 식으로든 되게 잘한 한 번은 있을 수 있다.
팀 단위로 조금 더 살피면서 경기 참여 수 부분을 조정해봐야겠다고 생각했다. 아래에서는 드러나지 않지만 이후 판다스 쿼리를 통해 매치 수 50 이상의 플레이어 데이터만 추렸다.
전처리가 고됐지만, 결과와 설명 먼저 투척해둔다.
위 시각화를 통해 전반적인 개별 플레이어의 역량과 팀플레잉 정도를 파악할 수 있다.
이 내용들을 기반으로 당신은 이들 중 2위를 예측할 수 있겠는가? 다음을 더 보자
이번엔 matches가 아닌 shooting 데이터를 활용해 2.2와 유사한 작업을 해봤다.
위 시각화를 통해서도 전반적인 개별 플레이어의 역량과 팀플레잉 정도를 파악할 수 있다.
여기까지 봤을 때는 어떤가. 사실 서로 다른 두 데이터 시각화는 비슷한 경향을 보이고 있다. 서로 영향을 줄 수 밖에 없는 변수들이기 때문이다.
두개 같이 다시 보기 (두 그래프 다 오른쪽 상단에서 홀로 빛나는 플레이어는 Gen.G의 PIO다.)
모든 결과를 알고난 후 EDA 형태로 다시 살펴보니 사실 나는 좀 놀라웠다. 내가 선택한 팀이 어떤 명확한 특징을 보이고 있었기 때문이다. 그것이 무엇일까. 조금 더 진행된 분석과 함께 다음 편에서..