東京オリンピック 女子バスケットボールチームをクラスタリング

はじめに

ブログを見ていただきありがとうございます。
プログラミング初学者のshinoです。
まずはじめになぜ私がプログラミングを学ぶに至ったかというと、マーケティングに興味を持ったのがきっかけです。マーケティングでPythonを活用したデータ分析ができるようになるため、プログラミングを学ぶことを決意しました。

概要

今回Pythonを使い、東京オリンピック 女子バスケットボールチームのクラスタリングを行います。Google Colaboratoryにてコードを記述していきます。
分析は準々決勝に進んだ8か国のデータを用います。
データの参照元は以下のURLになります。
今大会にて歴史的快挙となった日本代表がどのようにクラスタリングされるのか気になるところです。

https://sports.nhk.or.jp/olympic/sports/basketball/event/women/
https://www.fiba.basketball/olympics/women/2020

コードの流れと解説

今回グラフに日本語表記を行うため、以下をはじめにインストールします。

!pip install japanize-matplotlib # グラフに日本語フォントで出力する

用意したデータ(Excel)をpandasのDataFrameにて読み込みます。
読み込んだデータを出力してみると8×9のデータが表示されます。

import numpy as np
import pandas as pd

# Excelの読み込み
df = pd.read_excel("tokyo2020 Women's basketball data.xlsx",index_col=0)
df

続いて分析に使うデータの選定を行います。
バスケットボールにおいて勝敗の要因が大きい身長とシュート確率、リバウンド回数のデータを用いてみたいと思います。
ここではilocを使用し、必要なデータのみを選定します。
ilocで選定するには行と列を[ ]内に記述します。今回の場合、行がstartからend、列が1,5,6,8,9になります。出力結果は以下の表になります。

import scipy.cluster.hierarchy as sch
import matplotlib.pyplot as plt
import japanize_matplotlib

# 使用するデータの選定
X = df.iloc[:,[0,4,5,7,8]]
X

続いてdendrogram(樹形図)を作成します。
今回のクラスター連結方法ではウォード法(ward)を用います。
図形の可視化はライブラリmatplotlib.pyplotを用います。
プロットした結果、今回は2つのクラスターに分けて分析を行ってみたいと思います。下図左側をクラスター①、右側をクラスター②とします。

# 樹形図作成用インスタンス
# ウォード法を使用
dendrogram = sch.dendrogram(sch.linkage(X,method = "ward"),labels=df.index)

# 樹形図可視化
plt.title("dendrogram(樹形図)")
plt.show()

最後に上で作った2つのクラスターをdfの要約統計量を用いて各クラスターの特徴を分析してみます。
クラスター①とクラスター②それぞれの平均値、MAX値、MIN値を出力し、比較してみます。

クラスター① 平均・MAX・MIN

# dfの要約統計量の②のクラスターの"mean""max""min"を取り出しdf_desに代入
df_des = df.iloc[[1,2,4,6],[0,4,5,7,8,]].describe().loc[["mean""max""min"]]

print(df_des)

クラスター② 平均・MAX・MIN

# dfの要約統計量の①のクラスターの"mean""max""min"を取り出しdf_desに代入
df_des = df.iloc[[0,3,5,7],[0,4,5,7,8,]].describe().loc[["mean""max""min"]]

print(df_des)

クラスター①の特徴
・平均身長が高い
・平均して2pts、3ptsともに成功確率が高い
・平均してオフェンスリバウンド回数が少ない
・平均してディフェンスリバウンド回数が多い
クラスター②の特徴
・平均身長が低い
・平均して2pts、3ptsともに成功確率が低い
・平均してオフェンスリバウンドの回数が多い
・平均してディフェンスリバウンドの回数が少ない
考察
2つのクラスターは上記より大きく身長、シュート確率で分類されていることがわかります。つまり今回の結果、クラスター①の方がクラスター②よりも試合に勝利する確率が高いと言えます。たしかに優勝したUSAに銅メダルを獲得したFRAが同じ集団にありますね。しかし、そんな中日本は準優勝と歴史的快挙を成し遂げました。日本はクラスター②に属しますが、データをよく見てみるとaverage 3ptsのmaxの38,4%は実は日本なのです。つまり、データより日本の強みが3ptsシュートであることがわかります。8か国の中でも最も平均身長が低い日本。海外選手と戦うには3ptsは大きな武器と言えるでしょう。

今後の活用

まずは今の仕事でPythonを用いたデータ分析や業務自動化に取り組み、少しずつ力をつけていきたいと思います。

おわりに

まだまだ覚えることはたくさんありますが、実務で扱えるレベルになるまで学習を続けたいと思います。プログラミングを活用して、さまざまなビジネスにも挑戦していきたいと思います。

この記事が気に入ったらサポートをしてみませんか?