Dieses Repository enthält eine Sammlung von Tools, Projekten und Ressourcen, die eine effektive Analyse und Visualisierung von Fußballdaten ermöglichen.
Dieses Repository enthält eine Sammlung von Tools, Projekten und Ressourcen, die darauf abzielen, die Erzeugung sinnvoller Einblicke aus Fußballdaten zu unterstützen. Python wird zur Extraktion, Verarbeitung, Analyse und Visualisierung von Ereignisdaten, aggregierten Teamdaten, Marktwertdaten und mehr verwendet.
Das Repository ist in mutliple Projekte und Unterprojekte unterteilt, von denen jedes darauf abzielt, entweder eine detaillierte Analyse durchzuführen, spezifische Erkenntnisse zu generieren oder einen gewissen Grad an Automatisierung in die Fußballdatenanalyse einzuführen. Unter Verwendung des Inhalts dieses Repositorys wurden eine Reihe neuartiger und informativer Grafiken und Textthreads über Twitter (@_JKDS_) erstellt und mit der Fußballdatenanalyse -Community geteilt.
Um andere zu unterstützen, die ihre Datenanalysefähigkeiten im Kontext von Fußballdaten entwickeln möchten, habe ich einen Leitfaden für den Einstieg erstellt.
In dem folgenden Baum (Klicken Sie auf Dropdown, um sie zu erweitern) enthält die Ordnerstruktur dieses Git-Repositorys. Beachten Sie, dass einige einzelne Dateien der Diagramm zur Einfachheit halber weggelassen werden.
football-data-analytics
│
├── analysis_tools
│ ├── __init__.py
│ ├── get_football_data.py [not included in git repo]
│ ├── logos_and_badges.py
│ ├── models.py
│ ├── pitch_zones.py
│ ├── statsbomb_custom_events.py
│ ├── statsbomb_data_engineering.py
│ ├── whoscored_custom_events.py
│ ├── whoscored_data_engineering.py
│ ├── wyscout_data_engineering.py
│
├── data_directory
│ ├── leaguetable_data
│ ├── misc_data
│ │ ├── articles
│ │ ├── images
│ ├── statsbomb_data [contents not included in git repo]
│ ├── transfermarkt_data
│ ├── whoscored_data [contents not included in git repo]
│ ├── wyscout_data
│
├── model_directory
│ ├── pass_cluster_model
│ │ ├── PassClusterModel65.joblib
│ ├── xg_model
│ │ ├── log_regression_xg_model.joblib
│
├── projects
│ ├── 00_data_import_and_misc_work
│ │ ├── download_yt_video.py
│ │ ├── import_data_fbref.py
│ │ ├── import_data_leaguetable.py
│ │ ├── import_data_whoscored.py
│ │ ├── scrape_data_transfermarkt.py
│ │ ├── misc_work
│ ├── 01_wc2018_box2box_mids
│ │ ├── worldcup_b2b_mids.py
│ ├── 02_player_team_valuation
│ │ ├── team_player_value_analysis.py
│ ├── 03_model_development_and_implementation
│ │ ├── pass_cluster_data_collection.py
│ │ ├── shot_xg_plot.py
│ │ ├── xg_log_regression_model.py
│ │ ├── xg_neural_network.py
│ ├── 04_match_reports
│ │ ├── off_def_shape_report_ws.py
│ │ ├── pass_report_ws.py
│ │ ├── shot_report_understat.py
│ ├── 05_competition_reports_top_players
│ │ ├── player_defensive_contribution.py
│ │ ├── player_effective_carriers.py
│ │ ├── player_effective_passers.py
│ │ ├── player_high_defensive_actions.py
│ │ ├── player_impact_on_team.py
│ │ ├── player_penalty_takers.py
│ │ ├── player_threat_creators.py
│ │ ├── player_threat_creators_zonal_comparison.py
│ ├── 06_competition_reports_top_teams
│ │ ├── team_ball_winning.py
│ │ ├── team_common_zonal_actions.py
│ │ ├── team_cross_success.py
│ │ ├── team_delta_threat_creation.py
│ │ ├── team_fullback_combinations.py
│ │ ├── team_setpiece_shot_concession.py
│ │ ├── team_threat_creation.py
│ │ ├── xg_league_table_sb.py
│ ├── 07_player_reports
│ │ ├── advanced_swarm_radar.py
│ │ ├── player_report_fullback.py
│ ├── 08_evolution_of_shooting
│ │ ├── shot_characteristics_trending.py
│ ├── 09_league_position_metric_correlation
│ │ ├── team_metric_pts_correlation.py
│ ├── 10_team_buildup_passes
│ │ ├── team_pass_tendencies.py
│ ├── 11_justice_league
│ │ ├── justice_league.py
│ ├── 99_private_work
│
├── .gitignore
│
├── Getting Started with Football Analytics.md
│
├── LICENSE
│
├── README.md
Wie in der obigen Ordnerstruktur gezeigt, enthält das Repository drei Schlüsselordner:
Im Allgemeinen folgt jedes Projekt einer Reihe logischer Schritte:
Die Projekte sind basierend auf der numerischen Kennung des Projektordnerbereichs, in dem sie durchgeführt und gespeichert wurden, nummeriert. Dezimalstellen werden verwendet, wenn im selben Ordnerbereich mehr als ein Unterprojekt/Werkarbeit durchgeführt wurde. Beispielsweise sind Unterprojekte 2.1 und 2.2 zwei separate Arbeiten, die in Projekt 2 vorhanden sind, die im Ordnerbereich gespeichert sind. Wählen Sie einen Projekttitel aus, um die Dropdown-Liste zu erweitern und mehr zu erfahren.
Datenquelle: StatsBomb & FIFA -Match -Berichte
Projektbereich: 01_WC2018_Box2Box_Mids
Code: Worldcup_B2B_MIDS.PY
Zusammenfassung und Ausgabe: Eine Untersuchung der effektivsten Box für Box -Mittelfeldspieler bei der Weltmeisterschaft 2018. Eine Reihe von benutzerdefinierten Metriken werden verwendet, um zentrale Mittelfeldspieler in Ballsieger, Ball -Retention und Kreativität und Mobilität zu erzielen. Eine gute Kiste zum Box -Mittelfeldspieler wird als zentraler Mittelfeldspieler definiert, der sich in jedem dieser Bereiche auszeichnet.
Datenquelle: Transfermarkt
Projektbereich: 00_Data_import_and_misc_work & 02_player_team_Valuation
Code: crape_data_transfermarkt.py & team_player_value_analysis.py
Zusammenfassung und Ausgabe: Entwicklung eines Tools zum Kratzen von Team- und Player -Marktwertinformationen von Transfermarkt.co.uk. Erzeugung eines "Scouting -Visual", das Spieler aus einer bestimmten Liga mit einer günstigen Kombination aus Alter und Zielbeitrag pro M -M -Marktwert hervorhebt. Die Arbeit untersucht auch die Verwendung statistischer Modelle zur Vorhersage des Marktwerts auf der Grundlage der Spielerleistung.
Datenquelle: Transfermarkt
Projektbereich: 00_Data_import_and_misc_work & 02_player_team_Valuation
Code: crape_data_transfermarkt.py & team_player_value_analysis.py
Zusammenfassung und Ausgabe: Entwicklung eines Tools zum Kratzen von Team- und Player -Marktwertinformationen von Transfermarkt.co.uk. Untersuchung des Teams unter/über-Performance basierend auf dem Ranking der Liga und dem Gesamt-Squad-Wert-Ranking.
Datenquelle: Wyscout
Projektbereich: model_directory & 03_model_development_and_implementation
Code: xg_log_rgression_model.py, xg_neural_network.py & shot_xg_plot.py
Zusammenfassung und Ausgabe: Implementierung und Prüfung von grundlegenden erwarteten Zielen probabilistische Modelle. Diese Arbeit umfasst die Entwicklung und den Vergleich einer logistischen Regression erwarteten Zielmodell und eines neuronalen Netzwerks erwartete Zielmodell, das jeweils über 40000 Schüsse in der Saison 2017/2018 in Europa 'Big Five' -Ligen geschult hat. Die Modelle werden verwendet, um die erwarteten Ziele für bestimmte Spieler, Clubs und Ligen über einen definierten Zeitraum zu berechnen.
Datenquelle: opta
Projektbereich: model_directory, 03_model_development_and_implementation & external repo: ml_models_collection
Code: pass_cluster_data_collection.py, models.py, externe Repo: ml_model.ipynb
Zusammenfassung und Ausgabe: Verwenden von über 5.000.000 Pässen mit den "Big 5" -Präsen Europas (Opta Data, 2019/20 - 2022/23) habe ich ein Clustering -Modell erstellt, das einem von 65 Cluster erfolgreiche Pässe zuweisen kann. Diese Arbeit umfasst den Bau einer Pipeline für maschinelles Lernen und das Testen einer Vielzahl von Klassifizierungsalgorithmen. Das ausgewählte Modell verwendet AK, was den Clustering -Algorithmus zum Zuweisen von Pässen verwendet, die ich dann in einer Clustering -Funktion verpackt habe, um viele meiner Fußballanalyseprojekte zu unterstützen.
Datenquelle: Statsbomb
Projektbereich: Analysis_tools
Code: models.py
Zusammenfassung und Ausgabe: Implementierung einer Monte-Carlo-Methode zur Modellierung der Wahrscheinlichkeit einzelner Match-Ergebnisse auf der Grundlage von Schuss-Ereignissen und ihren damit verbundenen erwarteten Zielen (XG). Eine große Anzahl (10000+) von Simulationen wird nach einer gegebenen Match durchgeführt, um die Gewinnwahrscheinlichkeit für jedes Team zu approximieren und die Wahrscheinlichkeit zu zeichnen. Die erwarteten Punkte in einem gegebenen Match werden dann einfach als 3 × Win_Probability + 1 × Draw_Proability berechnet. Die angewandte Methode hängt von der Annahme an, dass XG die Scoring -Wahrscheinlichkeit darstellt und dass einzelne Schussereignisse unabhängig sind.
Datenquelle: Understat
Projektbereich: 04_Match_reports
Code: shot_report_understat.py
Zusammenfassung und Ausgabe: Entwicklung eines Skripts zum Extrahieren von Shot -Daten aus dem Zwangsmitglied und zum Erstellen von Shot -Berichten für eine ausgewählte Übereinstimmung.
Datenquelle: opta/whocored
Projektbereich: 04_Match_reports
Code: pass_report_ws.py
Zusammenfassung und Ausgabe: Entwurf und Entwicklung eines Algorithmus, der ähnliche Pässe basierend auf dem Bereich der Tonhöhe identifiziert und zählt, in dem sie beginnen und abgeschlossen sind. Erzeugung von Interzonen-Pass-Flussberichten für eine ausgewählte Übereinstimmung.
Datenquelle: opta/whocored
Projektbereich: 04_Match_reports
Code: pass_report_ws.py
Zusammenfassung und Ausgabe: Entwurf und Entwicklung eines Algorithmus zur Berechnung der Spielergebiete auf der Grundlage der Positionen aller In-Play-Aktionen während eines Spiels, einschließlich der Entfernung von Ausreißern. Erzeugung von Formberichten für eine ausgewählte Übereinstimmung, einschließlich der Berechnung des Gebietsbereichs als Proxy für die abgedeckte Tonhöhenfläche.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_Defensive_Contribution.py
Zusammenfassung und Ausgabe: Bewertung des defensiven Beitrags aller Spieler über die Dauer eines Wettbewerbs, wobei die Top -Spieler durch Metriken wie Wiederherstellungen und Ballsiege pro 100 Opposition berührt werden. Die Arbeit beinhaltet die Implentation eines Diamant-Streuungsdiagramms, das für jedes 2D-Streudiagramm wiederverwendet werden kann.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_Defensive_Contribution.py
Zusammenfassung und Ausgabe: Bewertung der Anzahl der in der Opposition von allen Spielern durch alle Spieler durch die Dauer eines Wettbewerbs abgeschlossenen Verteidigungsmaßnahmen, was einen Hinweis darauf gibt, wer die Tendenz hat, sich von vorne zu verteidigen.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_effective_passers.py
Zusammenfassung und Ausgabe: Identifizierung effektiver Passanten durch Bewertung aller In-Play-Pässe, die über die Dauer eines Wettbewerbs abgeschlossen wurden. Metriken wie progressive Pässe, die kumulative erwartete Bedrohung und die Oppositionskasten pro 90 werden verwendet, um Top -Spieler zu identifizieren. Diese Arbeit beinhaltet die Umsetzung eines erwarteten Bedrohungsmodells, das von Karun Singh entwickelt wurde.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_effective_Carriers.py
Zusammenfassung und Ausgabe: Identifizierung wirksamer Träger durch Bewertung der Übertragungen über die Dauer eines Wettbewerbs. Diese Arbeit beinhaltet die Entwicklung eines Moduls, um Ereignisse aus OPTA -Ereignisdaten zu schließen (wie nicht aufgezeichnet werden).
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_effective_Carriers.py
Zusammenfassung und Ausgabe: Identifizierung von Top -Bedrohungsschöpfer durch Bewertung verschiedener Ereignisse/Aktionen, die über die Dauer eines Wettbewerbs in verschiedenen Bereichen der Tonhöhe ausgeführt wurden. Diese Arbeit beinhaltet die Umsetzung eines erwarteten Bedrohungsmodells, das von Karun Singh entwickelt wurde.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_Threat_Creators.py
Zusammenfassung und Ausgabe: Identifizierung von Top -Strafabnehmern in mehreren Wettbewerben. Die Strafqualität wird bewertet, meine durchschnittliche Entfernung der Straftat von Torhüter von Torhütermimen, wobei die Strafen außerhalb des Ziels eine Distanz von Null zugewiesen haben. Diese Arbeit umfasst die Implementierung von "3D -Projektionen" innerhalb von 2D -Nebenhandlungen.
Datenquelle: opta/whocored
Projektbereich: 05_Competition_Reports_top_players
Code: Player_impact_on_team.py
Zusammenfassung und Ausgabe: Entschlossenheit, wie die angemessenen Metriken eines Teams (das Team erwartete Bedrohung, das Team erwartete, die Bedrohung, das Team erwartete die Bedrohungsunterschiede usw.) variieren, wenn ein bestimmter Spieler auf dem Spielfeld ist, wenn sie nicht spielen, wenn sie nicht spielen
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_threat_creation.py
Zusammenfassung und Ausgabe: Rangliste der Teams durch Gesamtbedrohung, die durch In-Play-Pässe und Tragen pro 90 erstellt wurden, einschließlich der Identifizierung der Zonen, in denen jedes Team Bedrohung erzeugt.
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_ball_winning.py
Zusammenfassung und Ausgabe: Rangliste der Teams nach der durchschnittlichen Höhe auf dem Spielfeld, den sie den Ball zurückgewinnen, einschließlich der Identifizierung der Zonen, in denen sie den Ball von der Opposition besitzen.
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_cross_success.py
Zusammenfassung und Ausgabe: Rangliste der Teams durch In-Play-Cross-Erfolgsrate. Diese Arbeit beinhaltet eine benutzerdefinierte Definition eines effektiven (oder erfolgreichen) Kreuzes, bei dem ein effektives Kreuz innerhalb von 5 Sekunden nach dem Spielen (unabhängig vom Intital -Kreuz -Ergebnis) entweder ein Schuss oder einen Schlüsselpass folgt.
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_fullback_combinations.py
Zusammenfassung und Ausgabe: Rangliste der Teams nach der Häufigkeit, in der sich ihre vollen Rücken verbinden. Pässe zwischen den Außenverteidigern jedes Teams werden identifiziert und hervorgehoben, basierend darauf, ob der Pass zu einem Torschüsse führt.
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_delta_threat_creation.py
Zusammenfassung und Ausgabe: Rangliste der Teams durch Verbesserung der Gesamtbedrohung, die durch In -Play -Pässe pro 90 - aktuelle Saison im letzten Saison erzeugt wird. Beinhaltet die Bilanzierung von Teams, die im Vorjahr in der Division über oder weniger waren. Die Veränderung der Bedrohungsschöpfung wird ebenfalls durch die Tonhöhezone abgebaut
Datenquelle: opta/whocored
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: team_setpiece_shot_conzession.py
Zusammenfassung und Ausgabe: Untersuchung der Fähigkeit des Teams, Set-Stücke durch aggregierte Chancen zu verteidigen, die innerhalb von 5 Sekunden nach einer "indirekten" Opposition eingeräumt wurden. "Indirekte" Versatzstücke beziehen sich auf Corner und Freikicke, in denen der Ball nach der Aufnahme des Versatzes im Spiel bleibt.
Datenquelle: Statsbomb
Projektbereich: 06_COMPETITION_REPORTS_TOP_TEAMS
Code: xg_league_table_sb.py
Zusammenfassung und Ausgabe: Erzeugung verschiedener Liga -Tabellen -Ranglisten basierend auf XG, XG Performance, XG/XT -Ration und verschiedenen anderen Metriken.
Datenquelle: opta/whocored
Projektbereich: 07_player_reports
Code: Player_Report_fullback.py
Zusammenfassung und Ausgabe: Spielerbericht spezifisch für Außenverteidiger, einschließlich der Entwicklung eines flexiblen/robusten Mechanismus, um den Bericht mit ähnlichen Spielern zu vergleichen und dann die Spieler gegen alle Außenverteidiger innerhalb einer ausgewählten Liga zu bewerten.
Datenquelle: opta/whocored
Projektbereich: 07_player_reports
Code: Advanced_Swarm_Radar.py
Zusammenfassung und Ausgabe: Entwicklung eines neuartigen und innovativen Mittel zur Visualisierung der Spielerleistung. Das "Swarm" -Radar kann Spieler schnell profilieren, bewerten und vergleichen, aber auch einen tieferen Kontext durch Verdrängung der Verteilungen der metrischen Bewertungen unter einem Pool von Vergleichsspielern.
Datenquelle: opta/whocored
Projektbereich: 08_evolution_of_shooting
Code: shot_characteristics_trending.py
Zusammenfassung und Ausgabe: Ein von der Association of Professional Football Analysis (APFA) beauftragter Werk, der untersucht, wie sich die Kunst des Schießens im Fußball verändert und einen Einblick in die Entwicklung des Schießens in der Premier League gibt.
APFA - Die Entwicklung des Schießens im Webartartikel der Premier League
APFA - Die Entwicklung des Schießens in der Premier League.pdf
Datenquelle: opta/whocored
Projektbereich: 09_League_Position_Metric_Correlation
Code: team_metrics_pts_correlation.py
Zusammenfassung und Ausgabe: Erkundungsarbeiten zur Ermittlung der Eigenschaften erfolgreicher Teams in bestimmten Ligen. Untersuchung, wie stark eine Reihe von Teammetriken mit den in einer Saison angesammelten Punkten korrelieren, unter Verwendung von Daten aus über 5 Spielzeiten. Die Ausgabe dieses Projekts wurde in einem TIFO -Video aufgenommen - warum Everton besser ist als Sie denken.
Datenquelle: opta/whocored
Projektbereich: 10_Team_Buildup_Passes
Code: team_pass_tendencies.py
Zusammenfassung und Ausgabe: Ausnutzung früherer Arbeiten zum Passclustering, um die Passendenzen von Teams im Aufbau zu identifizieren. Dies enttäuscht gemeinsame Passcluster für die ersten 6 Pässe, die ein Team in verschiedenen Bereichen des Spielfelds herstellt.
Datenquelle: Statsbomb
Projektbereich: 11_justice_league
Code: Justice_League.py
Zusammenfassung und Ausgabe: Ausnutzung früherer Arbeiten zur Punktmodellierung zur Simulation einer vollen Staffel von Spielen und die erneute Produktion der Liga-Tabellenwertung auf der Grundlage der wahrscheinlichen Spielergebnisse (oder den erwarteten Punkten).