1
0

はじめに

僕はバスケ観戦が趣味で、BリーグやNBAといった国内外のリーグの試合をよく観ます。迫力のあるプレーを観るのも好きですが、試合のスタッツを見ることも好きです。昨今スタッツの分析はすごく行われるようになっており、NBAでは以下のサイトで見れるようなデータを取得できる API が提供されています。

今回は nba_api という Python の API クライアントを使って、とある選手のシュートチャートを描いてみようと思います。

NBA選手のシュートチャートを描いてみた

前提

今回は Google Colab を使って、コードを動かしていきます。

使うパッケージのバージョンは以下です。

  • nba_api v1.5.0
  • matplotlib v3.7.1
  • seaborn v0.13.1
  • pandas v2.0.3

また今回扱う選手は、僕の好きな D'Angelo Russell 選手の 2023-24 シーズンのスタッツを扱います。

本題

まずは必要なライブラリをインストールします。

!pip install nba_api

インストールが完了したら、レギュラーシーズンのシュートの情報を取得します。そして、取得した情報をもとにシュートチャートを描画します。

from nba_api.stats.endpoints import shotchartdetail
import pandas
import matplotlib.pyplot as plt
import seaborn as sns

player_id = '1626156'
season = '2023-24'

shot_chart = shotchartdetail.ShotChartDetail(
    team_id=0,
    player_id=player_id,
    season_nullable=season,
    season_type_all_star='Regular Season'
)

shot_chart_df = shot_chart.get_data_frames()[0]

plt.figure()
sns.scatterplot(
    data=shot_chart_df,
    x='LOC_X',
    y='LOC_Y',
)
plt.show()

上記のコードを実行してみると、以下のようなチャートが描けました。

スクリーンショット 2024-07-17 19.30.10.png

なんとなくではありますが、ゴール下やスリーポイントラインが見えてきますね。

このままだとラインが描画されないので、以下の記事に従ってラインを描画しました。

結果がこちらです。

スクリーンショット 2024-07-17 21.31.57.png

改めて見ると、ウイングの位置からのスリーポイントやペイントエリア、ゴール下からたくさんシュートがシュートが決まっていることがわかります。

さいごに

今回は、NBA選手のシュートチャートを描いてみました。今回はシュートチャートでしたが、NBAではたくさんのスタッツが公開されていています。またどこかで提供されているスタッツを使って、何か分析してみようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0