該存儲庫包含一系列工具,項目和資源,可以有效地分析和可視化足球數據。
該存儲庫包含一系列工具,項目和資源,旨在支持足球數據中有意義的見解。 Python用於提取,處理,分析和可視化事件數據,匯總團隊數據,市場價值數據等。
存儲庫分為Mutliple項目和子項目,每個項目旨在進行詳細的分析,產生一些特定的見解,或者引入一定程度的自動化足球數據分析。使用此存儲庫的內容,通過Twitter(@_jkds_)創建了許多新穎且內容豐富的視覺效果和文本線程並與足球數據分析社區共享。
為了支持希望在足球數據的背景下發展其數據分析技能的其他人,我製作了入門指南。
下面的樹(單擊下拉下來以展開)顯示此GIT存儲庫的文件夾結構。請注意,為簡單起見,從圖中省略了一些單獨的文件。
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
如上上面的文件夾結構所示,存儲庫包含三個關鍵文件夾:
通常,每個項目都遵循許多邏輯步驟:
項目是根據已進行和存儲的項目文件夾區域的數值標識符進行編號的。當在同一文件夾區域進行了多個子項目/項目時,使用小數。例如,子項目2.1和2.2是項目2中存在的兩個單獨的作品,該作品存儲在文件夾區域02_player_team_valuation_valuation_transfermarkt中。選擇一個項目標題以擴展下拉菜單並了解更多信息。
數據來源: Statsbomb&FIFA匹配報告
項目區域: 01_WC2018_BOX2BOX_MIDS
代碼: worldcup_b2b_mids.py
摘要和輸出:對2018年世界杯上最有效的中場球員的最有效盒子的調查。許多定制指標用於在贏得球,保留球和創造力以及移動性方面為中場中場評分。一個盒子中場的好盒子被定義為在每個區域中脫穎而出的中場中場。
數據來源: Transfermarkt
項目區域: 00_data_import_and_misc_work&02_player_team_valuation
代碼: scrape_data_transfermarkt.py&team_player_value_analysis.py
摘要和輸出:開發從Transfermarkt.co.uk刮擦團隊和玩家市場價值信息的工具。產生了“偵察視覺效果”,突出了一個給定聯盟的球員,其年齡和目標貢獻的組合為每個£m的市場價值。這項工作還探討了使用統計模型根據玩家績效預測市場價值的使用。
數據來源: Transfermarkt
項目區域: 00_data_import_and_misc_work&02_player_team_valuation
代碼: scrape_data_transfermarkt.py&team_player_value_analysis.py
摘要和輸出:開發從Transfermarkt.co.uk刮擦團隊和玩家市場價值信息的工具。根據聯盟排名和總陣容的總數排名對團隊/過度表現的調查。
數據來源: Wyscout
項目區域: model_directory&03_model_development_and_implementation
代碼: xg_log_regression_model.py,xg_neural_network.py&shot_xg_plot.py.py
摘要和輸出:基本預期目標概率模型的實施和測試。這項工作包括對邏輯回歸預期目標模型和神經網絡預期目標模型的開發和比較,在2017/2018賽季期間,每次都訓練了歐洲“五巨頭”聯賽的40000張射擊。這些模型用於在定義的時間段內計算特定球員,俱樂部和聯賽的預期目標。
數據來源: Opta
項目區域: model_directory,03_model_development_and_implementation and Funsere Repo:ml_models_collection
代碼: pass_cluster_data_collection.py,models.py,外部回購:ml_model.ipynb
摘要和輸出:使用歐洲的“ Big 5”聯賽(Opta Data,2019/20-2022/23)使用5,000,000多次通過,我構建了一個聚類模型,能夠將成功的通行證分配給65個群集之一。這項工作涉及建造機器學習管道和各種分類算法的測試。所選模型使用AK表示聚類算法來分配通行證,然後我將其包裝在聚類功能中,以支持我的許多足球分析項目。
數據來源: Statsbomb
項目區域: Analysis_tools
代碼: models.py
摘要和輸出:實施蒙特卡羅方法,以基於射擊事件及其相關的預期目標(XG)為基於單個匹配結果的概率進行建模。在給定的匹配項上運行了大量(10000+)的模擬,以示意每個團隊的近似獲勝概率,並提取概率。然後簡單地將給定匹配項中的預期點計算為3×win_probability + 1×draw_proability。所採用的方法取決於XG代表評分概率的假設,並且單個射擊事件是獨立的。
數據源:小幅
項目區域: 04_Match_Reports
代碼: shot_report_understat.py
摘要和輸出:開發腳本以從低音中提取鏡頭數據,並為任何選定的匹配生成SHOT報告。
數據來源: Opta/Whoscored
項目區域: 04_Match_Reports
代碼: pass_report_ws.py
摘要和輸出:根據啟動和結束的音高區域來識別和計數類似的算法的設計和開發。任何選定匹配的區域間通過流量報告的生成。
數據來源: Opta/Whoscored
項目區域: 04_Match_Reports
代碼: pass_report_ws.py
摘要和輸出:算法的設計和開發,以根據整個比賽中的所有遊戲內動作的位置來計算玩家領土,包括刪除異常值。任何選定匹配的形狀報告生成,包括將區域區域計算為覆蓋俯仰區域的代理。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_defension_contribution.py
摘要和輸出:在比賽期間對所有球員的防守貢獻進行評估,並通過指標來確定頂級球員,例如每100個反對派觸動等指標。工作包括植入鑽石散射圖,該圖可以用於任何2D散點圖。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_defension_contribution.py
摘要和輸出:評估反對派在反對派中完成的防守措施的數量,所有球員在比賽期間的所有球員都表明誰傾向於從前線防守。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_effective_passers.py
摘要和輸出:通過評估在競爭期間完成的所有播放通行證的有效路人的識別。諸如漸進式通行證,累積預期威脅和每90個對立框之類的指標被用來識別頂級球員。這項工作涉及實施卡倫·辛格(Karun Singh)開發的預期威脅模型。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_effective_carriers.py
摘要和產出:通過評估競爭期間完成的攜帶者來識別有效載體。這項工作涉及開發一個模塊,從OPTA事件數據中推斷事件(由於未記錄攜帶)。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_effective_carriers.py
摘要和輸出:通過評估在球場不同區域內競爭期間完成的各種事件/動作來識別最高威脅創建者。這項工作涉及實施卡倫·辛格(Karun Singh)開發的預期威脅模型。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_thrat_creators.py
摘要和輸出:在多個比賽中確定最高罰款者。罰款質量被評估為我與門將米德里夫(Midriff)的平均靶向罰球距離,而脫離目標的罰款分配為零。這項工作包括在2D子圖內實施“ 3D投影”。
數據來源: Opta/Whoscored
項目區域: 05_competition_reports_top_players
代碼: player_impact_on_team.py
摘要和輸出:確定團隊的誘人指標(團隊預期威脅,預期威脅,預期威脅差異等)在特定球員在球場上而不是在沒有比賽時會有所不同
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_threat_creation.py
摘要和輸出:通過通過競賽通行證創造的總威脅和每90次攜帶的全部威脅的排名,包括識別每個團隊產生威脅的區域。
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_ball_winning.py
摘要和輸出:平均高度對球隊的排名排名,他們贏得了球的冠軍,包括確定他們從對手那裡獲得球的區域。
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_cross_success.py
摘要和輸出:按競爭對手交叉成功率對團隊的排名。這項工作包括一個有效(或成功)十字架的自定義定義,其中有效的十字架是在遊戲的5秒內進行射擊或鑰匙傳球的定義(不論iNITAR橫斷面的結果如何)。
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_fullback_combinations.py
摘要和輸出:團隊的排列頻率的排名排名。根據通行證是否導致進球的射門,每個團隊的後衛之間的通過。
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_delta_threat_creation.py
摘要和產出:通過在比賽中獲得的總威脅的改進來對團隊排名,每90賽季與上個賽季的競賽。包括對上一年上方或以下部門的團隊的核算。威脅創造的變化也被俯仰區分解
數據來源: Opta/Whoscored
項目區域: 06_competition_reports_top_teams
代碼: team_setpiece_shot_concession.py
摘要和產出:通過匯總機會在反對派“間接”套件的5秒內承認,對團隊捍衛場景的能力進行了調查。 “間接”套件是指在拍攝固定件後球保持球的角球和任意球,因此,分析中排除了脫離目標的任意球和固定裝置的直接進球。
數據來源: Statsbomb
項目區域: 06_competition_reports_top_teams
代碼: xg_league_table_sb.py
摘要和輸出:基於團隊的XG,XG性能,XG/XT評分和其他各種指標的各種聯盟排名。
數據來源: Opta/Whoscored
項目區域: 07_PLAYER_REPORTS
代碼: player_report_fullback.py
摘要和輸出:玩家報告專門針對後衛的報告,包括開發靈活/強大的機制,以將報告與類似玩家進行比較,然後將一組球員與所選聯盟中所有後衛進行排名。
數據來源: Opta/Whoscored
項目區域: 07_PLAYER_REPORTS
代碼: Advanced_swarm_radar.py
摘要和輸出:開發一種可視化玩家性能的新穎而創新的手段。 “群”雷達可以快速介紹,評估和比較玩家,但也可以通過顯示一個比較玩家之間的度量分數的分佈來提供更深層次的背景。
數據來源: Opta/Whoscored
項目區域: 08_Evolution_of_shooting
代碼: shot_characteristics_trending.py
摘要和產出:專業足球協會(APFA)簽訂的一項工作,探索射擊藝術在足球比賽中的變化以及對英超聯賽射擊的發展的見解。
APFA-英超網絡文章中拍攝的演變
APFA-英超射擊的演變。pdf
數據來源: Opta/Whoscored
項目區域: 09_LEAGUE_POINTION_METRIC_CORRARATION
代碼: team_metrics_pts_correlation.py
摘要和輸出:探索性工作,以確定特定聯賽中成功團隊的特徵。調查了使用5個以上的數據,對團隊指標與一個賽季積累的點有多大相關性。該項目的輸出包含在TIFO視頻中 - 為什麼埃弗頓比您想像的要好。
數據來源: Opta/Whoscored
項目區域: 10_team_buildup_passes
代碼: team_pass_tendencies.py
摘要和輸出:對以前的通過群集的開發,以識別團隊堆積的傳球趨勢。這是在球隊在球場各個區域中進行的前6個傳球的普通傳球群體。
數據來源: Statsbomb
項目區域: 11_justice_league
代碼: justice_league.py
摘要和輸出:基於概率的比賽成果(或預期點),對積分建模的先前工作進行開發,以模擬整個比賽和重新製作聯盟榜單。