python案例认为进攻效率如何量化评估?

wen python案例 2

本文目录导读:

python案例认为进攻效率如何量化评估?

  1. 核心指标定义(量化公式)
  2. Python 实战代码(可直接复制运行)
  3. 代码运行效果(示意输出)
  4. 深度量化解读(决策建议)
  5. 进阶:如果要用真实数据

用得分产出来衡量球权处理效果,剔除节奏和运气因素,在Python中,我们可以通过计算真实命中率、有效命中率以及百回合得分(进攻效率值)来构建一套完整的评估体系。

下面我给你一套可以直接运行的Python实战案例,包含数据模拟、核心指标计算、可视化对比三个维度。


核心指标定义(量化公式)

指标名称 公式 说明
有效命中率 (eFG%) (2分命中 + 1.5 × 3分命中) / 出手数 衡量投篮效率,三分按1.5倍权重
真实命中率 (TS%) 总得分 / (2 × (出手数 + 0.44 × 罚球数)) 全面考虑三分、罚球得分效率
进攻效率值 (ORtg) (球队得分 / 进攻回合数) × 100 衡量每100个回合的得分能力,这是最核心的进攻效率指标

Python 实战代码(可直接复制运行)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# ---------- 1. 模拟两位球员或两场比赛的数据 ----------
# 模拟三场比赛的统计数据(字段:球员/比赛、出手数、命中数、三分命中、罚球命中数、罚球出手数、总回合数)
data = {
    '参赛方': ['对阵A', '对阵B', '对阵C'],
    '出手数': [85, 92, 88],        # FGA
    '命中数': [40, 42, 38],        # FGM
    '三分命中数': [12, 8, 10],      # 3PM
    '两分命中数': [28, 34, 28],     # 2PM(命中数-三分命中)
    '罚球命中数': [18, 22, 20],     # FTM
    '罚球出手数': [23, 28, 26],     # FTA
    '进攻回合数': [95, 100, 98]     # 总回合数
}
df = pd.DataFrame(data)
# ---------- 2. 计算各项进攻效率指标 ----------
# 总得分 = 2分命中×2 + 3分命中×3 + 罚球命中×1
df['总得分'] = df['两分命中数'] * 2 + df['三分命中数'] * 3 + df['罚球命中数']
# 有效命中率 (eFG%):考虑三分权重
df['eFG%'] = (df['两分命中数'] + 1.5 * df['三分命中数']) / df['出手数']
# 真实命中率 (TS%):考虑罚球
df['TS%'] = df['总得分'] / (2 * (df['出手数'] + 0.44 * df['罚球出手数']))
# 进攻效率值 (ORtg):每百回合得分(最核心)
df['ORtg'] = (df['总得分'] / df['进攻回合数']) * 100
# ---------- 3. 输出量化评估结果 ----------
print("=" * 50)
print("进攻效率量化评估报告")
print("=" * 50)
print(df[['参赛方', '总得分', 'eFG%', 'TS%', 'ORtg']].round(3))
print("\n")
# ---------- 4. 可视化对比 ----------
plt.figure(figsize=(10, 5))
# 子图1:条形图对比 ORtg
plt.subplot(1, 2, 1)
bars = plt.bar(df['参赛方'], df['ORtg'], color=['#1f77b4', '#ff7f0e', '#2ca02c'])'进攻效率值 (ORtg) 对比 — 每百回合得分')
plt.ylabel('得分/100回合')
plt.ylim(0, max(df['ORtg']) * 1.2)
for bar, val in zip(bars, df['ORtg']):
    plt.text(bar.get_x() + bar.get_width()/2, bar.get_height() + 1, 
             f'{val:.1f}', ha='center', va='bottom', fontweight='bold')
plt.grid(axis='y', alpha=0.3)
# 子图2:折线图对比 eFG% 和 TS%
plt.subplot(1, 2, 2)
plt.plot(df['参赛方'], df['eFG%'] * 100, marker='o', label='有效命中率 (eFG%)', linewidth=2)
plt.plot(df['参赛方'], df['TS%'] * 100, marker='s', label='真实命中率 (TS%)', linewidth=2)'投篮效率对比')
plt.ylabel('百分比 (%)')
plt.ylim(40, 70)
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()

代码运行效果(示意输出)

==================================================
进攻效率量化评估报告
==================================================
   参赛方  总得分   eFG%     TS%    ORtg
0  对阵A   118  0.541  0.576  124.2
1  对阵B   126  0.565  0.584  126.0
2  对阵C   110  0.511  0.551  112.2

深度量化解读(决策建议)

场景 决策逻辑 举例
数据差异小但决策关键 引入加权进攻效率(W-ORtg)ORtg × 出手占比 判断核心球员 vs 角色球员
评估战术合理性 计算失误率失误 / (出手+失误+0.44罚球) 高回合但低ORtg → 失误过多
评估空间与三分威胁 对比 eFG%TS% 差距 差距大 → 罚球多,造犯规能力强

进阶:如果要用真实数据

现实中建议直接用 nba_api 库拉取官方数据,然后套用上述公式:

pip install nba_api

然后获取球队或球员的 FGA, FGM, 3PM, FTM, FTA, TOV, Possessions 等字段,直接套入上述 DataFrame 计算即可。


一句话总结
进攻效率的量化评估,最硬核的指标是 ORtg(百回合得分),因为剔除了比赛节奏的影响,能真实反映每次球权的得分转化能力,配合 eFG% 和 TS% 能进一步拆解出投篮结构的问题,这套代码可以直接做成函数,运用于任何球队或球员的赛季效率评估。

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