파이썬 데이터분석 예제: 월드컵 경기 통계 분석으로 승리 패턴 찾기

축구는 전 세계에서 가장 인기 있는 스포츠이며, 특히 FIFA 월드컵은 많은 사람들의 관심을 받습니다. 축구 경기는 다양한 데이터를 생성하며, 이를 분석하면 팀의 성과와 승리 패턴을 이해하는 데 큰 도움을 줄 수 있습니다. 이번 포스트에서는 파이썬 데이터분석 예제로 월드컵 경기 데이터를 활용하여 팀 성과를 비교하고 승리 패턴을 찾아보겠습니다. 이 과정을 통해 데이터 로드부터 탐색적 데이터 분석(EDA), 시각화, 그리고 성과 비교까지 실습할 수 있습니다.

월드컵 경기 데이터 분석의 중요성

월드컵 경기 데이터는 선수들의 개별 성과, 팀의 경기 전략, 그리고 승리 여부 등 다양한 정보들을 포함하고 있습니다. 이 데이터를 분석하면 어떤 팀이 더 강력한 공격력과 수비력을 가지고 있는지, 특정 팀의 승리 패턴이 무엇인지 파악할 수 있습니다. 이번 데이터분석 예제에서는 월드컵 경기 데이터를 바탕으로 팀 간의 성과를 비교하고 승리 패턴을 찾아내는 과정을 살펴보겠습니다.

파이썬 데이터분석 예제 데이터 로드 및 탐색

먼저 Kaggle에서 제공하는 FIFA 월드컵 경기 데이터를 불러와 탐색해 보겠습니다. 이 데이터는 각 경기의 팀 이름, 득점, 경기 연도 등의 정보를 포함하고 있습니다.

Python에서 데이터 로드

import pandas as pd

# 월드컵 경기 데이터 로드
url = "https://raw.githubusercontent.com/martj42/international_results/master/results.csv"
wc_data = pd.read_csv(url)

# 데이터 탐색
print(wc_data.head())
print(wc_data.describe())
파이썬 데이터분석 예제 - 데이터 탐색 그림

위 코드를 통해 FIFA 월드컵 경기 데이터를 로드할 수 있습니다. 이 데이터는 1872년부터 진행된 국제 축구 경기 결과를 포함하며, 각 경기에 대한 팀 이름, 득점, 경기 연도 등의 정보가 들어 있습니다.

데이터 구조 설명
  • date: 경기 날짜
  • home_team: 홈 팀 이름
  • away_team: 원정 팀 이름
  • home_score: 홈 팀 득점
  • away_score: 원정 팀 득점
  • tournament: 대회명 (FIFA 월드컵, 친선 경기 등)
  • city: 경기 개최 도시
  • country: 경기 개최 국가
  • neutral: 중립 경기 여부

이 데이터는 각 팀의 성과를 분석하고 비교하는 데 유용한 정보를 제공합니다.

데이터 전처리

월드컵 경기만을 분석하기 위해, FIFA 월드컵 경기만 필터링한 후 데이터 전처리를 수행하겠습니다.

FIFA 월드컵 경기 필터링
# FIFA 월드컵 경기만 필터링
wc_fifa = wc_data[wc_data['tournament'] == 'FIFA World Cup']

# 결측치 확인
print(wc_fifa.isnull().sum())

# 필요한 열만 선택
wc_fifa = wc_fifa[['date', 'home_team', 'away_team', 'home_score', 'away_score', 'city', 'country', 'neutral']]

# 날짜 열을 datetime 형식으로 변환
wc_fifa['date'] = pd.to_datetime(wc_fifa['date'])

print(wc_fifa.head())

위 코드를 통해 FIFA 월드컵 경기만을 필터링하여 분석에 필요한 데이터를 추출합니다. 이렇게 필터링된 데이터는 월드컵 경기에서의 팀 성과와 득점 패턴을 분석하는 데 사용할 수 있습니다.

경기 결과 분석

이제 각 팀의 경기 결과를 분석하여 어떤 팀이 더 많은 승리를 거두었는지, 승리 패턴이 무엇인지 살펴보겠습니다. 경기 결과를 계산하기 위해 각 경기의 승패 여부를 추가합니다.

승리 팀 추가

# 승리 팀 계산
def determine_winner(row):
    if row['home_score'] > row['away_score']:
        return row['home_team']
    elif row['home_score'] < row['away_score']:
        return row['away_team']
    else:
        return 'Draw'

wc_fifa['winner'] = wc_fifa.apply(determine_winner, axis=1)

# 승리 팀 개수 확인
print(wc_fifa['winner'].value_counts())

위 코드는 각 경기에서 승리한 팀을 계산하여 새로운 열을 추가합니다. 이 정보를 바탕으로 어떤 팀이 더 많은 경기를 승리했는지 파악할 수 있습니다. 또한, 무승부로 끝난 경기의 비율도 확인할 수 있습니다.

데이터 시각화

이제 각 팀의 승리 횟수를 시각화하여 어느 팀이 월드컵에서 더 많은 승리를 거두었는지 알아보겠습니다.

팀별 승리 횟수 시각화

import matplotlib.pyplot as plt

# 상위 10개 팀의 승리 횟수 시각화
top_teams = wc_fifa['winner'].value_counts().head(10)
plt.figure(figsize=(10, 6))
top_teams.plot(kind='bar', color='skyblue')
plt.title('FIFA 월드컵 상위 10개 팀의 승리 횟수')
plt.xlabel('팀 이름')
plt.ylabel('승리 횟수')
plt.show()

