本文目录导读:

用得分产出来衡量球权处理效果,剔除节奏和运气因素,在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% 能进一步拆解出投篮结构的问题,这套代码可以直接做成函数,运用于任何球队或球员的赛季效率评估。