数据来源:Kaggle
工具:Jupyter Notebook
Python第三方库:Pandas, Matplotlib, Seaborn和Scikit-Learn
FIFA19是一款风靡全球的足球游戏,里面囊括了全球超过18000名职业球员的数据指标,从而形成一个18000行x88列的数据库,具体可以分为球员基础数据(Basics)和能力数据指标(Performance)两类指标。
笔者选取了以下指标对top1000的球员进行简单的分析。但在进行数据分析之前,需要对数据进行清洗,包括空值的处理,字符串和数值型数据等。这里用到的工具主要是Pandas里面dropna, str.strip, replace等函数,在这里不细讲。
Part 1 基础数据
基础数据字段: 球员姓名,惯用脚,年龄,体重,身高。
我们先来看球员惯用脚的情况,从下图可以看出,右脚球员要明显高于左脚球员,具体比例约为4:1。在1000名球员中,接近800名为右脚,而左脚球员则约230-240左右。
数据的描述统计
我们可以看到足球运动员的平均年龄27岁左右,身高和体重数据均值并不高,体重身高的均值分别为170磅(77kg)以及5.97英尺(175cm)。这与一个普通的成年男性无异。。
那么每个指标的均值是否能够代表一般情况?我们再看下每个字段的概率分布情况,从三组数据的概率分布图来看,基本呈现钟型,即从中间向两边逐步递减,且没有出现左偏或右偏的情况,左右两边的分布相对均匀。
结论:一个足球运动员通常应该是:体重170磅(77kg)上下,5尺9寸高(175cm)。
那么不同大洲/国家之间球员的特征是否会存在不同?笔者选取了四大洲的部分国家数据进行对比:
1)欧洲<西班牙, 比利时,德国,法国,英格兰和意大利>, 即五大联赛加上欧洲红魔比利时
2)南美洲<阿根廷,巴西,智利,厄瓜多尔>,阿根廷,巴西为传统的足球强国
3)亚洲<韩国,日本>,亚洲仅有的两个国家有球员在top1000
4)非洲<埃及, 加纳, 尼日利亚和喀麦隆>,非洲传统足球强国
我们可以通过下面的图表进行相对直观的认识。
对比之下,欧洲球员身高体重的峰值要比其他大洲高些,分别是6尺5(1.96m)和250磅(100kg)。南美洲次之,非洲第三,而亚洲末位。从峰值来看,
1)欧洲:
身高:意大利>德国>西班牙>法国>英格兰>比利时
体重:西班牙>法国>德国>意大利>英格兰>比利时
2)南美洲:
身高:巴西>阿根廷>智利>厄瓜多尔
体重:智利>阿根廷>巴西>厄瓜多尔
3)亚洲:仅有日本、韩国两个国家
4)非洲:
身高:埃及>尼日利亚>喀麦隆>加纳
体重:尼日利亚>埃及>加纳>喀麦隆
BMI
在分析完基础数据的特征后,可以根据需要构建指标值进行分析。由于有身高和体重的数据,我们可以分析下球员BMI的情况。在选取的top1000名球员中,BMI维持在22-26的区间内,但偶尔会有零星的异常值,如超过26和低于22都属于异常,但这取决于你选择的阈值。
我们可以进一步分析国家之间球员的BMI值是否存在差异,可以看到极端值主要出现在阿根廷
BMI VS Preferred Foot
最后,笔者用K-Means方法尝试将年龄,身高和体重三个指标分成3个cluster,结果显示如下。
Part 2 能力指标
这部分涉及的主要是数值型的数据,因此,我们可以尝试做PCA分析。
能力数据指标:过人,终结能力,头球准度,带球,灵活度,弹跳,视野,加速能力,射门力度,耐力,力量。
top 10 球员数据
数据的描述统计
左图, 可以看到PC1,PC2包含了数据集中超过70%的差异性,分别是561.%和19.4%。而从右图中,我们可以看到,将数据降维后,出现了明显的两个聚类。
最后,我们用Kmeans方法,设定cluster=6,结果如下:
,