🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。
目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。
一、引言
足球作为全球最受欢迎的运动之一,其赛事和排名一直是球迷和体育分析师关注的焦点。欧足联(UEFA)的排名系统不仅反映了各国联赛的竞技水平,还直接影响到各联赛在欧洲赛事中的参赛名额分配。本文将基于 2024/2025 赛季欧足联官方联赛的国家总积分数据集,使用 Python 的 Matplotlib 库进行可视化分析。
二、数据集介绍
本数据集包含了 2024/2025 赛季欧足联官方联赛的国家总积分,包括国家排名、过去五个赛季的积分、总积分、参赛俱乐部数量等。
三、数据 & 环境
-
数据文件:
uefa_rankings_2025.csv
(已上传附件)。 -
安装依赖:
pip install pandas pyecharts country_converter scikit-learn
四、读数据 + 衍生字段
python
import pandas as pd
import numpy as np
from pyecharts.charts import Map, Line, Bar, Scatter, Radar, Page, Pie
from pyecharts import options as opts
from country_converter import convert
from sklearn.cluster import KMeans
df = 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 | 地理分布:欧洲热力地图
ini
# 确保国家名称正确
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 | 时间趋势:五年折线
less
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
less
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 | 稳定性:五年波动
less
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 | 单季上限:俱乐部最高一季
less
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 列,这里用模拟)
less
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 万次
ini
sim = np.random.normal(df['Pts'], df['Std'], size=(10000, len(df))).T
prob = (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}%"))
)

六、一键生成单页大屏
scss
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的更多可能!