看起来像条数据向标题:凯塞多先发时切尔西英超胜率52%,不先发仅25%。这个结论有传播价值,但需要一点背景和验证。

要点

如果你手头有比赛清单,我可以帮你跑一遍。没有数据也行,给你一个可复用的小脚本,你把CSV塞进去就出结果:

Python(输入需要一行一场比赛)

# file: calc_winrate.py
import csv, sys
from collections import Counter, defaultdict
def rate(c):
total = c['W'] + c['D'] + c['L']
return 0 if total==0 else c['W']/total
def main(path):
pools = {'all': Counter(), 'start': Counter(), 'nostart': Counter()}
strat = defaultdict(Counter) # e.g. ('start','home') -> counter
with open(path, newline='', encoding='utf-8') as f:
for r in csv.DictReader(f):
res = r['result'].strip().upper()[0] # W/D/L
started = 'start' if r['caicedo_started'].strip()=='1' else 'nostart'
pools['all'][res]+=1; pools[started][res]+=1
home = 'home' if r.get('home','').strip()=='1' else 'away'
strat[(started, home)][res]+=1
tier = None
if r.get('opp_rank'):
try:
rank = int(r['opp_rank'])
tier = 'top6' if rank<=6 else '7_12' if rank<=12 else '13_20'
except: pass
if tier: strat[(started, tier)][res]+=1
print('Overall win rate:')
for k in ['start','nostart']:
print(f' {k}: {rate(pools[k]):.3f} (W/D/L={pools[k]["W"]}/{pools[k]["D"]}/{pools[k]["L"]})')
print('\nBy home/away:')
for k in [('start','home'),('start','away'),('nostart','home'),('nostart','away')]:
c = strat[k]; total = c['W']+c['D']+c['L']
print(f' {k}: {rate(c):.3f} n={total}')
print('\nBy opponent tier (if opp_rank provided):')
for tier in ['top6','7_12','13_20']:
for s in ['start','nostart']:
c = strat[(s,tier)]
if sum(c.values()):
print(f' {s}-{tier}: {rate(c):.3f} n={sum(c.values())}')
if __name__ == '__main__':
if len(sys.argv)<2:
print('Usage: python calc_winrate.py matches.csv'); sys.exit(1)
main(sys.argv[1])
需要我:
