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

wen python案例 2

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

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

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


什么是"进攻效率"?

不同运动定义不同,常见指标:

运动 常用进攻效率指标
篮球 每百回合得分(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 球员最高效


可扩展方向

  1. 接入真实数据:nba_apibasketball-reference 爬虫、statsbombpy(足球)
  2. 加入 使用率 USG% 调整,区分"高产量"和"高效率"
  3. 雷达图 多维可视化
  4. 足球场景换成 xG、xAG、每90分钟进球参与度

需要我帮你改成足球版接入真实 NBA 数据,或画雷达图吗?

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