5:pandasの基礎①:データの読み込みと表示

〜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:並べ替え、抽出、集計へ進む


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です