본문 바로가기
데이터 분석/축구 데이터 분석

3. EPL 20/21 시즌 의적팀 알아보기

반응형

축구 데이터 - 3. EPL 20/21 시즌 의적팀 알아보기

 

 


재미로 보는 축구데이터 , 세번째는 EPL 20/21 시즌 의적팀들 알아보기 입니다.

 

의적팀이란 , 본인 보다 강한 팀에게는 승점을 따오고 약한 팀에게는 패배해 승점을 나누어주는 팀을 의미합니다.

 

대표적으로 최근 EPL 에서는 울버햄튼, 예전 시즌을 생각해보자면 리버풀 정도가 의적팀으로 불렸었습니다.

 

사실 우리가 말하는 의적팀은 팀의 입장에서 보면 그리 썩 좋은 수식어는 아닙니다.

 

이겨야할 경기를 지고 , 져야할 경기를 이긴다는 뜻이기 떄문입니다.

 

다시말해 어떻게 보면 팀의 실력에 있어 기복이 매우 크다는 뜻으로 들릴 수 있기 떄문입니다.

 

그래서 의적질을 많이 한다는 팀은 기복이 매우 큰 팀 이라고도 볼 수 있습니다.

 

이 이야기는 아래에서 더 하도록 하고 일단 EPL 20/21 시즌 의적팀을 한번 알아보도록 하겠습니다.

 

의적팀을 구분 할 수 있는 방법은 일단 어느 두팀이 맞붙는다고 가정할 때 두 팀간의 우열을 가릴 수 있어야 합니다.

 

예를 들어 맨시티와 번리가 맞붙는다고 할때 , 대부분은 맨시티가 승리한다고 이야기 할 것입니다.

 

하지만 크리스탈 팰리스와 번리가 맞붙는다고 할때 자신있게 번리나 크리스탈 팰리스가 이긴다고 할 사람은 별로 없을 것 입니다.

 

따라서 각각의 승부에 대해 어느 팀이 이길 가능성이 높은지 , 낮은지를 파악해야 합니다.

 

이번 글에서는 각 매치에 대한 배당 정보를 활용하여 승리 , 무승부 , 패배에 대한 대략적인 확률 정보로 사용하겠습니다.

 

 

들어가기 앞서 , 본 글에서는 대한민국 체육진흥투표권 합법 스포츠 토토 인터넷 발매 사이트인 베트맨토토의 배당정보를 사용합니다.

 

또한 덧붙여서 말씀드리자면 본글은 불법 스포츠 토토와 도박 등에 대해서 권장하지도 않고 , 스포츠 토토를 추천하는 글이 아님을 밝힙니다.

 

축구 데이터를 분석해보고자 하는 입장에서 사용하는 배당 데이터 일 뿐 , 스포츠 토토와는 아무런 관계가 없습니다.

 


 

 

먼저 데이터를 분석해보기 전에 배당에 대한 정보부터 알아보도록 하겠습니다.

 

배당 이란 , 각 스포츠 베팅 업체들이 전문가들을 통해 각 팀의 최근 폼 , 부상자 , 상대 전적 등등을 고려해 승 , 무 , 패가 나올 수 있는 확률을 말합니다.

 

예를 들어 맨시티와 레스터 시티의 배당이 승리 : 1.55 / 무승부 : 3.25 / 패배 : 5.5 라면 확률은 배당의 역순으로 계산하면 나오게 됩니다.

 

 

배당 - 확률 계산법

 

 

역으로 확률에서 배당을 계산하는 방법은 승리할 확률이 64% 이니 1 / 0.64 라는 계산을 통해 1.55 라는 배당을 도출해냅니다.

 

이처럼 다시말해 배당은 스포츠 분석관들이 분석한 어느 경기 결과에 대한 확률이라는 점을 알 수 있습니다.

 

물론 이러한 승,무,패에 대한 확률은 각각 분석하는 사람들의 주관이 섞일 수 있고 , 또 정해진 규칙이나 법칙이 있는 것이 아니기에 데이터로 쓰기에 좋지 않을 수 있습니다.

 

따라서 본글은 대략적인 경향을 보여드리려고 하는 것이니 재미로 봐주셨으면 좋겠습니다.

 

 


 

필요한 정보는 EPL 20/21 시즌 각 팀들의 라운드별 배당정보 ,  각 팀의 라운드별 승, 무, 패 기록입니다.

 

해당 정보들은 웹 크롤링을 통해 엑셀 파일로 만들어 두었습니다.

 

EPL 20/21 시즌 라운드별 승,무,패 배당정보

 

이후 , 각 팀끼리의 의적질을 비교하기 위해서는 수치적인 측면에서 데이터를 비교해야 합니다.

 

따라서 배당 정보 데이터와 해당 라운드에 얻어낸 승점을 활용해 EZ_Point 라는 새로운 데이터를 만들었습니다.

 

EZ_Point = ( 따낸 경기 , 내준 경기의 배당 ) * ( 따내거나 내준 승점 ) 입니다.

 

즉 고배당의 경기와 따낸 승점에 대해서 가중치가 부여되는 것 입니다.

 

