足球数据在python中的应用(2)

前言

在第一篇文章里我们分别介绍了,足球数据库statsbombpy的安装以及说明,随后也介绍了利用statsbombpy的数据可视化比赛传球神经网络。今天让我们继续做些可视化工作。首先让我们细化每位首发球员传球吧!

准备工作

1.1 导入statsbombpy等库

import matplotlib.pyplot as plt
from mplsoccer import Pitch, Sbopen
import pandas as pd
import warnings

1.2 过滤警告

warnings.filterwarnings("ignore", category=DeprecationWarning) 
pd.options.mode.chained_assignment = None

设置了忽略DeprecationWarning的警告,防止一些不影响程序运行但是会在输出中显示的信息chained_assignment选项为None来避免在链式赋值时发出的警告。

1.3 数据的处理

我们继续使用法国对战阿根廷那场的比赛数据,其中我们首先处理坎特和博格巴的传球数据。

parser = Sbopen()
df, related, freeze, tactics = parser.event(7580)
pitch = Pitch(line_color='black')
fig, ax = pitch.draw(figsize=(12, 7))
players = {"Paul Pogba": "red", "N''Golo Kanté": "blue"}

建立个字典,将球员的名字映射到绘图中使用的颜色上。坎特将用蓝色表示,而博格巴将用红色表示。筛选出法国队的传球数据当然我们必须排除掷界外球的数据

france_passes = df[(df.type_name == 'Pass') & (df.team_name == "France") & (df.sub_type_name != "Throw-in")]

 下一步

for player, color in players.items():
    mask_player = (df.type_name == 'Pass') & (df.player_name == player)
    df_pass = df.loc[mask_player, ['x', 'y', 'end_x', 'end_y']]
    
    pitch.arrows(df_pass.x, df_pass.y, df_pass.end_x, df_pass.end_y,
                 color=color, ax=ax, label=player, zorder=1, width=2)
    pitch.scatter(df_pass.x, df_pass.y, alpha=0.5, s=300, color=color, ax=ax)

这个循环遍历球员和颜色,使用pandasBoolean

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值