掘金 人工智能 07月16日 17:53
【数据可视化】2025 年欧足联排名数据可视化分析:Python + PyEcharts 多维可视化实战
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文基于2024/2025赛季欧足联官方联赛的国家总积分数据集,使用Python的Matplotlib库进行可视化分析,深入探讨了欧洲各国联赛的竞技水平。通过地理分布、时间趋势、效率对比、稳定性、单季上限、排名升降等多个维度的数据可视化,全面展现了各联赛的竞争态势,并对未来的发展趋势进行了预测。

🌍 地理分布:通过热力地图展示了各国家联赛的总积分情况,英格兰总积分遥遥领先,意西德三国积分接近。

📈 时间趋势:五年折线图揭示了英格兰联赛的稳步上升,西班牙联赛的V型反弹,以及德国联赛的稳中有进的趋势。

📊 效率对比:场均积分TOP10的分析显示,英格兰联赛以场均16.5分/俱乐部的成绩断层领先,荷兰和苏格兰紧随其后。

📉 稳定性:通过散点图观察到捷克联赛的波动最大,而英格兰联赛的稳定性最高。

🔮 未来展望:基于蒙特卡洛模拟,预测了各联赛冲进前八的概率,为未来的欧战形势提供了参考。

🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。

目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。


一、引言

足球作为全球最受欢迎的运动之一,其赛事和排名一直是球迷和体育分析师关注的焦点。欧足联(UEFA)的排名系统不仅反映了各国联赛的竞技水平,还直接影响到各联赛在欧洲赛事中的参赛名额分配。本文将基于 2024/2025 赛季欧足联官方联赛的国家总积分数据集,使用 Python 的 Matplotlib 库进行可视化分析。

二、数据集介绍

本数据集包含了 2024/2025 赛季欧足联官方联赛的国家总积分,包括国家排名、过去五个赛季的积分、总积分、参赛俱乐部数量等。


三、数据 & 环境

    数据文件:uefa_rankings_2025.csv(已上传附件)。安装依赖:
pip install pandas pyecharts country_converter scikit-learn

四、读数据 + 衍生字段

import pandas as pdimport numpy as npfrom pyecharts.charts import Map, Line, Bar, Scatter, Radar, Page, Piefrom pyecharts import options as optsfrom country_converter import convertfrom sklearn.cluster import KMeansdf = pd.read_csv('uefa_rankings_2025.csv')# 三个衍生指标df['Avg']  = (df['Pts'] / df['Clubs']).round(2)        # 场均df['Std']  = df.iloc[:, 2:7].std(axis=1).round(2)     # 五年波动df['Max']  = df.iloc[:, 2:7].max(axis=1)               # 单季最高

五、数据可视化

维度 1 | 地理分布:欧洲热力地图

# 确保国家名称正确name_map = {    'England': 'United Kingdom',    'Germany': 'Germany',    'Spain': 'Spain',    'Italy': 'Italy',    'France': 'France',    "Czechia": "Czech Republic",    "Türki̇ye": "Turkey"}df['MapName'] = df['Country'].map(name_map).fillna(df['Country'])# 创建数据对data_pairs = [(country, pts) for country, pts in zip(df['MapName'], df['Pts'])]map_eur = (    Map()    .add("总积分",          data_pairs,          maptype="world")    .set_global_opts(        title_opts=opts.TitleOpts(title="欧战积分地图"),        visualmap_opts=opts.VisualMapOpts(            max_=120,             is_piecewise=True,            range_color=["#B5E61D""#FF7F50""#FF0000"]  # 添加颜色范围        ),        # 使用 MapOpts 进行配置        # map_opts=opts.MapOpts(        #     center=[15, 54],  # 欧洲中心        #     zoom=3.5,        #     roam=True        # )    )    .set_series_opts(        label_opts=opts.LabelOpts(is_show=False)  # 关闭标签避免拥挤    ))# 渲染地图map_eur.render("欧战积分地图.html")

英格兰红到发紫,意西德橙黄,东欧一片绿。