예를 들어 배당이 승리 : 1.55 / 무승부 : 3.25 / 패배 : 5.5 인 경기에서 패배를 하였다면 , 상대에게 승점 3점을 내주었고 5.5 배당인 경기를 패배하였으므로 양팀은 EZ_Point를 5.5 * 3 인 16.5 만큼을 얻게 됩니다.

 

또한 , 배당이 승리 : 1.55 / 무승부 : 3.25 / 패배 : 5.5 인 경기에서 무승부를 하였다면 , 상대에게 승점 1점을 내주었으므로 배당인 3.25를 곱해 양팀은 EZ_Point를 3.25 * 1 인 3.25 만큼을 얻게 됩니다.

 

만약 승리 : 1.55 / 무승부 : 3.25 / 패배 : 5.5 인 경기에서 승리하였다면 , 해당 경기의 결과는 가장 높은 확률의 결과 , 우리가 가장 일반적으로 생각하는 결과가 나왔으므로 EZ_Point의 증감은 없습니다.

 

EZ_Point가 높을 수록 의적팀일 확률이 높을 것이고 , 낮을 수록 의적팀이 아닐 확률이 높을 것이라고 생각됩니다.

 

이런 식으로 각 팀별 전체 라운드의 EZ_Point를 계산하여 의적질을 수치적으로 비교해보도록 하겠습니다.

 

 

import openpyxl

btk = openpyxl.load_workbook("./EPL 20.21 배당정보.xlsx")
btk_sheet = btk.active
sp = 0 # 팀 index
team_name = "팀이름" 
ez_point = int(0) # EZ_Point
how_many = 0 # 발생한 횟수

for i in range(1+sp,39+sp):
    if str(btk_sheet["A{}".format(i)].value).replace("\n","").replace(" ","") == team_name:
        if btk_sheet["C{}".format(i)].value > btk_sheet["D{}".format(i)].value : #팀이 이긴경우
            if btk_sheet["E{}".format(i)].value > btk_sheet["G{}".format(i)].value : # 역배 팀이 이긴경우
                ez_point += (3 * btk_sheet["E{}".format(i)].value )
                how_many += 1
        elif btk_sheet["C{}".format(i)].value == btk_sheet["D{}".format(i)].value : #팀이 비긴경우
            if btk_sheet["E{}".format(i)].value > btk_sheet["G{}".format(i)].value :  # 역배 팀이 비긴경우
                ez_point += (1 * btk_sheet["F{}".format(i)].value )
                how_many += 1
            elif btk_sheet["E{}".format(i)].value < btk_sheet["G{}".format(i)].value : # 정배 팀이 비긴 경우
                ez_point += (1 * btk_sheet["F{}".format(i)].value )
                how_many += 1
        elif btk_sheet["C{}".format(i)].value < btk_sheet["D{}".format(i)].value : #팀이 진경우
            if btk_sheet["E{}".format(i)].value < btk_sheet["G{}".format(i)].value : # 정배 팀이 진 경우
                ez_point += (3 * btk_sheet["G{}".format(i)].value )
                how_many += 1
    elif str(btk_sheet["B{}".format(i)].value).replace("\n","").replace(" ","") == team_name:
        if btk_sheet["C{}".format(i)].value > btk_sheet["D{}".format(i)].value: # 팀이 진경우
            if btk_sheet["E{}".format(i)].value > btk_sheet["G{}".format(i)].value: # 정배 팀이 진 경우
                ez_point += (3 * btk_sheet["E{}".format(i)].value)
                how_many += 1
        elif btk_sheet["C{}".format(i)].value == btk_sheet["D{}".format(i)].value: # 팀이 비긴 경우
            if btk_sheet["E{}".format(i)].value < btk_sheet["G{}".format(i)].value:  # 역배 팀이 비긴경우
                ez_point += (1 * btk_sheet["F{}".format(i)].value )
                how_many += 1
            elif btk_sheet["E{}".format(i)].value > btk_sheet["G{}".format(i)].value: # 정배 팀이 비긴 경우
                ez_point += (1 * btk_sheet["F{}".format(i)].value)
                how_many += 1
        elif btk_sheet["C{}".format(i)].value < btk_sheet["D{}".format(i)].value: # 팀이 이긴 경우
            if btk_sheet["E{}".format(i)].value < btk_sheet["G{}".format(i)].value: # 역배 팀이 이긴경우
                ez_point += (3 * btk_sheet["G{}".format(i)].value)
                how_many += 1
print(ez_point)
print(how_many)

 

위의 코드를 통해 각 팀별로 EZ_Point는 몇인지 , EZ_Point 를 얻은 경기는 몇경기 인지 확인했습니다.

 

이후 얻어낸 EZ_Point , EZ_Times ( 발생횟수 ) , EZ_rate ( EZ_Point / EZ_Times 비율 ) 을 통해 결과를 확인해보도록 하겠습니다. 

 

 

 

 

 


정리

  • 의적팀이란 기복이 심한 팀이라는 말과 비슷하다.
  • EPL 20/21 시즌 의적팀이자 , 가장 기복이 컸었던 팀은 에버튼 , 울버햄튼 , 브라이튼 이다.
  • EPL 20/21 시즌 가장 기복이 없었던 팀은 셰필드 , 맨시티 , 사우스햄튼 이다.

 

반응형