위 코드를 실행하면 FIFA 월드컵에서 가장 많은 승리를 거둔 상위 10개 팀의 승리 횟수를 확인할 수 있습니다. 이 파이썬 데이터분석 예제에서는 브라질, 독일 등 강팀이 많은 승리를 거두었음을 시각적으로 확인할 수 있습니다.(혹시 한글이 깨져서 나오는 분이 계시다면 파이썬 한글 깨짐 해결: 시각화에서 한글 텍스트 문제 해결하기 포스트를 확인해보시기 바랍니다.)

파이썬 데이터분석 예제 - 승리횟수 시각화

팀 간 득점 비교

팀별 득점을 분석하여 어느 팀이 가장 많은 득점을 기록했는지, 그리고 공격력이 강한 팀이 무엇인지 파악해보겠습니다.

팀별 평균 득점 계산
# 홈 팀 득점 및 원정 팀 득점을 합산하여 총 득점 계산
wc_fifa['total_goals'] = wc_fifa['home_score'] + wc_fifa['away_score']

# 각 팀별 평균 득점 계산
avg_goals = wc_fifa.groupby('home_team')['total_goals'].mean().sort_values(ascending=False).head(10)

# 상위 10개 팀의 평균 득점 시각화
plt.figure(figsize=(10, 6))
avg_goals.plot(kind='bar', color='orange')
plt.title('FIFA 월드컵에서 상위 10개 팀의 평균 득점')
plt.xlabel('팀 이름')
plt.ylabel('평균 득점')
plt.show()

이 코드는 FIFA 월드컵에서 가장 많은 득점을 기록한 상위 10개 팀의 평균 득점을 계산하고, 이를 시각화하여 어느 팀이 가장 공격적인지 파악할 수 있게 합니다.(그런데 뭔가 데이터가 이상한거 같네요. 노스코리아가 상위 10개 팀이라뇨!)

파이썬 데이터분석 예제 - 승리횟수 시각화

승리 패턴 분석

이제 특정 팀의 승리 패턴을 분석해보겠습니다. 예를 들어, 브라질과 같은 강팀이 특정 연도에서 강력한 성적을 보였는지 살펴보겠습니다.

특정 팀의 연도별 승리 분석
# 브라질의 연도별 승리 횟수 계산
brazil_wins = wc_fifa[wc_fifa['winner'] == 'Brazil'].groupby(wc_fifa['date'].dt.year).size()

# 브라질의 연도별 승리 횟수 시각화
plt.figure(figsize=(10, 6))
brazil_wins.plot(kind='bar', color='green')
plt.title('브라질의 연도별 FIFA 월드컵 승리 횟수')
plt.xlabel('연도')
plt.ylabel('승리 횟수')
plt.show()

이 코드를 통해 특정 팀, 예를 들어 브라질의 연도별 승리 패턴을 시각화할 수 있습니다. 이를 통해 브라질이 어느 시기에 특히 강력한 성적을 보였는지 알 수 있습니다.

파이썬 데이터분석 예제 - 연도별 브라질 승리횟수 시각화

데이터 분석에서 흔히 하는 실수와 해결 방법

이번 파이썬 데이터분석 예제에서 자주 발생할 수 있는 실수와 그 해결 방법을 알아보겠습니다.

  1. 데이터 필터링 오류: FIFA 월드컵 경기를 필터링할 때, 다른 대회나 친선 경기가 포함되지 않도록 필터링에 신경 써야 합니다. 대회명을 정확하게 확인하고 필터링하는 것이 중요합니다.
  2. 날짜 처리의 부주의: 날짜 데이터를 다룰 때는 datetime 형식으로 변환한 후 분석해야 합니다. 그렇지 않으면 연도별 분석에서 오류가 발생할 수 있습니다.
  3. 승리 조건의 오류: 승리 팀을 결정할 때 득점이 같은 경우 무승부로 처리해야 합니다. 승리 팀과 무승부 경기를 혼동하지 않도록 주의해야 합니다.

FAQ

Q1: FIFA 월드컵 데이터는 어디에서 다운로드할 수 있나요?
A: FIFA 월드컵 경기 데이터를 GitHub에서 다운로드할 수 있습니다. 이 데이터셋에는 국제 축구 경기의 전체 결과가 포함되어 있습니다.

Q2: 승리 패턴을 더 정확하게 분석할 방법은 무엇인가요?
A: 승리 패턴 분석을 더 정교하게 하려면 추가적인 변수를 고려할 수 있습니다. 예를 들어, 특정 팀의 골 득실 차나 경기 위치(홈, 원정, 중립 경기)에 따른 승리 패턴을 분석할 수 있습니다.

Q3: 축구 외에도 이 방법을 다른 스포츠 분석에 사용할 수 있나요?
A: 네, 가능합니다. 이 분석 방법은 다른 스포츠 경기 데이터를 분석하는 데도 매우 유용하며, 팀 간 성과 비교, 선수 분석 등 다양한 스포츠 데이터 분석에 적용할 수 있습니다.

마무리

이번 포스트에서는 파이썬 데이터분석 예제로 FIFA 월드컵 경기 데이터를 활용하여 팀 성과를 분석하고, 승리 패턴을 찾아보는 방법을 배웠습니다. 각 팀의 승리 횟수와 득점 패턴을 분석하고, 특정 팀의 연도별 승리 성과를 시각화하였습니다. 이 과정에서 데이터 전처리, 시각화, 그리고 승리 패턴 분석에 이르기까지 전반적인 데이터 분석 흐름을 익히셨길 바랍니다.

다양한 스포츠 데이터셋을 활용해 분석을 확장해보시고, 흥미로운 인사이트를 도출해보세요!

유사한 게시물