本文目录导读:

我来为你设计一个有趣的Python案例,统计门将扑救次数来判断谁更"忙"!
基础版(适合入门)
# 门将扑救数据
goalkeepers = {
'诺伊尔': 5,
'特尔施特根': 8,
'库尔图瓦': 6,
'阿利松': 9,
'埃德森': 3
}
# 找出最忙的门将
busiest_goalkeeper = max(goalkeepers, key=goalkeepers.get)
max_saves = goalkeepers[busiest_goalkeeper]
print("=== 门将扑救统计 ===")
for name, saves in goalkeepers.items():
print(f"{name}: {saves}次扑救")
print(f"\n🏆 最忙的门将是: {busiest_goalkeeper}")
print(f"共完成 {max_saves} 次扑救")
进阶版(包含更多统计)
import pandas as pd
import matplotlib.pyplot as plt
# 模拟一个月的数据
import random
random.seed(42)
# 创建数据
data = {
'门将': ['诺伊尔', '特尔施特根', '库尔图瓦', '阿利松', '埃德森'] * 30,
'比赛日': [f'第{day}天' for day in range(1, 31) for _ in range(5)],
'扑救次数': [random.randint(0, 8) for _ in range(150)]
}
# 转换为DataFrame
df = pd.DataFrame(data)
# 按门将分组统计
stats = df.groupby('门将').agg({
'扑救次数': ['sum', 'mean', 'max', 'min', 'std']
}).round(2)
stats.columns = ['总扑救', '场均扑救', '单场最高', '单场最低', '标准差']
stats = stats.sort_values('总扑救', ascending=False)
print("=== 门将扑救统计报告 ===\n")
print(stats)
# 找出最忙门将
busiest = stats.index[0]
print(f"\n🏆 最忙的门将: {busiest}")
print(f"📊 总扑救: {stats.iloc[0]['总扑救']}次")
print(f"📈 场均扑救: {stats.iloc[0]['场均扑救']}次")
可视化版(最直观)
import matplotlib.pyplot as plt
import numpy as np
# 数据
goalkeepers = ['诺伊尔', '特尔施特根', '库尔图瓦', '阿利松', '埃德森']
saves = [45, 62, 51, 78, 35]
games_played = [30, 28, 29, 30, 27]
# 计算场均
avg_saves = [s/g for s, g in zip(saves, games_played)]
# 创建图表
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
# 1. 总扑救柱状图
axes[0, 0].bar(goalkeepers, saves, color=['blue', 'green', 'red', 'orange', 'purple'])
axes[0, 0].set_title('总扑救次数')
axes[0, 0].set_ylabel('扑救次数')
axes[0, 0].grid(True, alpha=0.3)
# 2. 场均扑救折线图
axes[0, 1].plot(goalkeepers, avg_saves, marker='o', linewidth=2, markersize=8)
axes[0, 1].set_title('场均扑救次数')
axes[0, 1].set_ylabel('扑救次数/场')
axes[0, 1].grid(True, alpha=0.3)
# 3. 扑救效率分析(模拟数据)
efficiency = np.random.randint(60, 95, 5)
axes[1, 0].pie(efficiency, labels=goalkeepers, autopct='%1.1f%%')
axes[1, 0].set_title('扑救成功率占比')
# 4. 数据表格
column_labels = ['门将', '总扑救', '场均']
table_data = list(zip(goalkeepers, saves, [f'{x:.2f}' for x in avg_saves]))
axes[1, 1].axis('off')
table = axes[1, 1].table(cellText=table_data, colLabels=column_labels, loc='center')
table.auto_set_font_size(False)
table.set_fontsize(10)
plt.tight_layout()
plt.show()
#
busiest = goalkeepers[saves.index(max(saves))]
print(f"🏆 最忙的门将是: {busiest},共扑救 {max(saves)} 次!")
模拟比赛数据(最实用)
class Goalkeeper:
def __init__(self, name):
self.name = name
self.saves = 0
self.games = 0
self.shots_faced = 0
def record_game(self, shots_faced, saves):
"""记录一场比赛数据"""
self.saves += saves
self.shots_faced += shots_faced
self.games += 1
def save_rate(self):
"""扑救成功率"""
return self.saves / self.shots_faced * 100 if self.shots_faced > 0 else 0
# 模拟赛季数据
import random
def simulate_season():
goalkeepers = {
'诺伊尔': Goalkeeper('诺伊尔'),
'特尔施特根': Goalkeeper('特尔施特根'),
'库尔图瓦': Goalkeeper('库尔图瓦')
}
# 模拟34轮联赛
for round_num in range(1, 35):
for gk in goalkeepers.values():
shots = random.randint(3, 15) # 对手射门次数
saves = random.randint(0, shots) # 扑救次数
gk.record_game(shots, saves)
return goalkeepers
# 运行模拟
results = simulate_season()
print("=== 赛季扑救统计 ===")
print(f"{'门将':<15} {'出场':<5} {'扑救':<5} {'扑救率':<10}")
print("-" * 40)
for gk in results.values():
rate = gk.save_rate()
print(f"{gk.name:<15} {gk.games:<5} {gk.saves:<5} {rate:.1f}%")
# 找出最忙门将
busiest = max(results.values(), key=lambda gk: gk.saves)
print(f"\n🏆 本赛季最忙门将: {busiest.name}")
print(f"共完成 {busiest.saves} 次扑救")
运行效果示例
=== 门将扑救统计 ===
诺伊尔: 5次扑救
特尔施特根: 8次扑救
库尔图瓦: 6次扑救
阿利松: 9次扑救
埃德森: 3次扑救
🏆 最忙的门将是: 阿利松
共完成 9 次扑救
扩展建议
- 添加更多数据维度:扑救难度、关键扑救、点球扑救等
- 实现实时统计:爬取比赛数据或接入API
- 机器学习预测:预测门将未来表现
- 可视化仪表盘:制作实时更新的数据仪表盘
这些代码可以根据你的需求选择使用,你更倾向于哪种类型?我可以针对性地优化某个方案。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播