数据分析师 & 科学家2024

客户

地区足球俱乐部

角色

数据分析师 & 科学家

技术栈

Python, Pandas, Matplotlib, mplsoccer, Jupyter, Scikit-learn

日期

2024

01

挑战

一家地区足球俱乐部找到我,希望为他们的球队带来专业级的数据分析。他们拥有基本的比赛统计数据,但缺乏提取可操作战术见解的工具和专业知识。教练组需要在团队会议期间实际使用的可视化图表——球员比较、传球模式、射门效率——以便在阵型、换人和引援方面做出数据驱动的决策。

02

解决方案

构建了一个受专业体育科学工作流程启发的完整分析管道。抓取并汇总了来自 FBRef 的比赛数据,然后开发了一套基于 Python 的分析工具:用于跨进攻、防守和控球指标进行多维球员分析的 StatsBomb 风格雷达图;带有预期威胁 (xT) 叠加的传球网络图,以揭示组织模式;按每 90 分钟预期进球数 (xG) 排名的射门图;以及按位置和联赛百分位数标准化球员统计数据的比较报告。所有输出都作为易于理解的视觉报告交付,供教练组在每场比赛前查看。

python
# Player radar chart — percentile-based profiling
def build_player_radar(player: str, df: pd.DataFrame):
    metrics = [
        "goals_p90", "xG_p90", "key_passes_p90",
        "progressive_carries", "tackles_won_pct",
        "interceptions_p90", "pass_completion_pct",
        "aerial_duels_won_pct"
    ]
    values = []
    for m in metrics:
        pctl = percentileofscore(df[m], df.loc[player, m])
        values.append(round(pctl, 1))

    radar = Radar(params=metrics, min_range=[0]*8,
                  max_range=[100]*8)
    fig, ax = radar.setup_axis()
    radar.draw_circles(ax, facecolor="#0a0a0a")
    radar.draw_radar(values, ax,
        kwargs_radar={"facecolor": "#2d6a4f", "alpha": 0.6})
    return fig

使用 mplsoccer 进行多维球员分析的基于百分位数的雷达图

Gallery image 1
Gallery image 2
Gallery image 3

下一个项目

UI 设计教学

教育 / UX-UI 设计