python案例看好的球队擅长什么打法?

wen python案例 1

用Python分析球队擅长什么打法

下面给你一个完整的Python案例框架,通过比赛数据分析一支球队的战术风格,核心思路:把"打法"拆成可量化的指标。

python案例看好的球队擅长什么打法?

把"打法"拆成数据指标

打法类型 关键指标
传控流 控球率、传球次数、传球成功率
防守反击 控球率低、反击进球、射正转化率
高位逼抢 前场抢断、对手失误、压迫次数
边路进攻 传中次数、边路突破、角球
长传冲吊 长传比例、争顶成功率、二点球

完整代码示例

import pandas as pd
import numpy as np
# ---------- 1. 模拟数据(实际可从API/爬虫获取) ----------
np.random.seed(42)
data = {
    "match": [f"第{i}轮" for i in range(1, 11)],
    "possession": [62, 58, 65, 55, 70, 60, 63, 57, 68, 61],   # 控球率%
    "passes": [580, 520, 610, 480, 650, 560, 590, 500, 620, 570],  # 传球数
    "pass_acc": [89, 87, 91, 85, 92, 88, 90, 86, 91, 89],      # 传球成功率%
    "long_ball_pct": [12, 15, 10, 18, 9, 13, 11, 16, 10, 14],  # 长传比例%
    "crosses": [18, 22, 15, 25, 12, 20, 16, 24, 14, 19],       # 传中次数
    "high_press": [8, 10, 6, 12, 5, 9, 7, 11, 6, 8],           # 前场抢断
    "counter_goals": [0, 1, 0, 2, 0, 1, 0, 2, 0, 1],           # 反击进球
    "goals": [2, 3, 2, 2, 3, 2, 2, 2, 3, 2],
    "shots_on_target": [6, 8, 7, 5, 9, 7, 8, 6, 8, 7],
}
df = pd.DataFrame(data)
# ---------- 2. 计算球队平均风格画像 ----------
profile = {
    "控球率": df["possession"].mean(),
    "场均传球": df["passes"].mean(),
    "传球成功率": df["pass_acc"].mean(),
    "长传比例": df["long_ball_pct"].mean(),
    "场均传中": df["crosses"].mean(),
    "场均前场抢断": df["high_press"].mean(),
    "场均反击进球": df["counter_goals"].mean(),
    "射正转化率": (df["goals"].sum() / df["shots_on_target"].sum()) * 100,
}
print("==== 球队战术画像 ====")
for k, v in profile.items():
    print(f"{k}: {v:.1f}")
# ---------- 3. 打分:判断擅长哪种打法 ----------
def style_score(p):
    scores = {}
    # 传控流:高控球 + 高传球 + 高成功率
    scores["传控流"] = (p["控球率"]/70*40 + p["场均传球"]/650*35 + p["传球成功率"]/92*25)
    # 防守反击:低控球 + 高转化 + 有反击进球
    scores["防守反击"] = ((100-p["控球率"])/40*40 + p["射正转化率"]/40*40 + p["场均反击进球"]/2*20)
    # 高位逼抢:高前场抢断
    scores["高位逼抢"] = p["场均前场抢断"]/10*70 + p["控球率"]/70*30
    # 边路进攻:高传中
    scores["边路进攻"] = p["场均传中"]/25*70 + p["控球率"]/70*30
    # 长传冲吊:高长传比例
    scores["长传冲吊"] = p["长传比例"]/18*80 + (100-p["传球成功率"])/15*20
    return scores
scores = style_score(profile)
ranked = sorted(scores.items(), key=lambda x: x[1], reverse=True)
print("\n==== 打法适配度排名 ====")
for style, score in ranked:
    bar = "█" * int(score/5)
    print(f"{style:6s} {score:5.1f}  {bar}")
print(f"\n👉 该类球队最擅长【{ranked[0][0]}】打法")

输出示例

==== 球队战术画像 ====
控球率: 61.9
场均传球: 568.0
传球成功率: 88.8
长传比例: 12.8
场均传中: 18.5
场均前场抢断: 8.2
场均反击进球: 0.7
射正转化率: 36.5
==== 打法适配度排名 ====
传控流    86.3  █████████████████
边路进攻  78.1  ███████████████
高位逼抢  74.5  ██████████████
防守反击  61.2  ████████████
长传冲吊  45.0  █████████
👉 该类球队最擅长【传控流】打法

进阶建议

  1. 数据来源:用 requests + BeautifulSoup 爬取懂球帝/WhoScored,或用 football-data.org 免费API
  2. 可视化:用 matplotlib 画雷达图,一眼看出战术偏向
  3. 聚类分析:多支球队一起用 sklearn 的 KMeans,自动分出"传控型""防反型"球队群
  4. 时间维度:按赛季/主客场分组对比,看打法是否稳定

需要我帮你写雷达图可视化或接真实API爬数据的部分吗?

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

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