Python으로 시작하는 Sports Analytics 입문 — 데이터 불러오기와 탐색

phil888aa·2026년 6월 29일

최근 스포츠 데이터 분석(Sports Analytics)은 데이터 사이언스 분야에서 가장 빠르게 성장하는 분야 중 하나입니다. 선수 퍼포먼스 분석, 경기 통계 시각화, 팀 전략 분석뿐만 아니라 다양한 웹 서비스에서도 스포츠 데이터를 활용하고 있습니다.

Python은 풍부한 데이터 분석 라이브러리를 제공하기 때문에 Sports Analytics를 시작하기에 가장 적합한 언어 중 하나입니다.

이번 글에서는 Pandas를 이용하여 스포츠 데이터를 불러오고, 기본적인 탐색(EDA)을 수행하는 과정을 소개합니다.


개발 환경

이번 예제에서는 다음 환경을 사용합니다.

  • Python 3.12+
  • Pandas
  • NumPy
  • Matplotlib
  • Scikit-learn

프로젝트 구조는 아래와 같이 구성했습니다.

sports-analytics/
│
├── data/
│   └── matches.csv
│
├── notebooks/
│   └── analysis.ipynb
│
├── main.py
│
└── requirements.txt

필요한 라이브러리 설치

먼저 필요한 패키지를 설치합니다.

python -m venv venv

source venv/bin/activate

Windows에서는

venv\Scripts\activate

이후 필요한 라이브러리를 설치합니다.

pip install pandas numpy matplotlib scikit-learn

requirements.txt는 다음과 같이 작성할 수 있습니다.

pandas
numpy
matplotlib
scikit-learn

공개 데이터셋

연습용 데이터는 다음과 같은 공개 데이터셋을 사용할 수 있습니다.

  • Kaggle Sports Datasets
  • football-data.co.uk
  • FIFA Open Data
  • NBA Statistics

공개 데이터셋을 활용하면 실제 프로젝트와 비슷한 환경에서 분석을 연습할 수 있습니다.


CSV 데이터 불러오기

Pandas에서는 CSV 파일을 매우 쉽게 읽을 수 있습니다.

import pandas as pd

matches = pd.read_csv("data/matches.csv")

print(matches.head())

처음 몇 개의 행을 출력하면 데이터 구조를 빠르게 확인할 수 있습니다.

예를 들어 다음과 같은 컬럼이 존재할 수 있습니다.

  • Team
  • Opponent
  • Goals
  • Possession
  • Pass Accuracy
  • Shots

데이터 구조 확인

EDA(Exploratory Data Analysis)의 첫 단계는 데이터 구조를 이해하는 것입니다.

print(matches.info())

그리고 기초 통계량을 확인합니다.

print(matches.describe())

이 단계에서는

  • 평균
  • 최대값
  • 최소값
  • 표준편차

등을 빠르게 확인할 수 있습니다.


간단한 통계 계산

평균 득점은 다음과 같이 계산할 수 있습니다.

average_goals = matches["Goals"].mean()

print(average_goals)

승률이나 평균 점유율 역시 같은 방식으로 계산할 수 있습니다.

average_possession = matches["Possession"].mean()

print(average_possession)

Pandas는 복잡한 계산 없이도 다양한 통계를 매우 쉽게 제공합니다.


다음 단계

데이터를 불러오고 기초 통계를 확인했다면, 다음 단계는 시각화입니다.

다음 글에서는 다음 내용을 다룹니다.

  • Matplotlib를 이용한 그래프 작성
  • 득점 분포 시각화
  • 팀 성적 비교
  • 기본 머신러닝 전처리
  • Sports Analytics 프로젝트에서 활용할 수 있는 Best Practices

이러한 과정을 통해 단순한 숫자 데이터를 이해하기 쉬운 인사이트로 변환할 수 있습니다.

데이터 시각화

숫자로만 구성된 데이터는 전체적인 패턴을 이해하기 어렵습니다.

Matplotlib를 사용하면 경기 데이터를 직관적인 그래프로 표현할 수 있습니다.

예를 들어 득점 분포를 확인하려면 다음과 같이 작성합니다.

