🧑 博主简介:曾任某智慧城市类企业算法总监,CSDN / 稀土掘金 等平台人工智能领域优质创作者。
目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。
一、引言
2025 年亚洲杯于 2025 年 8 月 18 日凌晨落下帷幕,中国队在决赛中以 1 分之差惜败澳大利亚队,尽管未能夺冠,但这一成绩已是中国队近十年来的最佳表现。本文将通过 Python 和 Pyecharts 对两队球员的技术统计进行可视化分析,从多个维度展示两队球员的表现,并生成炫酷的可视化大屏。
二、数据准备
本次分析的数据集包含两个 sheet:sheet1 是澳大利亚队的技术统计,sheet2 是中国队的技术统计。以下是部分数据:
2.1 澳大利亚队(sheet1)
| 球员 | 位置 | 出场时间 | 投篮 | 三分 | 罚球 | 前篮板 | 后篮板 | 总篮板 | 助攻 | 抢断 | 盖帽 | 失误 | 犯规 | +/- | 得分 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 麦克维 | 28:12 | 5-12 | 1-6 | 0-0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 2 | 2 | 11 | |
| 麦格尼 | 26:15 | 1-4 | 0-0 | 2-4 | 1 | 4 | 5 | 5 | 3 | 3 | 1 | 3 | 18 | 4 | |
| 库克斯 | 31:12 | 13-17 | 0-0 | 4-11 | 4 | 5 | 9 | 2 | 0 | 0 | 2 | 2 | 4 | 30 | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
2.2 中国队(sheet2)
| 球员 | 位置 | 出场时间 | 投篮 | 三分 | 罚球 | 前篮板 | 后篮板 | 总篮板 | 助攻 | 抢断 | 盖帽 | 失误 | 犯规 | +/- | 得分 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 赵睿 | 24:46 | 2-10 | 0-6 | 6-7 | 0 | 5 | 5 | 6 | 0 | 0 | 1 | 4 | 5 | 10 | |
| 胡金秋 | 27:52 | 8-10 | 0-0 | 4-4 | 5 | 5 | 10 | 1 | 1 | 1 | 2 | 2 | -1 | 20 | |
| 程帅澎 | 21:24 | 4-7 | 2-5 | 2-4 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 3 | -17 | 12 | |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
三、环境搭建
在开始之前,确保已经安装了以下 Python 包:
pip install pandas pyecharts openpyxl
四、数据可视乎
以下是完整的 Python 代码,用于读取数据、进行可视化分析,并生成炫酷的可视化大屏。
import pandas as pd
from pyecharts.charts import Bar, Line, Pie, Radar, Page
from pyecharts import options as opts
from pyecharts.globals import ThemeType
# 读取数据
df_australia = pd.read_excel("2025亚洲杯总决赛数据.xlsx", sheet_name=0)
df_china = pd.read_excel("2025亚洲杯总决赛数据.xlsx", sheet_name=1)
# 数据处理
def process_data(df):
df['出场时间'] = df['出场时间'].apply(lambda x: int(x.split(':')[0]) + int(x.split(':')[1]) / 60)
df['投篮命中率'] = df['投篮'].apply(lambda x: int(x.split('-')[0]) / int(x.split('-')[1]) if int(x.split('-')[1]) > 0 else 0)
df['三分命中率'] = df['三分'].apply(lambda x: int(x.split('-')[0]) / int(x.split('-')[1]) if int(x.split('-')[1]) > 0 else 0)
df['罚球命中率'] = df['罚球'].apply(lambda x: int(x.split('-')[0]) / int(x.split('-')[1]) if int(x.split('-')[1]) > 0 else 0)
return df
df_australia = process_data(df_australia)
df_china = process_data(df_china)
4.1 柱状图:得分排名
bar = (
Bar(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
.add_xaxis(df_australia['球员'].tolist() + df_china['球员'].tolist())
.add_yaxis("得分", df_australia['得分'].tolist() + df_china['得分'].tolist(), category_gap="50%")
)
4.2 折线图:投篮命中率
line = (
Line(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
.add_xaxis(df_australia['球员'].tolist() + df_china['球员'].tolist())
.add_yaxis("投篮命中率", df_australia['投篮命中率'].tolist() + df_china['投篮命中率'].tolist())
)
4.3 饼图:总篮板占比
pie = (
Pie(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
.add("", [list(z) for z in zip(df_australia['球员'], df_australia['总篮板'])] + [list(z) for z in zip(df_china['球员'], df_china['总篮板'])])
)
4.4 柱状图:出场时间分布
map_ = (
Bar(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
.add_xaxis(df_australia['球员'].tolist() + df_china['球员'].tolist())
.add_yaxis("出场时间", df_australia['出场时间'].tolist() + df_china['出场时间'].tolist(), category_gap="50%")
)
4.5 雷达图:总篮板、助攻、抢断、盖帽、失误、犯规
# 雷达图的 Schema
c_schema = [
{"name": "总篮板", "max": 40},
{"name": "助攻", "max": 25},
{"name": "抢断", "max": 10},
{"name": "盖帽", "max": 10},
{"name": "失误", "max": 15},
{"name": "犯规", "max": 25},
]
# 初始化雷达图
radar = Radar(init_opts=opts.InitOpts(width="1000px", height="600px", bg_color="#0d0735"))
# 添加 Schema
radar.add_schema(schema=c_schema, shape="circle")
# 添加数据
radar.add("澳大利亚队", [australia_mean], color="#f9713c")
radar.add("中国队", [china_mean], color="#b3e4a1")
五、生成可移动的可视化大屏
page = Page(layout=Page.DraggablePageLayout, page_title="2025亚洲杯总决赛_球队表现可视化分析")
page.add(bar, line, pie, map_, radar)
page.render("2025亚洲杯总决赛_球队表现可视化大屏.html")
四、可视化结果
运行上述代码后,会生成一个名为 2025亚洲杯总决赛_球队表现可视化大屏.html 的文件。打开该文件,可以看到以下内容:
五、分析总结
通过对 2025 年亚洲杯总决赛数据的可视化分析,我们可以得出以下结论:
- 得分能力:澳大利亚队在得分能力上略占优势,尤其是库克斯和加洛韦的表现非常突出。中国队的胡金秋和赵睿也有较高的得分,但整体得分能力稍逊一筹。
- 投篮命中率:澳大利亚队的投篮命中率普遍较高,显示出较高的进攻效率。中国队的投篮命中率相对较低,但胡金秋和赵睿的表现较为突出。
- 篮板能力:中国队在篮板球的争抢上表现出色,尤其是胡金秋以 10 个总篮板领先。这表明中国队在内线的防守和篮板球控制上做得较好。
- 助攻与抢断:澳大利亚队的麦格尼在助攻和抢断上表现突出,而中国队的赵睿和程帅澎也有不俗的表现,但在整体数据上稍逊一筹。
- 出场时间:两队的主力球员出场时间普遍较长,显示出两队在比赛中都较为依赖主力球员的表现。替补球员的出场时间相对较短,但也有一定的贡献。
尽管中国队在决赛中惜败澳大利亚队,但这一成绩已是中国队近十年来的最佳表现。通过本次比赛,中国队展现了强大的团队精神和竞技水平,未来可期。
如果您在人工智能领域遇到技术难题,或是需要专业支持,无论是技术咨询、项目开发还是个性化解决方案,我都可以为您提供专业服务,如有需要可站内私信或添加下方VX名片(ID:xf982831907)
期待与您一起交流,共同探索AI的更多可能!