本文目录导读:

要统计定位球得分占比,需要先明确几个口径,下面给你一个实用脚本模板,按你实际数据字段改一下就能跑。
先定义统计口径
定位球通常包括:
- 角球
- 任意球
- 点球
- 界外球发起进攻后得分(可选)
- 间接任意球/二次进攻(可选)
总进球通常包括:
- 运动战进球
- 定位球进球
- 乌龙球(可选是否计入)
- 点球(有些统计把点球单列)
建议公式:
定位球得分占比 = 定位球进球数 / 总进球数 × 100%
如果点球单列:
定位球得分占比 = (角球 + 任意球 + 其他定位球) / 总进球 × 100%
Python 脚本示例
假设你有一份 Excel/CSV,字段如下:
| 球队 | 进球方式 | 进球数 |
|---|---|---|
| A队 | 运动战 | 20 |
| A队 | 角球 | 8 |
| A队 | 任意球 | 3 |
| A队 | 点球 | 4 |
| B队 | 运动战 | 15 |
| B队 | 角球 | 5 |
脚本 1:按球队统计定位球占比
import pandas as pd
# 1. 读取数据
df = pd.read_csv("goals.csv") # 或 pd.read_excel("goals.xlsx")
# 2. 定义哪些算定位球
set_piece_types = ["角球", "任意球", "点球", "界外球", "定位球"]
# 3. 标记是否定位球
df["是否定位球"] = df["进球方式"].isin(set_piece_types)
# 4. 按球队汇总
total_goals = df.groupby("球队")["进球数"].sum()
set_piece_goals = (
df[df["是否定位球"]]
.groupby("球队")["进球数"]
.sum()
)
# 5. 合并结果
result = pd.DataFrame({
"总进球": total_goals,
"定位球进球": set_piece_goals
}).fillna(0)
result["定位球占比"] = result["定位球进球"] / result["总进球"]
result["定位球占比%"] = (result["定位球占比"] * 100).round(2)
print(result)
# 6. 导出
result.to_excel("定位球占比统计.xlsx")
如果数据是逐球记录
字段可能是:
| 比赛ID | 球队 | 进球时间 | 进球方式 | 是否定位球 |
|---|---|---|---|---|
| 1 | A队 | 23 | 角球 | 是 |
| 1 | A队 | 56 | 运动战 | 否 |
脚本:
import pandas as pd
df = pd.read_csv("matches_goals.csv")
# 如果已有“是否定位球”字段
df["是否定位球"] = df["是否定位球"].map({"是": True, "否": False})
# 总进球
total = df.groupby("球队").size().rename("总进球")
# 定位球进球
set_piece = (
df[df["是否定位球"]]
.groupby("球队")
.size()
.rename("定位球进球")
)
result = pd.concat([total, set_piece], axis=1).fillna(0)
result["定位球占比%"] = (result["定位球进球"] / result["总进球"] * 100).round(2)
print(result)
SQL 版本
如果数据在数据库:
SELECT
球队,
COUNT(*) AS 总进球,
SUM(CASE WHEN 进球方式 IN ('角球','任意球','点球','界外球') THEN 1 ELSE 0 END) AS 定位球进球,
ROUND(
SUM(CASE WHEN 进球方式 IN ('角球','任意球','点球','界外球') THEN 1 ELSE 0 END) * 100.0 / COUNT(*),
2
) AS 定位球占比百分比
FROM goals
GROUP BY 球队;
Excel 公式版
如果数据在 Excel:
总进球:
=SUMIF(A:A, "A队", C:C)
定位球进球:
=SUMIFS(C:C, A:A, "A队", B:B, "角球") + SUMIFS(C:C, A:A, "A队", B:B, "任意球") + SUMIFS(C:C, A:A, "A队", B:B, "点球")
定位球占比:
=定位球进球 / 总进球
建议输出结果
| 球队 | 总进球 | 定位球进球 | 定位球占比% |
|---|---|---|---|
| A队 | 35 | 15 | 86 |
| B队 | 20 | 5 | 00 |
如果你把数据格式发我,
球队,进球方式,进球数 A队,运动战,20 A队,角球,8 ...
我可以直接帮你改成能一键运行的完整脚本。