本文目录导读:

- 场景 1:手头已有两队汇总数据(最直接)
- 场景 2:用一个数组(Python)直接改数据
- 场景 3:读取 CSV 文件(处理真实数据)
- 场景 4:只用一行 Shell(grep+awk 实时提取)
- 备注:真实场景判断的隐藏点
要统计“哪队传球成功率更高”,通常分为宏观层面(全队总传球+成功传球)和微观层面(首发/主力球员平均),以下是几个常用且可直接运行的脚本模板,按使用场景分类。
场景 1:手头已有两队汇总数据(最直接)
如果已从网站(如懂球帝、SofaScore)查到两队的总传球数和成功数,用一行命令即可对比:
#!/bin/bash
# team_stats.sh
# 格式:队名 总传球 成功传球
read -p "输入主队数据 (格式: 队名 总传球 成功): " team1
read -p "输入客队数据 (格式: 队名 总传球 成功): " team2
# 使用 awk 直接计算并比较(防止浮点 shell 运算)
echo "$team1
$team2" | awk '{
rate = $3 / $2 * 100
if (NR==1) {t1=$1; r1=rate; total1=$2; comp1=$3}
else {t2=$1; r2=rate; total2=$2; comp2=$3}
}
END {
printf "\n=== 传球成功率对比 ===\n"
printf "%s: %d / %d = %.1f%%\n", t1, comp1, total1, r1
printf "%s: %d / %d = %.1f%%\n", t2, comp2, total2, r2
if (r1 > r2) printf "\n>>> 主队 %s 传球成功率更高\n", t1
else if (r2 > r1) printf "\n>>> 客队 %s 传球成功率更高\n", t2
else printf "\n>>> 双方传球成功率持平\n"
}'
运行示例:
输入主队数据 (格式: 队名 总传球 成功): 阿森纳 520 470 输入客队数据 (格式: 队名 总传球 成功): 切尔西 380 330
场景 2:用一个数组(Python)直接改数据
如果你有一份结构化的小样本数据(如两队首发名单及个人传球数),用 Python 最清晰:
# passing_rates.py
# 数据示例: 每个球员 [队名, 姓名, 传球总数, 成功传球]
players_data = [
["Team_A", "门将", 30, 25],
["Team_A", "后卫1", 45, 40],
["Team_A", "中场1", 60, 52],
["Team_A", "前锋1", 20, 15],
["Team_B", "门将", 25, 20],
["Team_B", "后卫1", 50, 45],
["Team_B", "中场1", 55, 50],
["Team_B", "前锋1", 15, 10],
]
# 按球队汇总
team_stats = {}
for team, name, attempts, completed in players_data:
if team not in team_stats:
team_stats[team] = {"attempts": 0, "completed": 0}
team_stats[team]["attempts"] += attempts
team_stats[team]["completed"] += completed
# 输出详细结果
print("队名 总传球 成功传球 成功率")
results = {}
for team, stats in team_stats.items():
rate = stats["completed"] / stats["attempts"] * 100
results[team] = rate
print(f"{team:<10} {stats['attempts']:<6} {stats['completed']:<6} {rate:.1f}%")
# 比较判断哪队高
print("\n结论:", "Team_A 更高" if results["Team_A"] > results["Team_B"]
else ("Team_B 更高" if results["Team_B"] > results["Team_A"] else "两队相同"))
场景 3:读取 CSV 文件(处理真实数据)
如果比赛数据放在 CSV 表格中(如 passers.csv),统计更自动化:
import csv
def compare_passing_success(csv_filename):
team_totals = {}
with open(csv_filename, mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file) # 假设列名为 team, attempts, completed
for row in reader:
team = row['team']
att = int(row['attempts'])
comp = int(row['completed'])
if team not in team_totals:
team_totals[team] = [0, 0]
team_totals[team][0] += att
team_totals[team][1] += comp
for team, (att, comp) in team_totals.items():
rate = (comp / att) * 100 if att else 0
team_totals[team].append(rate)
print(f"{team}: {comp}/{att} = {rate:.2f}%")
# 找出最高
max_team = max(team_totals.keys(), key=lambda x: team_totals[x][2])
print(f"\n>>> {max_team} 的传球成功率最高")
# 假如 CSV 如下
# team,attempts,completed
# Arsenal,500,450
# Chelsea,400,360
# compare_passing_success('passer_data.csv')
场景 4:只用一行 Shell(grep+awk 实时提取)
如果你从文本文件中抓取(如球员详细跑位表):
# 假设文本某行格式为: 主队:传球400成功350;客队:传球330成功300
echo "主队:传球400成功350;客队:传球330成功300" | awk -F'[:;]' '{
for(i=1;i<=NF;i++){
if($i ~ /传球/){
split($i, a, /传球|成功/);
team_name = (a[1]=="主队" ? "主队" : "客队");
att = a[2]; comp = a[3];
rate = comp/att*100;
print team_name, "传球成功率 = " rate "%"
}
}
}'
备注:真实场景判断的隐藏点
- 只统计进攻的传球:通常看比赛报告“准确传球”是指全场总体,包含后场倒脚,若两队风格差异巨大(A队只在后场倒脚,B队大量向前传),单纯成功率不能说明优劣,但计算方式一样。
- 权重处理:如果对比首发主力每人权重一致,脚本合适,如果中后场球员传球基数极大,会导致数据失真——可以加权重因子
role_weight(如门将权重0.5)。 - 阈值设置:为了避免1次传球全成功从而拉高胜率,脚本中最好加
if attempts >= 50的条件才参与统计,这是足球分析界默认的基线。
如需直接对 ChatGPT 里引用的具体文本数据 计算(例如你提供的文本),直接把那段比赛统计贴出来,我可以修改脚本中的数组或者直接用 awk 帮你跑出结果。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播