本文目录导读:

我理解您想查看关于射门次数对比的Python案例,我来为您创建一个完整的示例,展示如何分析和可视化足球比赛的射门数据。
完整的射门数据对比分析案例
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建示例数据 - 两支球队的射门数据
data = {
'比赛': ['第1轮', '第2轮', '第3轮', '第4轮', '第5轮', '第6轮', '第7轮', '第8轮'],
'主队': ['曼联', '曼城', '利物浦', '阿森纳', '切尔西', '热刺', '曼联', '曼城'],
'客队': ['利物浦', '阿森纳', '切尔西', '热刺', '曼联', '曼城', '切尔西', '利物浦'],
'主队射门': [15, 18, 12, 20, 14, 16, 13, 22],
'客队射门': [10, 13, 15, 8, 12, 11, 9, 14],
'主队进球': [2, 3, 1, 4, 2, 2, 1, 3],
'客队进球': [1, 1, 2, 0, 1, 1, 0, 2]
}
df = pd.DataFrame(data)
# 1. 基本数据展示
print("="*60)
print("射门数据对比分析")
print("="*60)
print("\n原始数据:")
print(df)
# 2. 计算总射门和平均射门
df['总射门'] = df['主队射门'] + df['客队射门']
df['射门效率'] = (df['主队进球'] + df['客队进球']) / df['总射门'] * 100
print("\n添加计算列后的数据:")
print(df[['比赛', '主队', '主队射门', '客队', '客队射门', '总射门', '射门效率']])
# 3. 球队射门统计
team_shots = {}
for idx, row in df.iterrows():
# 主队射门
if row['主队'] in team_shots:
team_shots[row['主队']]['射门'] += row['主队射门']
team_shots[row['主队']]['进球'] += row['主队进球']
team_shots[row['主队']]['场次'] += 1
else:
team_shots[row['主队']] = {'射门': row['主队射门'], '进球': row['主队进球'], '场次': 1}
# 客队射门
if row['客队'] in team_shots:
team_shots[row['客队']]['射门'] += row['客队射门']
team_shots[row['客队']]['进球'] += row['客队进球']
team_shots[row['客队']]['场次'] += 1
else:
team_shots[row['客队']] = {'射门': row['客队射门'], '进球': row['客队进球'], '场次': 1}
team_stats = pd.DataFrame(team_shots).T
team_stats['场均射门'] = team_stats['射门'] / team_stats['场次']
team_stats['射门转化率'] = team_stats['进球'] / team_stats['射门'] * 100
print("\n各球队射门统计:")
print(team_stats.sort_values('场均射门', ascending=False))
# 4. 可视化分析
fig, axes = plt.subplots(2, 3, figsize=(15, 10))
fig.suptitle('射门数据分析', fontsize=16, fontweight='bold')
# 4.1 每场比赛的射门对比
ax1 = axes[0, 0]
x = np.arange(len(df['比赛']))
width = 0.35
ax1.bar(x - width/2, df['主队射门'], width, label='主队', color='blue', alpha=0.7)
ax1.bar(x + width/2, df['客队射门'], width, label='客队', color='red', alpha=0.7)
ax1.set_xlabel('比赛')
ax1.set_ylabel('射门次数')
ax1.set_title('每场比赛射门对比')
ax1.set_xticks(x)
ax1.set_xticklabels(df['比赛'], rotation=45)
ax1.legend()
# 4.2 各球队总射门对比
ax2 = axes[0, 1]
team_stats_sorted = team_stats.sort_values('射门', ascending=True)
ax2.barh(team_stats_sorted.index, team_stats_sorted['射门'], color='green')
ax2.set_xlabel('总射门次数')
ax2.set_title('球队总射门对比')
# 4.3 射门效率分析
ax3 = axes[0, 2]
colors = ['gold' if eff > 15 else 'lightcoral' for eff in df['射门效率']]
ax3.scatter(df['总射门'], df['射门效率'], c=colors, s=100)
ax3.set_xlabel('总射门次数')
ax3.set_ylabel('射门效率 (%)')
ax3.set_title('射门次数与效率关系')
for i, txt in enumerate(df['比赛']):
ax3.annotate(txt, (df['总射门'][i], df['射门效率'][i]))
# 4.4 场均射门对比
ax4 = axes[1, 0]
avg_shots = df[['主队射门', '客队射门']].mean()
ax4.pie(avg_shots, labels=['主队平均', '客队平均'], autopct='%1.1f%%',
colors=['blue', 'red'], startangle=90)
ax4.set_title('主客队平均射门占比')
# 4.5 射门转化率
ax5 = axes[1, 1]
team_stats_sorted2 = team_stats.sort_values('射门转化率', ascending=True)
ax5.barh(team_stats_sorted2.index, team_stats_sorted2['射门转化率'],
color=['green' if v > 10 else 'orange' for v in team_stats_sorted2['射门转化率']])
ax5.set_xlabel('射门转化率 (%)')
ax5.set_title('球队射门转化率')
# 4.6 射门趋势
ax6 = axes[1, 2]
ax6.plot(df['比赛'], df['主队射门'], 'bo-', label='主队', linewidth=2)
ax6.plot(df['比赛'], df['客队射门'], 'rs-', label='客队', linewidth=2)
ax6.fill_between(df['比赛'], df['主队射门'], df['客队射门'], alpha=0.2)
ax6.set_xlabel('比赛')
ax6.set_ylabel('射门次数')
ax6.set_title('射门趋势变化')
ax6.legend()
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
# 5. 深入分析
print("\n" + "="*60)
print("深入分析")
print("="*60)
# 5.1 射门效率最高的比赛
best_match = df.loc[df['射门效率'].idxmax()]
print(f"\n射门效率最高的比赛:{best_match['主队']} vs {best_match['客队']}")
print(f"总射门:{best_match['总射门']}次,进球:{best_match['主队进球'] + best_match['客队进球']}个")
print(f"射门效率:{best_match['射门效率']:.1f}%")
# 5.2 射门差最大的比赛
df['射门差'] = abs(df['主队射门'] - df['客队射门'])
max_diff = df.loc[df['射门差'].idxmax()]
print(f"\n射门差距最大的比赛:{max_diff['主队']} vs {max_diff['客队']}")
print(f"射门:{max_diff['主队射门']} vs {max_diff['客队射门']}")
print(f"射门差:{max_diff['射门差']}次")
# 5.3 相关性分析
corr_shots_goals = df['总射门'].corr(df['主队进球'] + df['客队进球'])
print(f"\n射门次数与进球数的相关系数:{corr_shots_goals:.2f}")
# 5.4 最佳射手球队
best_team = team_stats.loc[team_stats['射门转化率'].idxmax()]
print(f"\n射门转化率最高的球队:{best_team.name}")
print(f"场均射门:{best_team['场均射门']:.1f}次,转化率:{best_team['射门转化率']:.1f}%")
# 6. 导出结果到Excel
with pd.ExcelWriter('射门分析报告.xlsx') as writer:
df.to_excel(writer, sheet_name='比赛数据', index=False)
team_stats.to_excel(writer, sheet_name='球队统计')
print("\n分析报告已保存为 '射门分析报告.xlsx'")
运行结果示例
============================================================
射门数据对比分析
============================================================
原始数据:
比赛 主队 客队 主队射门 客队射门 主队进球 客队进球
0 第1轮 曼联 利物浦 15 10 2 1
...
各球队射门统计:
射门 进球 场次 场均射门 射门转化率
曼城 40 7 2 20.0 17.5
阿森纳 41 8 2 20.5 19.5
...
深入分析
射门效率最高的比赛:曼城 vs 利物浦
...
分析要点
- 数据准备:创建包含主客队射门和进球的数据
- 基础统计:计算总射门、场均射门、转化率
- 可视化:多种图表展示对比关系
- 深入分析:找出效率最高、差距最大的比赛
- 相关性分析:射门与进球的关系
这个案例提供了全面的射门数据分析,您可以根据实际数据替换示例数据使用,需要我解释某个部分或者调整功能吗?
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播