파이썬 데이터분석 예제: 월드컵 경기 통계 분석으로 승리 패턴 찾기
축구는 전 세계에서 가장 인기 있는 스포츠이며, 특히 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()
이 코드를 통해 특정 팀, 예를 들어 브라질의 연도별 승리 패턴을 시각화할 수 있습니다. 이를 통해 브라질이 어느 시기에 특히 강력한 성적을 보였는지 알 수 있습니다.

데이터 분석에서 흔히 하는 실수와 해결 방법
이번 파이썬 데이터분석 예제에서 자주 발생할 수 있는 실수와 그 해결 방법을 알아보겠습니다.
- 데이터 필터링 오류: FIFA 월드컵 경기를 필터링할 때, 다른 대회나 친선 경기가 포함되지 않도록 필터링에 신경 써야 합니다. 대회명을 정확하게 확인하고 필터링하는 것이 중요합니다.
- 날짜 처리의 부주의: 날짜 데이터를 다룰 때는
datetime
형식으로 변환한 후 분석해야 합니다. 그렇지 않으면 연도별 분석에서 오류가 발생할 수 있습니다. - 승리 조건의 오류: 승리 팀을 결정할 때 득점이 같은 경우 무승부로 처리해야 합니다. 승리 팀과 무승부 경기를 혼동하지 않도록 주의해야 합니다.
FAQ
Q1: FIFA 월드컵 데이터는 어디에서 다운로드할 수 있나요?
A: FIFA 월드컵 경기 데이터를 GitHub에서 다운로드할 수 있습니다. 이 데이터셋에는 국제 축구 경기의 전체 결과가 포함되어 있습니다.
Q2: 승리 패턴을 더 정확하게 분석할 방법은 무엇인가요?
A: 승리 패턴 분석을 더 정교하게 하려면 추가적인 변수를 고려할 수 있습니다. 예를 들어, 특정 팀의 골 득실 차나 경기 위치(홈, 원정, 중립 경기)에 따른 승리 패턴을 분석할 수 있습니다.
Q3: 축구 외에도 이 방법을 다른 스포츠 분석에 사용할 수 있나요?
A: 네, 가능합니다. 이 분석 방법은 다른 스포츠 경기 데이터를 분석하는 데도 매우 유용하며, 팀 간 성과 비교, 선수 분석 등 다양한 스포츠 데이터 분석에 적용할 수 있습니다.
마무리
이번 포스트에서는 파이썬 데이터분석 예제로 FIFA 월드컵 경기 데이터를 활용하여 팀 성과를 분석하고, 승리 패턴을 찾아보는 방법을 배웠습니다. 각 팀의 승리 횟수와 득점 패턴을 분석하고, 특정 팀의 연도별 승리 성과를 시각화하였습니다. 이 과정에서 데이터 전처리, 시각화, 그리고 승리 패턴 분석에 이르기까지 전반적인 데이터 분석 흐름을 익히셨길 바랍니다.
다양한 스포츠 데이터셋을 활용해 분석을 확장해보시고, 흥미로운 인사이트를 도출해보세요!