# 11.2 FIFA数据可视化 可视化是实现理解数据的最好途径,所以接下来会对不同的特征进行可视化。 首先先看一下 Overall 这个特征,Overall 表示的是球员的综合水平,值越高说明球员越厉害。一般来说,球员的综合水平应该是符合高斯分布的。因为特别差劲与特别优秀的球员在所有球员中所占的比例应该是非常少的,水平中庸的蓝领球员应该是占大多数的。所以我们可以可视化看一下,球员的综合水平的整体分布是不是一个高斯分布。 ```python # 画分布图 sns.distplot(datafr['Overall'],color="Purple", ax=axs[1]) ``` ![](16.jpg) 基本上符合高斯分布,所以基本可以推断出 Overall 这个特征应该没什么毛病。 然后来看一下 Jersey Number 这个特征,Jersey Number 的意思是球衣号码。为什么要看这个特征呢?因为我个人认为这种特征所代表的含义比较玄学,可能有些球衣号码的球员的普遍综合水平比较高。那为了验证这一想法,不如来可视化一下看看。 ```python plt.figure(figsize=(12,10)) # 画散点图,横轴是球衣号码,纵轴是球员的综合水平 ax = sns.scatterplot(x="Jersey Number", y="Overall", hue ="Overall", size= "Overall", data=datafr) ax.set_title('Scatter plot of Jersey Number vs Overall', fontsize=16) sns.set_context("paper", font_scale=1.4) ``` ![](13.jpg) 从可视化的结果来看,球衣号码和球员的综合水平好想并没有比较直观的关系。所以如果想要根据球衣号码来推测出该球员的综合水平高低,不太现实。因此在后面就行推荐时可以将其删掉。 那么哪些特征会与球员的综合水平有关呢?我个人认为,球员的国籍可能是一个比较重要的特征。因为大部分绿茵场上的超级巨星都是来自如巴西、阿根廷、德国、意大利等国家。所以我们不妨来检查一下球员国籍这个特征有没有明显的异常值。 首先,看看出产球员最多的十个国家分别是哪些国家。 ```python datafr['Nationality'].value_counts()[:10] ``` ![](14.jpg) 和我预期的差不多,英格兰,德国,西班牙,法国,巴西,意大利等足球强国中出产的球员数量比较多,很符合常理,应该没有什么异常值。不过,干巴巴的数字看上去不够直观,我们可以将球员比例可视化出来。 ```python England = len(datafr[datafr['Nationality'] == 'England']) Germany = len(datafr[datafr['Nationality'] == 'Germany']) Spain = len(datafr[datafr['Nationality'] == 'Spain']) Argentina = len(datafr[datafr['Nationality'] == 'Argentina']) France = len(datafr[datafr['Nationality'] == 'France']) Brazil = len(datafr[datafr['Nationality'] == 'Brazil']) Italy = len(datafr[datafr['Nationality'] == 'Italy']) Colombia = len(datafr[datafr['Nationality'] == 'Colombia']) Japan = len(datafr[datafr['Nationality'] == 'Japan']) Netherlands = len(datafr[datafr['Nationality'] == 'Netherlands']) labels = 'England','Germany','Spain','Argentina','France','Brazil','Italy','Colombia','Japan','Netherlands' sizes = [England,Germany,Spain,Argentina,France,Brazil,Italy,Colombia,Japan,Netherlands] plt.figure(figsize=(6,6)) # 画饼图 plt.pie(sizes, explode=(0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05), labels=labels, colors=sns.color_palette("Purples"), autopct='%1.1f%%', shadow=True, startangle=90) sns.set_context("paper", font_scale=1.2) plt.title('Ratio of players by different Nationality', fontsize=16) plt.show() ``` ![](15.jpg) 非常直观,这幅图其实也从侧面反映了各大足球强国的甲级联赛的风靡程度。 当然,还有很多特征与综合水平有关,在这里我就不一一列举了,就当是作业留给你自己去动手挖掘了。祝愿你能发现一些有趣的信息。