综合实用脚本,变向突破次数对比?

wen 实用脚本 2

变向突破次数对比

下面给你一份可直接运行的 Python 脚本,用于统计并对比球员/球队的变向突破次数,数据源支持 CSV 或手动字典,输出对比表格 + 可视化图表。

综合实用脚本,变向突破次数对比?


完整脚本

# -*- coding: utf-8 -*-
"""
变向突破次数对比脚本
功能:
1. 读取球员/球队变向突破数据(CSV 或内置字典)
2. 统计总次数、场均、成功率
3. 横向对比排序,输出表格
4. 生成柱状图 + 折线趋势图
"""
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei']   # 中文显示
matplotlib.rcParams['axes.unicode_minus'] = False
# ============ 1. 数据源(可替换为 pd.read_csv("data.csv")) ============
data = {
    "球员":       ["张三", "李四", "王五", "赵六", "孙七"],
    "出场次数":   [10, 10, 8, 10, 9],
    "变向突破":   [42, 35, 28, 50, 31],   # 总次数
    "成功次数":   [30, 22, 18, 33, 20],   # 突破成功
    "被抢断":     [12, 13, 10, 17, 11],
}
df = pd.DataFrame(data)
# ============ 2. 计算衍生指标 ============
df["场均突破"] = (df["变向突破"] / df["出场次数"]).round(2)
df["成功率%"] = (df["成功次数"] / df["变向突破"] * 100).round(1)
df["场均成功"] = (df["成功次数"] / df["出场次数"]).round(2)
# ============ 3. 排序 & 输出表格 ============
df_sorted = df.sort_values("变向突破", ascending=False).reset_index(drop=True)
print("=" * 70)
print("【变向突破次数对比表】")
print("=" * 70)
print(df_sorted.to_string(index=False))
print("=" * 70)
# 冠军/垫底快速点评
top = df_sorted.iloc[0]
low = df_sorted.iloc[-1]
print(f"🏆 突破王:{top['球员']}  总次数={top['变向突破']}  场均={top['场均突破']}  成功率={top['成功率%']}%")
print(f"⚠️ 最少:  {low['球员']}  总次数={low['变向突破']}  场均={low['场均突破']}  成功率={low['成功率%']}%")
# ============ 4. 可视化 ============
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# 图1:总突破次数柱状图
axes[0].bar(df_sorted["球员"], df_sorted["变向突破"], color="#4C9BE8")
axes[0].set_title("变向突破总次数对比")
axes[0].set_ylabel("次数")
for i, v in enumerate(df_sorted["变向突破"]):
    axes[0].text(i, v + 0.5, str(v), ha="center")
# 图2:场均突破 vs 成功率(双轴)
ax2 = axes[1]
ax2.bar(df_sorted["球员"], df_sorted["场均突破"], color="#F2A93B", label="场均突破")
ax2.set_ylabel("场均突破次数", color="#F2A93B")
ax2.set_title("场均突破 & 成功率")
ax2b = ax2.twinx()
ax2b.plot(df_sorted["球员"], df_sorted["成功率%"], "o-", color="#E74C3C", label="成功率%")
ax2b.set_ylabel("成功率 %", color="#E74C3C")
# 图3:成功 vs 被抢断 堆叠
axes[2].bar(df_sorted["球员"], df_sorted["成功次数"], label="成功", color="#2ECC71")
axes[2].bar(df_sorted["球员"], df_sorted["被抢断"],
            bottom=df_sorted["成功次数"], label="被抢断", color="#E74C3C")
axes[2].set_title("突破结果构成")
axes[2].legend()
plt.tight_layout()
plt.savefig("breakthrough_compare.png", dpi=150)
plt.show()
print("✅ 图表已保存:breakthrough_compare.png")

运行效果示例

======================================================================
【变向突破次数对比表】
======================================================================
球员  出场次数  变向突破  成功次数  被抢断  场均突破  成功率%  场均成功
赵六        10        50        33      17      5.00     66.0      3.30
张三        10        42        30      12      4.20     71.4      3.00
李四        10        35        22      13      3.50     62.9      2.20
孙七         9        31        20      11      3.44     64.5      2.22
王五         8        28        18      10      3.50     64.3      2.25
======================================================================
🏆 突破王:赵六  总次数=50  场均=5.00  成功率=66.0%
⚠️ 最少:  王五  总次数=28  场均=3.50  成功率=64.3%

如何接你自己的数据

方式 A:CSV 文件

df = pd.read_csv("players.csv")

CSV 表头要求:球员,出场次数,变向突破,成功次数,被抢断

方式 B:Excel

df = pd.read_excel("players.xlsx", sheet_name="Sheet1")

方式 C:API / 爬虫 把返回的 JSON 转成 DataFrame 即可:

df = pd.DataFrame(json_data)

进阶扩展建议

需求 改动点
球队对比 球员 换成 球队,聚合 groupby("球队").sum()
位置分组(后卫/前锋) 加一列 位置,用 groupby 分别画图
时间趋势(月/赛季) 增加 日期 列,用折线图展示变化
对比两个赛季 读取两份 df,做 merge 后画并排柱状图
导出报告 df_sorted.to_excel("report.xlsx")

需要我把它改成球队版赛季趋势版,或者接入某个具体数据源(如 StatsBomb、Wyscout、中超官网)吗?告诉我你的数据长什么样,我直接帮你改。

抱歉,评论功能暂时关闭!