本文目录导读:

我来给你写一个统计挑球过人次数并判断是否频繁的Python案例。
场景设定
假设我们有一个足球运动员的比赛数据,记录每次比赛中尝试挑球过人的次数。
完整代码示例
import random
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
class PlayerData:
"""足球运动员比赛数据"""
def __init__(self, player_name):
self.player_name = player_name
self.match_data = [] # 存储多场比赛数据
self.threshold = 5 # 默认阈值:单场挑球过人次数大于5次算频繁
def generate_sample_data(self, num_matches=10):
"""生成模拟的比赛数据"""
for i in range(num_matches):
match = {
'match_id': i + 1,
'date': datetime.now() - timedelta(days=num_matches - i),
'opponent': f'对手{i+1}队',
'chips_attempts': random.randint(0, 15), # 挑球过人次数
'chips_success': random.randint(0, 10), # 成功次数
'total_dribbles': random.randint(5, 20), # 总过人次数
'playing_time': random.randint(60, 90) # 出场时间(分钟)
}
match['chips_success'] = min(match['chips_success'], match['chips_attempts'])
self.match_data.append(match)
def add_match_data(self, date, opponent, chips_attempts, chips_success, total_dribbles, playing_time):
"""手动添加一场比赛数据"""
match = {
'match_id': len(self.match_data) + 1,
'date': date,
'opponent': opponent,
'chips_attempts': chips_attempts,
'chips_success': chips_success,
'total_dribbles': total_dribbles,
'playing_time': playing_time
}
self.match_data.append(match)
def calculate_stats(self):
"""计算统计数据"""
if not self.match_data:
return None
total_matches = len(self.match_data)
total_chips = sum(match['chips_attempts'] for match in self.match_data)
total_success = sum(match['chips_success'] for match in self.match_data)
total_dribbles = sum(match['total_dribbles'] for match in self.match_data)
# 计算场均数据
avg_chips = total_chips / total_matches
avg_success = total_success / total_matches
# 成功率
success_rate = (total_success / total_chips * 100) if total_chips > 0 else 0
# 挑球过人占全部过人的比例
chips_ratio = (total_chips / total_dribbles * 100) if total_dribbles > 0 else 0
stats = {
'total_matches': total_matches,
'total_chips': total_chips,
'total_success': total_success,
'avg_chips_per_match': avg_chips,
'success_rate': success_rate,
'chips_ratio': chips_ratio
}
return stats
def judge_frequency(self, stats):
"""判断挑球过人的频率"""
if not stats:
return "暂无数据"
avg_chips = stats['avg_chips_per_match']
# 根据场均次数判断
if avg_chips > 8:
frequency = "非常频繁"
comment = "该球员非常依赖挑球过人,几乎是每场比赛的常规武器"
elif avg_chips > 5:
frequency = "比较频繁"
comment = "挑球过人是该球员重要的过人方式之一"
elif avg_chips > 3:
frequency = "适中"
comment = "挑球过人使用频率适中,不会过于依赖"
elif avg_chips > 1:
frequency = "较少"
comment = "挑球过人使用较少,更多采用其他过人方式"
else:
frequency = "几乎不使用"
comment = "该球员很少使用挑球过人技术"
return {
'frequency': frequency,
'comment': comment,
'avg_chips': avg_chips
}
def analyze_performance(self):
"""综合分析球员表现"""
stats = self.calculate_stats()
if not stats:
return "暂无数据可分析"
print(f"\n{'='*50}")
print(f"球员: {self.player_name}")
print(f"{'='*50}")
print(f"总比赛场次: {stats['total_matches']} 场")
print(f"总挑球过人次数: {stats['total_chips']} 次")
print(f"总成功次数: {stats['total_success']} 次")
print(f"场均挑球过人: {stats['avg_chips_per_match']:.1f} 次/场")
print(f"成功率: {stats['success_rate']:.1f}%")
print(f"挑球过人占比: {stats['chips_ratio']:.1f}%")
# 判断频率
frequency_result = self.judge_frequency(stats)
print(f"\n频率判断: {frequency_result['frequency']}")
print(f"分析: {frequency_result['comment']}")
# 附加分析
if stats['success_rate'] >= 60:
print("✅ 成功率很高,挑球过人技术出众")
elif stats['success_rate'] >= 40:
print("✅ 成功率尚可,还有提升空间")
else:
print("⚠️ 成功率偏低,建议更多练习")
if stats['chips_ratio'] >= 40:
print("⚠️ 挑球过人占比较高,对手可能重点防范")
elif stats['chips_ratio'] >= 25:
print("✅ 挑球过人是重要技巧但不过度依赖")
else:
print("✅ 过人方式多样化")
return stats
def best_match(self):
"""找出最佳比赛"""
if not self.match_data:
return None
best_match = max(self.match_data, key=lambda x: x['chips_attempts'])
return best_match
def create_chart(self):
"""创建数据可视化图表"""
if not self.match_data:
print("暂无数据")
return
# 准备数据
matches = [match['match_id'] for match in self.match_data]
chips = [match['chips_attempts'] for match in self.match_data]
success = [match['chips_success'] for match in self.match_data]
# 创建图表
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
# 第一个图表:每场挑球过人次数
ax1.bar(matches, chips, alpha=0.7, color='blue', label='尝试次数')
ax1.bar(matches, success, alpha=0.7, color='green', label='成功次数')
ax1.axhline(y=self.threshold, color='red', linestyle='--', label=f'频繁阈值({self.threshold}次)')
ax1.set_xlabel('比赛场次')
ax1.set_ylabel('次数')
ax1.set_title(f'{self.player_name} - 挑球过人次数统计')
ax1.legend()
ax1.grid(True, alpha=0.3)
# 第二个图表:每场成功率和占比
rates = [match['chips_success']/match['chips_attempts']*100 if match['chips_attempts'] > 0 else 0
for match in self.match_data]
ratios = [match['chips_attempts']/match['total_dribbles']*100 if match['total_dribbles'] > 0 else 0
for match in self.match_data]
ax2.plot(matches, rates, marker='o', color='orange', label='成功率 (%)')
ax2.plot(matches, ratios, marker='s', color='purple', label='占总过人比例 (%)')
ax2.set_xlabel('比赛场次')
ax2.set_ylabel('百分比 (%)')
ax2.set_title(f'{self.player_name} - 挑球过人成功率与占比')
ax2.legend()
ax2.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('chips_analysis.png', dpi=300, bbox_inches='tight')
print("\n📊 图表已保存为 'chips_analysis.png'")
plt.show()
# 主程序
def main():
print("⚽ 足球挑球过人数据分析系统")
# 创建球员数据
player = PlayerData("梅西")
# 生成模拟数据
player.generate_sample_data(10)
# 手动添加一场比赛数据(示例)
player.add_match_data(
date=datetime.now(),
opponent="皇家马德里",
chips_attempts=12,
chips_success=8,
total_dribbles=15,
playing_time=90
)
# 分析表现
stats = player.analyze_performance()
# 找出最佳比赛
best = player.best_match()
if best:
print(f"\n🏆 最佳比赛: 第{best['match_id']}场 vs {best['opponent']},尝试{best['chips_attempts']}次,成功{best['chips_success']}次")
# 分析每一场比赛
print("\n📋 逐场数据分析:")
print("-" * 60)
for match in player.match_data:
status = "✅" if match['chips_attempts'] > player.threshold else "❌"
print(f"第{match['match_id']}场 ({match['date'].strftime('%m/%d')}) vs {match['opponent']:20s} "
f"挑球:{match['chips_attempts']:2d}次 成功:{match['chips_success']:2d}次 {status}")
# 生成可视化图表(如有matplotlib)
try:
player.create_chart()
except ImportError:
print("\n⚠️ 未安装matplotlib,跳过图表生成")
# 最终结论
print("\n" + "="*50)
print("📌 最终结论:")
if stats:
result = player.judge_frequency(stats)
print(f" {result['comment']}")
print(f" 场均{result['avg_chips']:.1f}次,属于'{result['frequency']}'水平")
if __name__ == "__main__":
main()
使用方法
安装依赖(可选)
pip install matplotlib
运行程序
python chips_analysis.py
手动添加真实数据
# 创建球员
player = PlayerData("C罗")
# 手动添加多场比赛数据
player.add_match_data(
date=datetime(2024, 1, 15),
opponent="皇马",
chips_attempts=8,
chips_success=5,
total_dribbles=12,
playing_time=90
)
输出示例
==================================================
球员: 梅西
==================================================
总比赛场次: 11 场
总挑球过人次数: 74 次
总成功次数: 45 次
场均挑球过人: 6.7 次/场
成功率: 60.8%
挑球过人占比: 35.4%
频率判断: 比较频繁
分析: 挑球过人是该球员重要的过人方式之一
✅ 成功率很高,挑球过人技术出众
✅ 挑球过人是重要技巧但不过度依赖
这个程序提供了完整的统计数据分析和可视化功能,可以根据场均次数自动判断挑球过人的频率是"非常频繁"还是"几乎不使用"。
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播