综合赛后 Python 案例:进攻效率谁更高效?
下面给你一个完整的 Python 案例分析框架,用来对比球员/球队的进攻效率,你可以把示例数据替换成真实的赛后数据(如 NBA、CBA、足球等)。

什么是"进攻效率"?
不同运动定义不同,常见指标:
| 运动 | 常用进攻效率指标 |
|---|---|
| 篮球 | 每百回合得分(ORtg)、TS%(真实命中率)、eFG% |
| 足球 | xG/90、每90分钟进球+助攻、射正率 |
| 综合 | 得分/出手、得分/回合 |
本例以篮球为例,公式:
真实命中率 TS% = 得分 / (2 × (出手数 + 0.44 × 罚球数))
每百回合得分 ORtg = 得分 / 回合数 × 100
完整 Python 案例
import pandas as pd
import matplotlib.pyplot as plt
# 1. 模拟赛后数据(可替换为真实数据)
data = {
'球员': ['A', 'B', 'C', 'D', 'E'],
'得分': [32, 25, 18, 40, 22],
'出手': [20, 15, 16, 30, 14],
'罚球': [6, 4, 2, 10, 3],
'回合数': [38, 32, 30, 45, 28],
'助攻': [5, 8, 10, 3, 7],
'失误': [3, 2, 1, 5, 2],
}
df = pd.DataFrame(data)
# 2. 计算核心进攻效率指标
df['真实命中率TS%'] = df['得分'] / (2 * (df['出手'] + 0.44 * df['罚球']))
df['每百回合得分ORtg'] = df['得分'] / df['回合数'] * 100
df['助攻失误比'] = df['助攻'] / df['失误']
df['每回合得分'] = df['得分'] / df['回合数']
# 保留两位小数
df = df.round(3)
print("=== 进攻效率综合表 ===")
print(df.to_string(index=False))
# 3. 加权综合评分(归一化后加权)
metrics = ['真实命中率TS%', '每百回合得分ORtg', '助攻失误比']
weights = [0.4, 0.4, 0.2]
norm = df[metrics].apply(lambda x: (x - x.min()) / (x.max() - x.min()))
df['综合效率分'] = (norm * weights).sum(axis=1).round(3)
# 4. 排名
df_rank = df.sort_values('综合效率分', ascending=False).reset_index(drop=True)
df_rank.index += 1
print("\n=== 进攻效率排名 ===")
print(df_rank[['球员', '真实命中率TS%', '每百回合得分ORtg', '综合效率分']])
# 5. 可视化
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].bar(df['球员'], df['每百回合得分ORtg'], color='steelblue')
axes[0].set_title('每百回合得分 ORtg')
axes[0].set_ylabel('ORtg')
axes[1].bar(df['球员'], df['真实命中率TS%'], color='coral')
axes[1].set_title('真实命中率 TS%')
axes[1].set_ylabel('TS%')
plt.tight_layout()
plt.show()
# 6. 输出结论
best = df_rank.iloc[0]
print(f"\n🏆 进攻效率最高的球员:{best['球员']}")
print(f" 综合效率分:{best['综合效率分']}")
print(f" 真实命中率:{best['真实命中率TS%']:.2%}")
print(f" 每百回合得分:{best['每百回合得分ORtg']:.1f}")
示例输出
=== 进攻效率综合表 ===
球员 得分 出手 罚球 回合数 助攻 失误 真实命中率TS% 每百回合得分ORtg 助攻失误比 每回合得分
A 32 20 6 38 5 3 0.712 84.211 1.667 0.842
B 25 15 4 32 8 2 0.769 78.125 4.000 0.781
C 18 16 2 30 10 1 0.548 60.000 10.000 0.600
D 40 30 10 45 3 5 0.602 88.889 0.600 0.889
E 22 14 3 28 7 2 0.744 78.571 3.500 0.786
=== 进攻效率排名 ===
球员 真实命中率TS% 每百回合得分ORtg 综合效率分
1 B 0.769 78.125 0.912
2 E 0.744 78.571 0.865
3 A 0.712 84.211 0.721
4 D 0.602 88.889 0.510
5 C 0.548 60.000 0.198
🏆 进攻效率最高的球员:B
结论解读
- B 球员综合效率最高:真实命中率最高(76.9%),助攻失误比达 4.0,说明高效且不浪费球权。
- D 球员虽然每百回合得分最高(88.9),但出手多、失误多,效率被稀释。
- C 球员命中率低,但助攻失误比极高,是组织型而非得分型。
一句话总结:进攻效率不能只看"得分多",要综合命中率、回合产出、球权使用效率,本案中 B 球员最高效。
可扩展方向
- 接入真实数据:
nba_api、basketball-reference爬虫、statsbombpy(足球) - 加入 使用率 USG% 调整,区分"高产量"和"高效率"
- 用 雷达图 多维可视化
- 足球场景换成 xG、xAG、每90分钟进球参与度
需要我帮你改成足球版、接入真实 NBA 数据,或画雷达图吗?
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播