我是一个八年级的学生,上学期学习了Python和包括标准差在内的数据统计方法。参考“怕砍不留名”在soccer.hupu.com上的帖子,并且在爸爸的指导下我尝试对欧洲五大足球联赛(英超、德甲、西甲、意甲、法甲)水平高低做一个比较。
五大联赛之间水平孰高孰低,一直众说纷纭,没有定论。有人通过欧战积分 (https://www.uefa.com/memberassociations/uefarankings/country/ )对其进行评估,但这种方式也有其局限,每个联赛中实际参加欧冠和欧联比赛的队伍都是在该联赛中排名靠前的球队,并不能覆盖大部分无法参加欧战队伍中下游球队。而一种比较方法如果不能覆盖联赛中的大部分球队,那么这种比较方法也就难说公平。
whoscored.com(https://www.whoscored.com/)是一个会对包括五大联赛在内的主要足球比赛球员表现进行评分,排名,提供数据分析数据的网站,虽然whoscored的评分也存在一定的争议,但是它基于同一算法进行数据统计足够客观。在比较当中我以西甲为基准,统计西甲和英超,德甲,意甲,法甲之间的相互转会球员数据,我假设转会球员前后在不同联赛的两个赛季水平没有变化,那么我计算出球员评分和赛季平均分标准差之间的关系,然后根据前后两个不同联赛的不同结果来判断英超,德甲,意甲,法甲相对于西甲的水平高低。
以在2010~2011赛季从西甲转到英超的David Silva为例。在whoscored.com上有David Silva09/10赛季在西甲和10/11赛季在英超的评分,我先计算出09/10赛季西甲主要球员(总出场次数大于该联赛平均出场次数的球员,以下皆同)的平均分和标准差分别为6.88(满分为10,以下皆同)和0.33,再计算出10/11赛季英超主要球员的平均分和标准差为6.88和0.30。将David Silva 09/10赛季在西甲的评分7.34减去09/10赛季西甲主要球员的平均分6.88再除以标准差0.33得出David Silva在09/10赛季比平均分高出了1.40个标准差。接着再用同样的方法,将David Silva 10/11赛季在英超的评分7.15减去10/11赛季英超主要球员的平均分6.88再除以标准差0.30得出David Silva在10/11赛季比英超平均分高出了0.90个标准差。两者个标准差相减(西甲标准差减英超标准差),若得出结果为正数则说明英超的水平比西甲高,如果为负则说明西甲的水平高。以David Silva为例,这一结果为0.5则说明他在英超相对其他球员水平没有在西甲那么突出,所以假设球员水平没有变化,那么我们可以推出英超球员平均水平高出西甲。在转会球员样本足够大的情况下取平均数则足够准确。
具体实施过程:
首先,我需要将whoscored.com上09/10~16/17赛季五大联赛主要球员(总出场次数大于该联赛平均出场次数的球员)的评分都抓取下来。由于whoscored.com采用了incapsula机制,所以我无法用python中类似urllib的库进行网页抓取。我转而采用AutoHotkey模拟键盘操作,将每一网页内容保存到txt文件里 。代码如下:
#Persistent
global fileName := "whoscored.txt"
global pages := 29
*Space::
file := FileOpen(fileName, "w")
loop, 30
{
Send ^a
Sleep, 500
Send ^c
Sleep, 500
file.Write(clipboard)
Send {Click}
Sleep, 5000
}
file.Close
Return
然后,用python读取这些txt文件并用正则表达式抓取其中的球员评分,将其写入若干份csv文件。
接着,用python读取csv文件中的球员评分,进而算出各联赛在各赛季的平均分和标准差。
最后,以上文说明过的原理,通过excel表格对09/10~16/17赛季五大联赛中转会的球员进行数据分析。我以La Liga(西甲)为基准,通过对从La Liga 转到别的联赛(或从别的联赛转到La Liga )的球员进行数据分析。
python代码,csv文件和分析的excel文件见附件
结论:
从两图可以看出来,西甲(La Liga)历年来是当之无愧的第一名,其次分别是德甲(Bund)、英超(EPL)、法甲(Ligue 1)、意甲(Serie A)
左图:2至8行分别表示了当赛季西甲与另外四大联赛之间的水平差距(数字为正,则水平高于西甲,数字为负则相反)。那么从最下面一行可以看出,这四大联赛的平均水平分别比西甲低0.12、0.13、0.20、0.34个标准差。右图的意思是,以西甲(La Liga)为基准,分数在基准线以下的联赛,该联赛在那一赛季的水平没有西甲的水平高。分数在基准线以上的联赛则相反。
我的统计结果与欧战积分 (https://www.uefa.com/memberassociations/uefarankings/country/ )上的结果有出入
欧战积分。西甲仍是第一,但意甲和法甲与我的统计有较大出入。
出入产生的原因可能在于,12/13赛季法甲与西甲之间相互转会人数只有两人,16/17赛季德甲与西甲之间相互转会人数也只有两人。因此,从折线统计图上观察到的12/13、16/17赛季的极值,不能证明德甲和法甲的真实水平。