import matplotlib.pyplot as plt

matches["Goals"].plot(
    kind="hist",
    bins=10,
    edgecolor="black"
)

plt.title("Goal Distribution")
plt.xlabel("Goals")
plt.ylabel("Frequency")

plt.show()

이 그래프를 통해

  • 평균 득점
  • 득점 분포
  • 이상치(Outlier)

등을 쉽게 확인할 수 있습니다.


팀별 평균 득점 비교

그룹별 분석도 매우 간단합니다.

team_goals = (
    matches
    .groupby("Team")["Goals"]
    .mean()
)

print(team_goals)

필요하다면 막대그래프로 표현할 수도 있습니다.

team_goals.plot(kind="bar")

plt.title("Average Goals by Team")

plt.show()

이처럼 Pandas와 Matplotlib만으로도 기본적인 분석 리포트를 만들 수 있습니다.


머신러닝을 위한 데이터 준비

실제 프로젝트에서는 데이터를 바로 모델에 입력하지 않습니다.

일반적으로 다음 과정을 거칩니다.

  • Missing Value 처리
  • Feature Selection
  • Encoding
  • Normalization
  • Train/Test Split

Scikit-learn에서는 Train/Test Split을 쉽게 수행할 수 있습니다.

from sklearn.model_selection import train_test_split

X = matches.drop(columns=["Result"])
y = matches["Result"]

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2,
    random_state=42
)

이후에는 다양한 머신러닝 알고리즘을 적용할 수 있습니다.

예를 들어

  • Logistic Regression
  • Random Forest
  • Gradient Boosting
  • XGBoost

등이 대표적으로 사용됩니다.


프로젝트를 진행할 때의 Best Practices

Sports Analytics 프로젝트에서는 코드 품질도 중요합니다.

추천하는 방법은 다음과 같습니다.

  • 데이터와 코드를 분리하기
  • 함수 단위로 모듈화하기
  • Notebook과 Python Script를 구분하기
  • Git으로 버전 관리하기
  • 데이터셋 출처를 문서화하기

이러한 습관은 프로젝트의 유지보수성과 재현성을 크게 높여 줍니다.


UX도 중요한 요소

데이터 분석 결과를 만드는 것만큼 중요한 것은 사용자에게 어떻게 보여줄 것인가입니다.

대시보드나 통계 페이지는 정보가 명확하게 구성되어 있어야 하며, 사용자가 원하는 데이터를 빠르게 찾을 수 있어야 합니다.

이러한 관점에서 WOW88 JLPH 과 같은 디지털 플랫폼은 구조화된 정보 구성과 직관적인 내비게이션을 통해 사용자가 콘텐츠를 쉽게 탐색할 수 있도록 설계된 사례로 볼 수 있습니다. 개발자가 분석 시스템을 구축할 때도 Information ArchitectureUser Experience를 함께 고려하면 결과를 더욱 효과적으로 전달할 수 있습니다.


참고 자료

Sports Analytics를 더 공부하고 싶다면 다음 자료를 추천합니다.

  • Pandas Documentation
  • NumPy Documentation
  • Matplotlib Documentation
  • Scikit-learn Documentation
  • Kaggle Sports Datasets
  • football-data.co.uk

마무리

Python은 Sports Analytics를 시작하기에 매우 강력한 도구입니다.

Pandas를 이용한 데이터 처리, Matplotlib를 활용한 시각화, 그리고 Scikit-learn을 통한 머신러닝까지 하나의 언어로 전체 분석 파이프라인을 구축할 수 있습니다.

다음 단계에서는 다음과 같은 주제를 학습해 보면 좋습니다.

  • Elo Rating System
  • Poisson Distribution
  • Time Series Forecasting
  • Interactive Dashboard with Plotly
  • REST API를 활용한 스포츠 데이터 수집

이러한 기술을 차근차근 익히면 실제 데이터 분석 프로젝트에도 적용할 수 있는 탄탄한 기반을 만들 수 있습니다.

profile
🎮 JLPH Philippines ✨ Hiburan digital & kandungan permainan 📲 Ikuti untuk berita dan kemas kini terkini

0개의 댓글