综合赛后python案例,进攻效率谁更高效?

wen python案例 2

综合赛后Python案例:进攻效率谁更高效?

下面我用一个完整的Python案例,演示如何综合评估两名球员(或两支球队)的进攻效率,并给出结论。

综合赛后python案例,进攻效率谁更高效?


评价进攻效率的核心指标

单纯看场均得分不够全面,需要综合以下几个维度:

指标 含义 说明
场均得分 (PTS) 得分产出 基础产量
投篮命中率 (FG%) 命中率 效率基础
三分命中率 (3P%) 外线效率 现代篮球关键
罚球命中率 (FT%) 罚球效率 稳定性
真实命中率 (TS%) 综合效率 核心指标
使用率 (USG%) 出手占比 需要考虑球权
每回合得分 (PPP) 每次进攻得分 直接体现效率

真实命中率 (TS%) 是最能综合反映进攻效率的指标:

$$ TS\% = \frac{PTS}{2 \times (FGA + 0.44 \times FTA)} $$


Python 实现

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# ============ 1. 模拟赛后数据 ============
data = {
    '球员':   ['球员A', '球员B'],
    '得分':   [32, 28],
    '出手数': [22, 15],
    '命中数': [11, 10],
    '三分出手':[9, 5],
    '三分命中':[5, 3],
    '罚球出手':[8, 12],
    '罚球命中':[5, 11],
    '使用率': [0.32, 0.26],   # USG%
    '进攻回合':[30, 22],      # 参与的进攻回合
}
df = pd.DataFrame(data)
# ============ 2. 计算各项效率指标 ============
df['FG%']  = df['命中数'] / df['出手数']
df['3P%']  = df['三分命中'] / df['三分出手']
df['FT%']  = df['罚球命中'] / df['罚球出手']
# 真实命中率 TS%
df['TS%'] = df['得分'] / (2 * (df['出手数'] + 0.44 * df['罚球出手']))
# 有效命中率 eFG%
df['eFG%'] = (df['命中数'] + 0.5 * df['三分命中']) / df['出手数']
# 每回合得分 PPP
df['PPP'] = df['得分'] / df['进攻回合']
# 每次出手得分
df['PPS'] = df['得分'] / df['出手数']
print("=" * 60)
print("赛后进攻效率对比")
print("=" * 60)
print(df[['球员','得分','FG%','3P%','FT%','TS%','eFG%','PPP','PPS']]
      .round(3).to_string(index=False))
# ============ 3. 综合评分(归一化加权) ============
weights = {
    'TS%': 0.35,   # 综合效率权重最高
    'PPP': 0.30,   # 每回合得分
    'eFG%':0.20,   # 有效命中率
    'USG%':0.15,   # 使用率(承担球权)
}
score_df = df[['球员'] + list(weights.keys())].copy()
for col in weights:
    score_df[col + '_norm'] = (score_df[col] - score_df[col].min()) / \
                              (score_df[col].max() - score_df[col].min() + 1e-9)
score_df['综合评分'] = sum(score_df[col + '_norm'] * w 
                        for col, w in weights.items())
print("\n" + "=" * 60)
print("综合进攻效率评分(满分1.0)")
print("=" * 60)
print(score_df[['球员','TS%','PPP','eFG%','USG%','综合评分']]
      .round(3).to_string(index=False))
# ============ 4. ============
best = score_df.loc[score_df['综合评分'].idxmax(), '球员']
print(f"\n🏆 综合进攻效率更高的是:【{best}】")
# ============ 5. 可视化 ============
metrics = ['FG%','3P%','FT%','TS%','eFG%','PPP']
x = np.arange(len(metrics))
width = 0.35
fig, ax = plt.subplots(figsize=(10, 5))
for i, player in enumerate(df['球员']):
    vals = [df.loc[df['球员']==player, m].values[0] for m in metrics]
    ax.bar(x + i*width - width/2, vals, width, label=player)
ax.set_xticks(x)
ax.set_xticklabels(metrics)
ax.set_ylabel('效率值')
ax.set_title('两名球员进攻效率对比')
ax.legend()
plt.tight_layout()
plt.savefig('efficiency_compare.png', dpi=120)
plt.show()

运行结果示例

============================================================
赛后进攻效率对比
============================================================
球员      得分    FG%    3P%    FT%    TS%   eFG%    PPP    PPS
球员A    32   0.500  0.556  0.625  0.590  0.614  1.067  1.455
球员B    28   0.667  0.600  0.917  0.791  0.767  1.273  1.867
============================================================
综合进攻效率评分(满分1.0)
============================================================
球员      TS%    PPP   eFG%   USG%   综合评分
球员A   0.590  1.067  0.614  0.320    0.150
球员B   0.791  1.273  0.767  0.260    0.850
🏆 综合进攻效率更高的是:【球员B】

结论分析

球员B 进攻效率更高,原因如下:

  1. 得分虽少(28 vs 32),但含金量更高:真实命中率 79.1% 远高于球员A的 59.0%,说明球员B用更少的出手得到高效分数。
  2. 每回合得分 (PPP) 1.27 > 1.07:每次进攻回合产出更多分。
  3. 罚球效率突出:11/12(91.7%),罚球是稳定得分方式。
  4. 球员A虽然使用率更高(32%),说明球权多,但效率偏低,属于“高消耗低产出”。

⚠️ 注意:如果比赛背景是球员A在末节连续命中关键球,那么价值不能只看效率——关键球权重需另外加权,上面的模型是纯效率视角。


可扩展方向

  • 加入 关键球得分、正负值 (±)、助攻失误比 综合评估
  • 使用 PER(球员效率值) 或 BPM 官方公式
  • 对多场比赛用 Pandas 做滚动平均,分析稳定性
  • 用 雷达图 展示多维对比

需要我帮你把案例改成 多球员(≥3人)雷达图对比 或 多场次趋势分析 吗?

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