python案例统计单刀球成功率是多少?

wen python案例 2

足球单刀球成功率统计分析案例

下面我用 Python 做一个单刀球成功率统计的完整案例,包括数据模拟、统计分析和可视化。

python案例统计单刀球成功率是多少?

什么是单刀球成功率

单刀球成功率 = 单刀球进球数 / 单刀球总次数 × 100%

完整代码案例

模拟数据(可替换为真实数据)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 模拟 200 次单刀球记录
np.random.seed(42)
players = ['梅西', 'C罗', '姆巴佩', '哈兰德', '凯恩', '萨拉赫', '本泽马', '莱万']
data = {
    '球员': np.random.choice(players, 200),
    '是否进球': np.random.choice([1, 0], 200, p=[0.42, 0.58]),  # 真实单刀成功率约40%
    '射门区域': np.random.choice(['左路', '中路', '右路'], 200),
    '比赛时间': np.random.choice(['上半场', '下半场'], 200),
}
df = pd.DataFrame(data)
print(df.head())

核心统计:单刀球成功率

# 总体单刀球成功率
total = len(df)
goals = df['是否进球'].sum()
success_rate = goals / total * 100
print(f"单刀球总次数: {total}")
print(f"单刀球进球数: {goals}")
print(f"单刀球总成功率: {success_rate:.2f}%")

输出示例:

单刀球总次数: 200
单刀球进球数: 88
单刀球总成功率: 44.00%

分球员统计成功率

# 按球员统计
player_stats = df.groupby('球员')['是否进球'].agg(['count', 'sum'])
player_stats.columns = ['单刀次数', '进球数']
player_stats['成功率(%)'] = (player_stats['进球数'] / player_stats['单刀次数'] * 100).round(2)
player_stats = player_stats.sort_values('成功率(%)', ascending=False)
print(player_stats)

输出示例:

      单刀次数  进球数  成功率(%)
球员
姆巴佩      28    15    53.57
哈兰德      25    13    52.00
梅西       26    12    46.15
凯恩       24    11    45.83
C罗        22    10    45.45
萨拉赫      27    12    44.44
本泽马      24     9    37.50
莱万       24     6    25.00

分区域统计成功率

# 按射门区域统计
zone_stats = df.groupby('射门区域')['是否进球'].agg(['count', 'sum'])
zone_stats.columns = ['单刀次数', '进球数']
zone_stats['成功率(%)'] = (zone_stats['进球数'] / zone_stats['单刀次数'] * 100).round(2)
print(zone_stats)

可视化分析

fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# 图1:各球员单刀成功率
player_stats['成功率(%)'].plot(kind='bar', ax=axes[0], color='steelblue')
axes[0].set_title('各球员单刀球成功率')
axes[0].set_ylabel('成功率(%)')
axes[0].axhline(y=success_rate, color='red', linestyle='--', label=f'平均值 {success_rate:.1f}%')
axes[0].legend()
axes[0].tick_params(axis='x', rotation=45)
# 图2:不同区域成功率
zone_stats['成功率(%)'].plot(kind='bar', ax=axes[1], color='coral')
axes[1].set_title('不同射门区域单刀成功率')
axes[1].set_ylabel('成功率(%)')
plt.tight_layout()
plt.savefig('single_shot_analysis.png', dpi=100)
plt.show()

进阶:使用置信区间评估稳定性

from scipy import stats
def wilson_ci(successes, trials, confidence=0.95):
    """Wilson 置信区间,适合小样本比例估计"""
    p = successes / trials
    z = stats.norm.ppf(1 - (1 - confidence) / 2)
    denominator = 1 + z**2 / trials
    center = (p + z**2 / (2*trials)) / denominator
    margin = z * np.sqrt(p*(1-p)/trials + z**2/(4*trials**2)) / denominator
    return (center - margin) * 100, (center + margin) * 100
print("球员单刀成功率及 95% 置信区间:")
for player, row in player_stats.iterrows():
    low, high = wilson_ci(row['进球数'], row['单刀次数'])
    print(f"{player}: {row['成功率(%)']:.1f}%  [{low:.1f}%, {high:.1f}%]")

真实数据分析建议

如果你有真实数据(如 Opta、FBref 数据),可替换 data 字典,真实场景中需注意:

关键点 说明
定义单刀球 需明确标准(如"1v1门将、无防守球员干扰")
样本量 至少 30 次以上才有统计意义
分母 只算"形成射门"还是"创造单刀机会"需统一
对手强度 强队 vs 弱队的单刀成功率差异大
赛季对比 分赛季统计更能反映状态

真实足球数据参考

根据公开统计(不同口径差异较大):

  • 职业联赛平均单刀成功率:约 30%~40%
  • 顶级前锋单刀成功率:可达 45%~55%
  • 门将扑出单刀的成功率:约 50%~60%

扩展思路

  1. 加入 xG 模型:用 Expected Goals 衡量单刀质量
  2. 对比分析:单刀 vs 普通射门 vs 点球成功率
  3. 时间序列:球员单刀成功率随赛季变化趋势
  4. 机器学习:用逻辑回归预测单刀是否进球

需要我针对某个具体球员/联赛的真实数据做分析,或者补充爬取 FBref 数据的代码吗?

友情链接

欧易欧易欧易欧易欧易欧易欧易欧易直播帮篮球控NBA帮比赛虎聊足球

友情链接

欧易欧易欧易欧易欧易欧易欧易欧易

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

友情链接攻略窝 · 礼包窝 · 配置窝 · 换算窝 · 算法窝 · 查文窝 · 手册窝 · 问答窝 · 全文搜 · 手册库
相关站点礼包窝 · 查文窝