这个python案例显示被射门次数对比?

wen python案例 3

本文目录导读:

这个python案例显示被射门次数对比?

  1. 完整的射门数据对比分析案例
  2. 运行结果示例
  3. 分析要点

我理解您想查看关于射门次数对比的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 利物浦
...

分析要点

  1. 数据准备:创建包含主客队射门和进球的数据
  2. 基础统计:计算总射门、场均射门、转化率
  3. 可视化:多种图表展示对比关系
  4. 深入分析:找出效率最高、差距最大的比赛
  5. 相关性分析:射门与进球的关系

这个案例提供了全面的射门数据分析,您可以根据实际数据替换示例数据使用,需要我解释某个部分或者调整功能吗?

抱歉,评论功能暂时关闭!