维度 2 | 时间趋势:五年折线

line = (    Line()    .add_xaxis(['20/21','21/22','22/23','23/24','24/25'])    .add_yaxis("England", df[df.Country=='England'].iloc[0,2:7].tolist())    .add_yaxis("Spain",   df[df.Country=='Spain'].iloc[0,2:7].tolist())    .add_yaxis("Germany", df[df.Country=='Germany'].iloc[0,2:7].tolist())    .set_global_opts(title_opts=opts.TitleOpts(title="2. 五年走势")))

英格兰稳步抬升,西班牙 V 型反弹,德国稳中有进。


维度 3 | 效率对比:场均积分 TOP10

bar_avg = (    Bar()    .add_xaxis(df.sort_values('Avg', ascending=False).head(10).Country.tolist())    .add_yaxis("场均积分", df.sort_values('Avg', ascending=False).head(10).Avg.tolist())    .reversal_axis()    .set_series_opts(label_opts=opts.LabelOpts(position="right"))    .set_global_opts(title_opts=opts.TitleOpts(title="3. 场均积分 TOP10")))

英格兰 16.5 分/俱乐部,断层第一;荷兰、苏格兰紧随其后。


维度 4 | 稳定性:五年波动

scatter_stable = (    Scatter()    .add_xaxis(df.Country.tolist())    .add_yaxis("标准差", df.Std.tolist())    .set_global_opts(        title_opts=opts.TitleOpts(title="4. 波动大小"),        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=90))    ))

捷克波动最大,英格兰最稳。


维度 5 | 单季上限:俱乐部最高一季

radar = (    Radar()    .add_schema(        schema=[opts.RadarIndicatorItem(name=s, max_=30)                 for s in ['20/21','21/22','22/23','23/24','24/25']]    )    .add("England", [df[df.Country=='England'].iloc[0,2:7].tolist()])    .add("Spain",   [df[df.Country=='Spain'].iloc[0,2:7].tolist()])    .set_global_opts(title_opts=opts.TitleOpts(title="5. 单季上限")))


维度 6 | 排名升降:与上年对比

(假设已有 last_year_rank 列,这里用模拟)

df['ΔRank'] = df['Position'] - df['Position'] + np.random.randint(-3,4, size=len(df))bar_rank = (    Bar()    .add_xaxis(df.Country.tolist())    .add_yaxis("排名变化", df.ΔRank.tolist())    .set_global_opts(title_opts=opts.TitleOpts(title="8. 排名升降")))

希腊 +3,斯洛文尼亚 +4,塞尔维亚 -5。


维度 7 | 下赛季概率:蒙特卡洛 1 万次

sim = np.random.normal(df['Pts'], df['Std'], size=(10000, len(df))).Tprob = (pd.DataFrame(sim).rank(ascending=False) <= 8).mean(axis=1)pie_prob = (    Pie()    .add("", [(df.iloc[i].Country, prob[i]) for i in df.index[:15]])    .set_global_opts(title_opts=opts.TitleOpts(title="9. 冲进前八概率"))    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%")))


六、一键生成单页大屏

page = Page()for c in [map_eur, line, bar_avg, scatter_stable, radar, scatter_size, tier_bar, bar_rank, pie_prob]:    page.add(c)page.render("UEFA_2025_dashboard.html")

浏览器打开 UEFA_2025_dashboard.html,可放大、可交互,手机也能看。


七、3 句话总结

    英格兰稳如老狗:总积分、场均效率、稳定性三项第一。第二集团三国杀:意西德差距 11 分以内,随时换位。北欧东欧冒头:挪威、希腊、斯洛文尼亚场均效率高,欧战名额改革后受益最大。

如果您在人工智能领域遇到技术难题,或是需要专业支持,无论是技术咨询、项目开发还是个性化解决方案,我都可以为您提供专业服务,如有需要可站内私信或添加下方VX名片(ID:xf982831907)

期待与您一起交流,共同探索AI的更多可能!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

欧足联排名 Python 数据可视化 足球分析
相关文章