【数据可视化-72】苏超第七轮战罢:黑金大屏下的足球数据洞察(含完整代码、数据和大屏)

发布于:2025-07-28 ⋅ 阅读:(21) ⋅ 点赞:(0)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  在足球的世界里,数据可视化是解读比赛的一把钥匙。介于苏超的火热程度,本文将使用2025年苏超第七轮结束后的积分数据集,通过Python和Pyecharts库,打造一个炫酷的黑金风格可视化大屏,深入分析球队排名、进球效率、净胜球等多个维度,揭示数据背后的内在问题。

二、数据展示

三、环境准备

  确保安装了必要的库:

pip install pandas pyecharts

四、完整可运行代码

4.1 数据加载与处理

import pandas as pd
from pyecharts import options as opts
from pyecharts.charts import (
    Bar, Page, Line, Pie, WordCloud, Radar, Funnel, Gauge, Liquid, TreeMap, Sankey
)
from pyecharts.globals import ThemeType

# 读数据
df = pd.read_csv("苏超第七轮战罢球队统计数据.csv", encoding='GBK')

# 数据预处理
df['净胜球'] = df['进球数'] - df['失求数']
df['场均进球'] = df['进球数'] / df['比赛场次']
df['场均失球'] = df['失求数'] / df['比赛场次']

4.2 积分榜 - 黑金条形

# 1. 积分榜 - 黑金条形
bar_rank = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add_xaxis(df['排名'].astype(str).tolist())
    .add_yaxis("积分", df['积分'].tolist(), category_gap="60%")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="积分榜 · 黑金条形"),
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
        yaxis_opts=opts.AxisOpts(name="积分"),
    )
)

4.2 积分雷达图

# 2. 积分雷达图
radar = (
    Radar(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="#000"))
    .add_schema(
        schema=[opts.RadarIndicatorItem(name=n, max_=10) for n in df['队名']]
    )
    .add("积分", [df['积分'].tolist()],
         color="#00FFFF")
    .set_global_opts(title_opts=opts.TitleOpts(title="积分雷达"))
)

4.3 胜/平/负 桑基图

# 3. 胜/平/负 桑基图
sankey = (
    Sankey(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add("赛果", [list(z) for z in zip(df['胜场数'], df['平场数'], df['负场数'])],
         linestyle_opt=opts.LineStyleOpts(opacity=0.5, curve=0.5, color="source"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="胜-平-负流向"),
    )
)

4.4 积分仪表盘

# 4. 积分仪表盘
gauge = (
    Gauge(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add("", [("积分", df['积分'].max())],
         min_=0, max_=100,
         axisline_opts=opts.AxisLineOpts(
             linestyle_opts=opts.LineStyleOpts(
                 color=[(0.3, "#FF0000"), (0.7, "#FFFF00"), (1, "#00FF00")], width=30)))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="积分上限仪表盘"))
)

4.5 进球效率漏斗图

# 5. 进球效率漏斗图
funnel = (
    Funnel(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add("场均进球", [list(z) for z in zip(df['队名'], df['场均进球'])],
         label_opts=opts.LabelOpts(position="inside"))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="进球效率漏斗"))
)

4.6 球队名称词云图

# 6. 球队名称词云图
wc = (
    WordCloud(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add("", [list(z) for z in zip(df['队名'], [i for i in range(len(df['队名']))])],
          shape="circle",
          word_size_range=[20, 100])
    .set_global_opts(
        title_opts=opts.TitleOpts(title="球队名称词云"))
)

4.7 净胜球双轴

# 7. 净胜球双轴
line = (
    Line(init_opts=opts.InitOpts(theme=ThemeType.DARK, bg_color="black"))
    .add_xaxis(df['排名'].astype(str).tolist())
    .add_yaxis("积分", df['积分'].tolist(), yaxis_index=0)
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="净胜球",
            type_="value",
            position="right",
            axislabel_opts=opts.LabelOpts(formatter="{value}"),
            axisline_opts=opts.AxisLineOpts(linestyle_opts=opts.LineStyleOpts(color="#00FFFF")),
            splitline_opts=opts.SplitLineOpts(is_show=True, linestyle_opts=opts.LineStyleOpts(color="#fff")),
        )
    )
    .add_yaxis("净胜球", df['净胜球'].tolist(), yaxis_index=1)
    .set_global_opts(
        title_opts=opts.TitleOpts(title="积分 vs 净胜球"))
)

4.8 组合大屏

# 组合大屏
# 创建图表
page = Page(layout=Page.DraggablePageLayout)
page.add(bar_rank, radar, sankey, gauge, funnel, wc, line)
page.render("suzhou_super_league_r7_dashboard.html")

五、运行代码

  将上述代码保存为 dashboard.py,并确保 苏超第七轮战罢球队统计数据.csv 文件位于同一目录下。运行脚本后,将生成一个名为 suzhou_super_league_r7_dashboard.html 的文件,打开该文件即可查看可视化大屏。

python dashboard.py

六、效果展示

  运行上述代码后,你将得到一个包含多个图表的可视化大屏,每个图表都以其独特的方式揭示了数据中的洞察。


七、总结

  通过上述代码,我们成功地将苏超第七轮结束后的积分数据转化为一个炫酷的黑金风格可视化大屏。每个图表都以其独特的方式揭示了数据中的洞察,帮助我们更好地理解足球领域的新趋势和问题。希望这篇文章对你有所帮助,如果你有任何问题或建议,欢迎在评论区留言。


网站公告

今日签到

点亮在社区的每一天
去签到