加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

以FIFA球员数据集为例,详解3大酷炫可视化技巧

发布时间:2019-05-21 10:08:04 所属栏目:教程 来源:读芯术
导读:可视化令数据一目了然。然而,成功的数据可视化往往很难实现。此外,向更多受众呈现这些可视化的数据,也需要耗费更多时间和精力。 大家都知道如何制作条形图、散点图和直方图,但却不注重美化它们。这在无形中会损害我们在同行和上级心中的可靠性。 此外
副标题[/!--empirenews.page--]

可视化令数据一目了然。然而,成功的数据可视化往往很难实现。此外,向更多受众呈现这些可视化的数据,也需要耗费更多时间和精力。

大家都知道如何制作条形图、散点图和直方图,但却不注重美化它们。这在无形中会损害我们在同行和上级心中的可靠性。

此外,代码重用也很重要。你该不会想每次访问数据集都从头开始吧?利用一些可重用的图形能更快地找到你想要的信息。

以FIFA球员数据集为例,详解3大酷炫可视化技巧

本文涉及三个实用的可视化工具:

  • 图形分类相关性
  • 散点图矩阵
  • 使用Seaborn的分类散点图注释和图注释

总的来说,本文会教大家制作一些好看又中用的图表。

本文将使用kaggle上的国际足联2019年完整的球员数据集,其最新版数据库包括了每个注册在内的球员的详细信息。

由于该数据集有许多列,因此我们只关注分类列和连续列的子集。

  1. import numpy as np 
  2. import pandas as pd 
  3. import seaborn as sns 
  4. import matplotlib.pyplot as plt 
  5. %matplotlib inline 
  6. # We dont Probably need the Gridlines. Do we? If yes comment this line 
  7. sns.set(style="ticks") 
  8. player_df = pd.read_csv("../input/data.csv") 
  9. numcols = [ 
  10.  'Overall', 
  11.  'Potential', 
  12. 'Crossing','Finishing',  'ShortPassing',  'Dribbling','LongPassing', 'BallControl', 'Acceleration', 
  13.        'SprintSpeed', 'Agility',  'Stamina', 
  14.  'Value','Wage'] 
  15. catcols = ['Name','Club','Nationality','Preferred Foot','Position','Body Type'] 
  16. # Subset the columns 
  17. player_dfplayer_df = player_df[numcols+ catcols] 
  18. # Few rows of data 
  19. player_df.head(5) 

以FIFA球员数据集为例,详解3大酷炫可视化技巧

球员数据

虽然该数据格式良好,但是因为工资和值列是以欧元为单位,并包含字符串,需要进行一些预处理,才能使它们为后续分析提供数值。

  1. def wage_split(x): 
  2.     try: 
  3.         return int(x.split("K")[0][1:]) 
  4.     except: 
  5.         return 0 
  6. player_df['Wage'] = player_df['Wage'].apply(lambda x : wage_split(x)) 
  7. def value_split(x): 
  8.     try: 
  9.         if 'M' in x: 
  10.             return float(x.split("M")[0][1:]) 
  11.         elif 'K' in x: 
  12.             return float(x.split("K")[0][1:])/1000 
  13.     except: 
  14.         return 0 
  15. player_df['Value'] = player_df['Value'].apply(lambda x : value_split(x)) 

图形分类相关性

简单来说,相关性是衡量两个变量如何一起运动的指标。

例如,在现实生活中,收入与支出呈正相关,其中一个变量随着另一个变量的增加而增加。

学习成绩和电子游戏的使用呈负相关,其中一个变量的增加意味着另一个变量的减少。

因此如果预测变量与目标变量呈正相关或负相关,那么该变量就有研究价值。

研究不同变量之间的相关性对于理解数据非常有意义。

使用Seaborn即可轻松创建出相当不错的关系图。

  1. corr = player_df.corr() 
  2. g = sns.heatmap(corr,  vmax=.3, center=0, 
  3.             square=True, linewidths=.5, cbar_kws={"shrink": .5}, annot=True, fmt='.2f', cmap='coolwarm') 
  4. sns.despine() 
  5. g.figure.set_size_inches(14,10) 
  6.  
  7. plt.show() 

以FIFA球员数据集为例,详解3大酷炫可视化技巧

所有的分类变量都去哪了?

你有注意到什么问题吗?

有问题,因为该图仅计算了数值列之间的相关性。

如果目标变量是club或position,会出现什么情况?

如果想得到三种不同情况之间的相关性,可使用以下相关性度量来计算。

1. 数值变量

该变量可通过Pearson相关性的方式得到,用于度量两个变量如何一起运动,范围为[-1,1]。

2. 分类变量

使用克莱姆V系数来分类案例。该系数是两个离散变量之间的相互关联,并与具有两个或多层次的变量一起使用。它也是一个对称的度量,因为变量的顺序无关紧要,即克莱姆(A,B)==克莱姆(B,A)。

例如,在数据集中,Club和Nationality一定有某种关联。

可用堆叠图来验证这一点,这是理解分类变量和分类变量间分布的一个绝佳方法,因为在该数据中有很多国籍和俱乐部,所以使用数据的子集。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读