[PYTHON] Visualisieren Sie die Ziele und Ziele der B League auf einer Heatmap

Zweck

Erstellen Sie eine Heatmap mit Toren und Toren aus den Ergebnissen der B-League-Spiele

heatmap

Implementierung

Datenerfassung

Erhalten Sie die Ergebnisse der B League-Spiele von dieser Website https://www.bleague.jp/schedule/?s=1&tab=1&year=2019&event=2&club=&setuFrom=1

Verwenden Sie Pythons Selen Die Akquisitionsergebnisse sind in pandas.DataFrame zusammengefasst

Ergebnis

データ取得DF

Gestaltung

Kennzeichnung der Punkteverteilung

Da Basketball einen größeren Punktebereich hat als Fußball und Baseball, erstellen wir eine Verteilungstabelle, die durch 10 Punkte getrennt ist.

Fügen Sie eine Bewertungsklassenspalte hinzu, die auf diesen Artikel verweist https://qiita.com/kshigeru/items/bfa8c11d1e6487c791d3

python


labels = [ "{0} - {1}".format(i, i + 9) for i in range(40, 200, 10) ]
df['Verteilung der Heimpunktzahlen'] = pd.cut(df['Home Score'], np.arange(40, 201, 10), labels=labels)
df['Punkteverteilung'] = pd.cut(df['Auswärtspunktzahl'], np.arange(40, 201, 10), labels=labels)

Beschriften Sie 40 bis 200 Punkte mit 10 Punkten. NaN ist für Personen außerhalb des Bereichs eingestellt

Ergebnis

得点頒布のラベル付けDF

Gruppierung nach Zuhause / Auswärts

Da zu erwarten ist, dass es einen Unterschied zwischen dem Heimrekord und dem Auswärtsrekord geben wird, Erstellen Sie eine Heatmap für Heimkämpfe, eine Heatmap für Auswärtsschlachten und eine Heatmap für alle Schlachten.

python


for team in teamList:
    teamHomeDf = df.query('Zuhause== @team')
    teamAweyDf = df.query('Weg== @team')
    teamDf = pd.concat([teamHomeDf, teamAweyDf])

Die Teamliste enthält die Teamnamen aller Teams

Ergebnis

グルーピングDF

Datenerstellung für Heatmap

Formatieren Sie die Daten wie gezeigt, um eine Heatmap zu erstellen ヒートマップ用のデータ作成DF

python


distributionDf = teamHomeDf.groupby(['Verteilung der Heimpunktzahlen', 'Punkteverteilung'])
distributionDf = distributionDf.size().unstack()
distributionDf = distributionDf.fillna(0)

cols = distributionDf.columns
indexs = distributionDf.index

for index in indexs:
	for col in cols:
		allDf.at[index, col] = round(distributionDf.at[index, col] / total, 2)

plt.figure(figsize=(8, 8))
sns.heatmap(allDf, annot = True, cmap = color, vmin = 0, square = True)
if not os.path.exists(path):
	os.makedirs(path)
plt.savefig(path + '/' + fileNm)
plt.close('all')

Stellen Sie die Daten wie in der Abbildung in allDf gezeigt ein. allDf

Ausgabe

Gibt eine Heatmap basierend auf den formatierten Daten aus Klicken Sie hier für eine Heatmap https://note.nkmk.me/python-seaborn-heatmap/ https://matplotlib.org/tutorials/colors/colormaps.html

python


plt.figure(figsize=(8, 8))
sns.heatmap(allDf, annot = True, cmap = 'hot', vmin = 0, square = True)
if not os.path.exists(path):
	os.makedirs(path)
plt.savefig(path + '/' + fileNm)
plt.close('all')

Ausgangswärmekarte

allDf

Recommended Posts

Visualisieren Sie die Ziele und Ziele der B League auf einer Heatmap
Visualisieren und verstehen Sie Japans regionales Netz auf einer Karte
Folium: Visualisieren Sie Daten auf einer Karte mit Python
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
Python a + = b und a = a + b sind unterschiedlich
Visualisieren Sie Präfekturen mit vielen Routen nach Präfekturen auf einer Karte von Japan
[Python] gibt A [oder / und] B zurück
Ein Memo mit Python2.7 und Python3 in CentOS
Kartenmietinformationen auf einer Karte mit Python
Erstellen Sie eine Webmap mit Python und GDAL
Python-Memo- "wenn nicht A und B" war "wenn (nicht A) und B"
[Schienen] So zeigen Sie mehrere Markierungen auf Google Map an und zeigen beim Klicken eine Sprechblase an