python案例统计任意球直接得分几次?

wen python案例 2

Python案例:统计任意球直接得分次数

下面我用一个完整的案例,演示如何统计足球比赛中任意球直接得分的次数。

python案例统计任意球直接得分几次?

场景说明

假设我们有一批比赛事件数据,需要统计每个球员通过任意球直接破门(free kick goal)的次数。

基础版(用字典统计)

# 比赛事件数据
events = [
    {"player": "梅西",   "type": "任意球直接得分"},
    {"player": "C罗",    "type": "点球得分"},
    {"player": "梅西",   "type": "任意球直接得分"},
    {"player": "贝克汉姆", "type": "任意球直接得分"},
    {"player": "C罗",    "type": "任意球直接得分"},
    {"player": "梅西",   "type": "运动战进球"},
    {"player": "贝克汉姆", "type": "任意球直接得分"},
    {"player": "C罗",    "type": "任意球直接得分"},
]
# 统计任意球直接得分
result = {}
for e in events:
    if e["type"] == "任意球直接得分":
        player = e["player"]
        result[player] = result.get(player, 0) + 1
# 按得分从高到低排序输出
for player, count in sorted(result.items(), key=lambda x: -x[1]):
    print(f"{player}: {count} 次")

输出:

梅西: 2 次
贝克汉姆: 2 次
C罗: 2 次

进阶版(用 Pandas,适合大量数据)

import pandas as pd
df = pd.DataFrame(events)
# 筛选任意球直接得分,并按球员分组计数
free_kick_goals = (
    df[df["type"] == "任意球直接得分"]
    .groupby("player")
    .size()
    .sort_values(ascending=False)
    .reset_index(name="任意球直接得分次数")
)
print(free_kick_goals)

输出:

   player  任意球直接得分次数
0    梅西            2
1    C罗            2
2  贝克汉姆           2

读取 CSV/Excel 文件统计

实际项目中数据通常来自文件:

import pandas as pd
# 假设数据文件有 player、type 两列
df = pd.read_csv("match_events.csv")
# 关键:用 str.contains 匹配"任意球"相关关键词
mask = df["type"].str.contains("任意球", na=False) & \
       df["type"].str.contains("得分|进球", na=False)
stats = df[mask].groupby("player").size().sort_values(ascending=False)
print(stats)
步骤 说明
确定统计目标 "任意球直接得分"这一事件类型
筛选数据 用条件判断或 str.contains 过滤
分组计数 字典 get() 累加,或 Pandas groupby().size()
排序输出 sorted(..., key=lambda x: -x[1]) 降序

拓展:区分"任意球直接得分"和"任意球助攻"

# 如果数据里有更细的分类
types = ["任意球直接得分", "任意球助攻", "任意球射门被扑"]
# 用 value_counts 一键统计
print(df[df["type"].isin(types)]["type"].value_counts())

如果你有真实的比赛数据格式(CSV 字段名、事件描述写法),可以发给我,我帮你写出针对性的统计代码。

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