NBA Statistiken in Log Insight

Von | 31. Mai 2016

BasketballWarum sollte man die schönen Dinge nicht miteinander verbinden, dachte ich mir, und werde in diesem Beitrag zeigen, wie man NBA Statistiken in Log Insight importieren kann. Das Prinzip ist gleich für jegliche Art von statistischen Daten, die in einem “sauberen” CSV-Format vorliegen.

Zuerst müssen die Daten beschafft werden: ich bin eher zufällig auf die Seite http://www.basketball-reference.com geraten und festgestellt, dass man dort viele der Tabellen auch im CSV-Format herunterladen kann. Um ein überschaubares Beispiel zu haben, nehme ich die Basketball Team-Statistiken der NBA aus der Saison 2015-2016.

Auf der Empfängerseite benötige ich einen Log Insight Server (für solche Experimente empfiehlt es sich eine dedizierte Instanz z.B. in VMware Workstation / Fusion zu importieren). Ferner brauche ich den Log Insight Importer (dieser muss bei der Version 3.3 noch separat heruntegeladen werden, siehe Beschreibung hier)

Aus Sparsamkeit installiere ich den Importer direkt auf meinem Log Insight Test-Server (der in VMware Fusion läuft).  Ich lege ein Verzeichnis “nba” an und kopiere die Daten in ein File namens teams.csv . Der Importer braucht eine Manifest-Datei durch die das Parsen der CSV Felder beim Import gesteuert wird.

Die Datei nba-teams-manifest.ini:

[filelog|csv]
tags={"datasource":"basketball-reference.com","filetype":"csv","testnr":"1005","topic":"teamstats"}
directory=/root/nba
include=teams.csv
parser=tbcsv

[parser|tbcsv]
base_parser=csv
delimiter=","
fields=Rk,Team,G,MP,FG,FGA,FG_prc,ThreeP,ThreePA,ThreeP_prc,TwoP,TwoPA,TwoP_prc,FT,FTA,FT_prc,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS,PTSG

Im ersten Abschnitt werden verschiedene optionale Tags dem Import zugewiesen. Diese erleichtern nachher das Auffinden der Daten. Ich nutze meist die “testnr” um verschiedene Parsing-Optionen auszuprobieren. Der zweite Abschnitt ist die Parser-Konfiguration. Die Anzahl der Felder in der letzten Zeile muss genau der Anzahl der Felder der CSV-Datei entsprechen. Die Feldernamen dürfen nicht mit einer Zahl anfangen und jegliche Sonderzeichen ausser dem Unterstrich werden auch nicht toleriert.

Nun brauchen wir das Importier-Kommando:

loginsight-importer --server localhost --source /root/nba --manifest nba-teams-manifest.ini  --debug_level 2

Der Importer schreibt seine eigenen Logs nach .loginsight-importer/logs. Mit der “–debug_level 2” Option sind diese Logs so detailliert, dass man leicht herausfinden kann, warum der Parser nicht funktioniert. Bei mir waren es meist vergessene Sonderzeichen oder Zahlen in Feldnamen.

Nach dem erfolgreichen Import kann ich die Daten im Log Insight nach testnr=1005 filtern und sehen. Wenn der Parser funktioniert sind die Felder richtig extrahiert (siehe die blauen Feldnamen unter jedem Logeintrag):

tb_sc_2016-05-31_01-23-40_PMDie  extrahierten Felder beinhalten sauber formatierte natürliche Zahlen. Dies erlaubt einige mathematische Operationen und Visualisierungen in Log Insight. Die  Bedeutung der Felder ist auf der Statistik-Seite gut erklärt.

Ein Beispiel: das Maximum der fg_prc (Trefferquote aus dem Feld) nach Mannschaft:

tb_sc_2016-05-31_01-30-42_PMUm die Visualisierung etwas zu entlasten, können wir uns separat die Top10 Mannschaften anschauen (rk<11).
Hier ein Beispiel für Offensiv-Rebounds der Top 10:

tb_sc_2016-05-31_01-49-36_PMSoweit zu den Teams. Nun können wir es auch vertiefen und Spielerstatistiken der Saison importieren. Diese fand ich unter http://www.basketball-reference.com/leagues/NBA_2016_advanced.html

Die Daten kopiere ich in die Datei ../nba/playerstats.csv und passe die Importer-Konfiguration an:

[filelog|csv]
tags={"datasource":"basketball-reference.com","filetype":"csv","testnr":"1005","topic":"playerstats"}
directory=/root/nba
include=playerstats.csv
parser=tbcsv

[parser|tbcsv]
base_parser=csv
delimiter=","
fields=Rk,Player,Pos,Age,Tm,G,MP,PER,TS_PRZ,Three_PAr,FTr,ORB_PRZ,DRB_PRZ,TRB_PRZ,AST_PRZ,STL_PRZ,BLK_PRZ,TOV_PRZ,USG_PRZ,,OWS,DWS,WS,WS48,,OBPM,DBPM,BPM,VORP

Neuer import:

localhost:~ # loginsight-importer --server localhost --source /root/nba --manifest nba-teams-manifest.ini --debug_level 2

Nun kann man auch nach Spielern und Teams sortieren und zum Beispiel die Offensiv- und Defensiv-Rebounds der Spieler von Toronto Raptors auflisten:

tb_sc_2016-05-31_03-01-27_PM

Oder alle Center, die mehr als 50 Spiele gespielt haben nach deren Offensiv-Rebound-%, wenn es > 13% liegt:

Screen Shot 2016-06-01 at 12.34.52

 

Einige dieser Ansichten habe ich nun in ein Dashboard zusammengefügt. Für ein ausgewachsenes NBA-Content-Pack müsste man etwas mehr Zeit investieren 🙂

Screen Shot 2016-05-31 at 20.57.26

 

 

In dieser Anlage finden Sie die verwendeten Daten, das Beispieldashboard und die Importer-Manifeste.

print

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.