Fußball Prognose Bot mit Python und Telegram
Datenbeschaffung mit SoccerData
Datenbeschaffung leicht gemacht
Für jede ernsthafte Sportanalyse ist ein solider Datensatz die Grundlage. Anstatt Stunden damit zu verbringen, Spieldaten manuell von Websites zu kopieren oder komplexe Web-Scraper von Grund auf neu zu schreiben, nutzen wir ein spezialisiertes Werkzeug: SoccerData. Diese Python-Bibliothek ist ein Wrapper für gängige Fußball-Datenquellen wie FBref und Football-Data.co.uk. Sie ermöglicht es uns, mit wenigen Codezeilen auf umfangreiche historische Daten zuzugreifen.
Der Hauptvorteil:
SoccerDataliefert uns die Daten direkt als sauberen Pandas DataFrame. Das erspart uns die mühsame Arbeit des Parsens von HTML und beschleunigt den Einstieg in die eigentliche Analyse erheblich.
Installation und Setup
Die Installation von SoccerData erfolgt wie bei den meisten Python-Paketen einfach über pip. Öffne dein Terminal oder deine Kommandozeile und gib den folgenden Befehl ein:
pip install soccerdata
Eine nützliche Eigenschaft von SoccerData ist das lokale Caching. Die Bibliothek speichert heruntergeladene Daten auf deinem Computer, um zu vermeiden, dass bei wiederholten Anfragen dieselben Informationen erneut von der Quell-Website geladen werden. Das schont nicht nur die Server der Anbieter, sondern macht auch deine Skripte bei erneutem Ausführen deutlich schneller.
Um loszulegen, müssen wir einen Scraper für eine bestimmte Datenquelle instanziieren. Entscheiden wir uns für FBref, das detaillierte Spieldaten bereitstellt.
# Importieren der Bibliothek
import soccerdata as sd
# Erstellen einer Instanz für den FBref-Scraper
# Dies initialisiert den Scraper, lädt aber noch keine Daten herunter.
fbref = sd.FBref()
Ligen und Saisons abrufen
Mit unserem fbref-Objekt können wir nun gezielt Daten abfragen. Nehmen wir als Beispiel die deutsche Bundesliga für die Saison 2022/23. Die Methode read_schedule() ist hierfür ideal. Sie benötigt die Liga und die Saison als Parameter.
# Spieldaten für die Bundesliga in der Saison 2022/23 laden
bundesliga_2223 = fbref.read_schedule(league="GER-Bundesliga", season="2223")
# Die ersten fünf Zeilen des DataFrames anzeigen
print(bundesliga_2223.head())
Das Ergebnis ist ein umfangreicher Pandas DataFrame. Er enthält viel mehr Spalten, als wir für unser initiales Modell benötigen, wie zum Beispiel Schiedsrichter, Zuschauerzahlen und Links zu Spielberichten. Für unsere Zwecke konzentrieren wir uns auf die Kerninformationen eines Spiels.
Daten für unser Modell bereinigen
Unser Ziel ist ein schlanker Datensatz, der nur die für eine grundlegende statistische Analyse notwendigen Spalten enthält: Heimteam, Auswärtsteam, Tore des Heimteams und Tore des Auswärtsteams. Die Spaltennamen im von FBref geladenen DataFrame sind home_team, away_team, home_score und away_score.
Wir wählen diese Spalten aus und benennen sie in ein standardisiertes Format um: HomeTeam, AwayTeam, FTHG (Full Time Home Goals) und FTAG (Full Time Away Goals). Diese einheitliche Benennung erleichtert später die Wiederverwendbarkeit unseres Codes, selbst wenn wir die Datenquelle wechseln.
# Relevante Spalten auswählen und umbenennen
cleaned_df = bundesliga_2223[["home_team", "away_team", "home_score", "away_score"]].rename(
columns={
"home_team": "HomeTeam",
"away_team": "AwayTeam",
"home_score": "FTHG",
"away_score": "FTAG",
}
)
# Überprüfen auf fehlende Werte (sollte 0 sein)
print(cleaned_df.isnull().sum())
# Anzeigen des bereinigten DataFrames
print(cleaned_df.head())
Nachdem wir die Daten bereinigt haben, ist es ein guter letzter Schritt, den DataFrame in eine CSV-Datei zu exportieren. Dadurch können wir den bereinigten Datensatz in späteren Phasen unseres Projekts direkt laden, ohne die Daten jedes Mal neu von der Quelle abrufen und verarbeiten zu müssen.
# Den bereinigten DataFrame in eine CSV-Datei speichern
# index=False verhindert, dass der DataFrame-Index in die Datei geschrieben wird
cleaned_df.to_csv('bundesliga_2223.csv', index=False)
Damit haben wir erfolgreich einen robusten Prozess zur Datenbeschaffung implementiert. Wir können nun Daten für verschiedene Ligen und Saisons effizient abrufen und für die Analyse vorbereiten. Lass uns dein Verständnis mit ein paar Fragen überprüfen.
Was ist der Hauptzweck der Python-Bibliothek SoccerData?
Welchen wesentlichen Vorteil bietet die lokale Caching-Funktion von SoccerData?
Im nächsten Modul werden wir diesen Datensatz verwenden, um erste statistische Analysen durchzuführen und die Grundlagen für unser Vorhersagemodell zu legen.