本文目录导读:

你问的“高球传中争顶成功率”是一个足球数据分析指标,通常指:边路/定位球高球传中后,进攻球员在空中对抗中赢得头球的比率,目前没有单一“开源项目”专门只统计这一个指标,但可以用以下几类开源工具/数据源组合实现:
数据源(开源/半开源)
| 来源 | 说明 | 是否开源 |
|---|---|---|
| StatsBomb Open Data | GitHub 上免费开放的部分赛事事件数据,含 Pass、Duel、Aerial 等事件类型,可计算传中+争顶 |
✅ 开源 |
| Wyscout Open Data | 公开的赛事事件数据(含传中、空中对抗) | ✅ 部分开放 |
| Football-Data.co.uk | 主要是比分/赔率,无事件级数据 | ❌ 不含争顶 |
| FBref / Opta | 有 aerial duels won 统计,但抓取受限于 ToS | ⚠️ 非正式开源 |
| SofaScore API(非官方) | 有 aerial duels 统计 | ⚠️ 非官方 |
开源分析项目/库
- socceraction(GitHub: ML-KULeuven/socceraction)— 把 StatsBomb/Wyscout 事件转成 SPADL 格式,可筛选传中+空中对抗
- mplsoccer — 可视化传中落点、争顶位置
- statsbombpy — 直接拉取 StatsBomb 开放数据
- FBref scraper(如
soccerdata库)— 抓取球队/球员 aerial wins 数据 - kloppy — 统一解析多家追踪/事件数据
计算逻辑示例
高球传中争顶成功率 =
传中后发生空中对抗且进攻方赢得的次数
/ 传中后发生空中对抗的总次数
用 StatsBomb 数据实现伪代码:
import statsbombpy as sb events = sb.events(match_id=...) crosses = events[events.pass_type == "Cross"] # 找传中后紧接的 Aerial Won / Aerial Lost 事件 aerial = events[events.type == "Duel" & events.duel_type == "Aerial"] # 按 possession 关联传中与后续争顶 success_rate = won / (won + lost)
现成可参考的项目
- ML-KULeuven/socceraction — 事件数据标准化
- Torvaney/ggsoccer — R 语言足球可视化
- fbref-scraper / soccerdata — 抓取 aerial 数据
- StatsBomb Open Data 示例 notebook(官方 GitHub)— 有传中/争顶分析 demo
没有单一开源项目专门统计“高球传中争顶成功率”,但可以用 StatsBomb Open Data + socceraction/statsbombpy 自己算,或用 soccerdata 抓 FBref 的 aerial duels 数据做近似统计,如果你需要,我可以帮你写一个完整的计算脚本(基于 StatsBomb 开放数据)。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播