本文目录导读:

要分析双方射门转化率差异,核心是比较进球数与射门数之间的比值差异,以下是详细的Python分析步骤:
数据准备
假设你有如下格式的数据(用字典或Pandas DataFrame表示):
# 示例数据
data = {
'Home_Team': ['A', 'B', 'A', 'C', 'B'],
'Away_Team': ['B', 'A', 'C', 'A', 'C'],
'Home_Shots': [10, 5, 8, 7, 6],
'Home_Goals': [2, 0, 3, 1, 1],
'Away_Shots': [6, 8, 9, 5, 7],
'Away_Goals': [1, 1, 0, 2, 0]
}
计算单场转化率
df['Home_Conversion'] = df['Home_Goals'] / df['Home_Shots'].replace(0, 1) * 100 # 百分比 df['Away_Conversion'] = df['Away_Goals'] / df['Away_Shots'].replace(0, 1) * 100
汇总各队的射门转化率
# 计算主客场合计
home_stats = df.groupby('Home_Team').agg({
'Home_Shots': 'sum',
'Home_Goals': 'sum'
}).rename(columns={'Home_Shots': 'Shots', 'Home_Goals': 'Goals'})
away_stats = df.groupby('Away_Team').agg({
'Away_Shots': 'sum',
'Away_Goals': 'sum'
}).rename(columns={'Away_Shots': 'Shots', 'Away_Goals': 'Goals'})
# 合并总数据
team_stats = home_stats.add(away_stats, fill_value=0)
team_stats['Conversion_Rate'] = team_stats['Goals'] / team_stats['Shots'] * 100
对比分析
import matplotlib.pyplot as plt
# 可视化对比
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
# 柱状图对比进球效率
axes[0].bar(team_stats.index, team_stats['Conversion_Rate'])
axes[0].set_title('Team Shooting Conversion Rate (%)')
axes[0].set_ylabel('Conversion Rate (%)')
# 散点图:射门数 vs 进球数
axes[1].scatter(team_stats['Shots'], team_stats['Goals'], s=100)
for team in team_stats.index:
axes[1].annotate(team, (team_stats.loc[team, 'Shots'],
team_stats.loc[team, 'Goals']))
axes[1].set_xlabel('Total Shots')
axes[1].set_ylabel('Total Goals')
axes[1].set_title('Shots vs Goals by Team')
plt.tight_layout()
plt.show()
核心差异分析
# 计算转化率差值
if len(team_stats) >= 2:
max_team = team_stats['Conversion_Rate'].idxmax()
min_team = team_stats['Conversion_Rate'].idxmin()
diff = team_stats.loc[max_team, 'Conversion_Rate'] - team_stats.loc[min_team, 'Conversion_Rate']
print(f"转化率最高: {max_team} ({team_stats.loc[max_team, 'Conversion_Rate']:.1f}%)")
print(f"转化率最低: {min_team} ({team_stats.loc[min_team, 'Conversion_Rate']:.1f}%)")
print(f"差异: {diff:.1f} 个百分点")
统计显著性检验(可选)
from scipy.stats import chi2_contingency
# 构建列联表
contingency = [
[team_stats.loc['A', 'Goals'], team_stats.loc['A', 'Shots'] - team_stats.loc['A', 'Goals']],
[team_stats.loc['B', 'Goals'], team_stats.loc['B', 'Shots'] - team_stats.loc['B', 'Goals']]
]
chi2, p, dof, expected = chi2_contingency(contingency)
print(f"卡方检验 p值: {p:.4f}")
print(f"差异{'显著' if p < 0.05 else '不显著'}")
关键观察指标
- 总体转化率:进球数/总射门数
- 效率差异:主客场转化率对比
- 稳定性:各场比赛转化率的波动(标准差)
- xG对比:如有预期进球数据,对比实际与预期转化率
通过这些分析,你可以明确判断哪支球队的射门效率更高,以及差异是否具有统计意义。
版权声明: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直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播