🧑 博主简介:曾任某智慧城市类企业算法总监,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的更多可能!