〜NBAデータを使って、pandasに入門しよう〜
なぜ最初に「pandas」を学ぶのか?
PythonでNBAデータ分析を始めるとき、最初にぶつかるのが「データの見方・扱い方」です。
NBA APIを使えば、選手の成績やチームのデータを取得できますが、その中身はすべて「表データ(=行と列の構造)」になっています。そこで必要になるのが pandas(パンダス) というライブラリです。
pandasを最初に学ぶべき理由:
- NBA APIのデータ形式と相性がよい(DataFrameで返ってくる)
- Excelのような操作が簡単にできる(抽出・並べ替え・計算など)
- 後の分析・可視化・機械学習にも直結する基本スキル
NBAに限らず、データ分析の基礎となるのがこの pandas なので、まずここを押さえておくとこの先ずっとラクになります。
pandasってなに?
pandas は、Pythonで「表データ(=Excelみたいなデータ)」を読み込んだり加工したりするためのツールです。NBAの試合や選手成績のように、行と列があるデータをきれいに扱えるのが最大の強みです。
pandas の基本構造は2つ:
Series
:1列のデータ(列データ)DataFrame
:表(行 × 列) ← これがメインで使われる
pandas を使う準備
まずは、以下のようにして pandas を使えるようにしましょう
import pandas as pd
pd
は pandas の略称で、以後の操作をコンパクトに書くための“ニックネーム”のようなものです。
nba_apiと組み合わせて使ってみる
例としてステフィン・カリーのキャリアスタッツを表示してみます。
from nba_api.stats.static import players
from nba_api.stats.endpoints import playercareerstats
# カリーのIDを取得
player = players.find_players_by_full_name("Stephen Curry")[0]
# キャリアスタッツを取得
career = playercareerstats.PlayerCareerStats(player_id=player['id'])
# pandasのDataFrameで受け取る
df = career.get_data_frames()[0]
# 表示してみる(最初の5行)
print(df.head())
まずは前回同様、インストールの解説です。
① from nba_api.stats.static import playerss
意味:nba_api
ライブラリの中の「静的情報(=名前やIDなど変わらない基本データ)」を扱う部分 static
から、選手情報を取得する players
を使えるようにします。
主に使う目的:
- 選手名からID(player_id)を取得する
- 名前や現役フラグ(
is_active
)などを確認する
② from nba_api.stats.endpoints import playercareerstats
✔ 重要キーワード:endpoint(エンドポイント)とは?
エンドポイントとは、NBA公式サイトの「統計データを提供しているAPIの入り口(=URLに対応した機能)」です。NBA APIでは、「このURLにアクセスすると、選手のキャリア成績が返ってくるよ!」
という仕組みがあり、それをPythonで扱えるようにしたのが endpoints
にある各モジュールです。
具体的に playercareerstats
とは?
- プレイヤーのキャリア通算・シーズン別成績を取得できるエンドポイント
player_id
を指定して実行すると、シーズンごとの得点・試合数・アシストなどのデータが返ってきます
NBA APIの構造(イメージ)
nba_api/
├─ stats/
│ ├─ static/ ← 選手やチームの名前・IDなど(変わらない情報)
│ └─ endpoints/ ← 各種データを取得する「APIの入り口」
│ ├─ playercareerstats.py ← キャリア成績用のendpoint
│ ├─ boxscoretraditionalv2.py ← 試合のボックススコア
│ ├─ leaguedashplayerstats.py ← リーグ全体の選手スタッツ
df.head()
ってなに?
これは pandas のメソッドで、最初の5行だけを表示してくれます。
(データ全体を見すぎて混乱しないように、まずは“ざっくり”見たいときに便利です)
結果はこのように最初の5行だけ表示されたはずです。(本当はもっと横に長いですが省略)
PLAYER_ID SEASON_ID LEAGUE_ID TEAM_ID TEAM_ABBREVIATION PLAYER_AGE ・・・
0 201939 2009-10 00 1610612744 GSW 22.0 ・・・
1 201939 2010-11 00 1610612744 GSW 23.0 ・・・
2 201939 2011-12 00 1610612744 GSW 24.0 ・・・
3 201939 2012-13 00 1610612744 GSW 25.0 ・・・
4 201939 2013-14 00 1610612744 GSW 26.0 ・・・
まとめ
df.head()
を使えば、表の中身を一瞬で確認できる- pandas は データ分析の土台となるライブラリ
- NBA API のデータはほぼすべて
DataFrame
として受け取るため、まずpandasを扱えるようにするのが最重要
次回は、実際にpandasの機能を用いて並べ替え、抽出、集計等を学んで行きましょう!
6:pandasの基礎2:並べ替え、抽出、集計へ進む
コメントを残す