Python案例:变向突破次数对比分析
下面用篮球运动作为场景,演示"变向突破次数对比"的完整 Python 案例,涵盖数据生成、统计、可视化与对比结论。

案例背景
假设我们要对比 3 名球员 在 5 场比赛 中的变向突破次数,分析谁更擅长突破、稳定性如何。
完整代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 解决中文显示
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# ========== 1. 构造数据 ==========
np.random.seed(42)
players = ['球员A', '球员B', '球员C']
games = [f'第{i}场' for i in range(1, 6)]
# 模拟 5 场比赛的变向突破次数
data = {
'球员A': [8, 10, 7, 12, 9],
'球员B': [5, 6, 8, 4, 7],
'球员C': [11, 13, 9, 14, 12],
}
df = pd.DataFrame(data, index=games)
print("===== 各场变向突破次数 =====")
print(df)
# ========== 2. 统计对比 ==========
summary = pd.DataFrame({
'总次数': df.sum(),
'场均次数': df.mean().round(2),
'最高': df.max(),
'最低': df.min(),
'标准差(稳定性)': df.std().round(2),
})
print("\n===== 统计对比 =====")
print(summary)
# ========== 3. 可视化对比 ==========
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
# 图1:折线图 —— 各场趋势
df.plot(ax=axes[0], marker='o')
axes[0].set_title('各场变向突破次数趋势')
axes[0].set_ylabel('次数')
axes[0].grid(alpha=0.3)
# 图2:柱状图 —— 总次数对比
summary['总次数'].plot(kind='bar', ax=axes[1], color=['#4C72B0','#DD8452','#55A868'])
axes[1].set_title('总变向突破次数对比')
axes[1].set_ylabel('次数')
axes[1].tick_params(axis='x', rotation=0)
# 图3:箱线图 —— 稳定性对比
df.boxplot(ax=axes[2])
axes[2].set_title('变向突破次数分布(稳定性)')
axes[2].set_ylabel('次数')
plt.tight_layout()
plt.savefig('breakthrough_compare.png', dpi=120)
plt.show()
# ========== 4. 自动结论 ==========
best_total = summary['总次数'].idxmax()
best_avg = summary['场均次数'].idxmax()
most_stable = summary['标准差(稳定性)'].idxmin()
print("\n===== 对比结论 =====")
print(f"突破总次数最多:{best_total}({summary.loc[best_total,'总次数']} 次)")
print(f"场均突破最高:{best_avg}({summary.loc[best_avg,'场均次数']} 次/场)")
print(f"发挥最稳定(标准差最小):{most_stable}(标准差 {summary.loc[most_stable,'标准差(稳定性)']})")
运行结果示例
统计对比表:
| 指标 | 球员A | 球员B | 球员C |
|---|---|---|---|
| 总次数 | 46 | 30 | 59 |
| 场均次数 | 20 | 00 | 80 |
| 最高 | 12 | 8 | 14 |
| 最低 | 7 | 4 | 9 |
| 标准差 | 92 | 58 | 92 |
对比结论:
- 突破总次数最多:球员C(59 次)
- 场均突破最高:球员C(11.8 次/场)
- 发挥最稳定:球员B(标准差 1.58,虽次数少但波动小)
三张图的解读
| 图类型 | 作用 | |
|---|---|---|
| 折线图 | 看每场趋势 | C 每场都最高,A 稳中有升,B 波动大 |
| 柱状图 | 看累计总量 | C > A > B,差距明显 |
| 箱线图 | 看稳定性 | B 箱子最短最稳;A、C 波动相近但 C 上限更高 |
扩展方向(可继续优化)
- 多维度对比:加入"变向成功率""造成犯规次数",用雷达图综合评分
- 对阵不同防守强度:按对手分档做分组对比(
df.groupby) - 显著性检验:用
scipy.stats.ttest_ind判断 A、C 差异是否显著 - 动态可视化:用
plotly做交互式对比
需要哪个方向的扩展代码,我可以继续补上 👍