| 
                        副标题[/!--empirenews.page--]
                         可视化令数据一目了然。然而,成功的数据可视化往往很难实现。此外,向更多受众呈现这些可视化的数据,也需要耗费更多时间和精力。 
大家都知道如何制作条形图、散点图和直方图,但却不注重美化它们。这在无形中会损害我们在同行和上级心中的可靠性。 
此外,代码重用也很重要。你该不会想每次访问数据集都从头开始吧?利用一些可重用的图形能更快地找到你想要的信息。 
  
本文涉及三个实用的可视化工具: 
    - 图形分类相关性
 
    - 散点图矩阵
 
    - 使用Seaborn的分类散点图注释和图注释
 
 
总的来说,本文会教大家制作一些好看又中用的图表。 
本文将使用kaggle上的国际足联2019年完整的球员数据集,其最新版数据库包括了每个注册在内的球员的详细信息。 
由于该数据集有许多列,因此我们只关注分类列和连续列的子集。 
- import numpy as np 
 - import pandas as pd 
 - import seaborn as sns 
 - import matplotlib.pyplot as plt 
 - %matplotlib inline 
 - # We dont Probably need the Gridlines. Do we? If yes comment this line 
 - sns.set(style="ticks") 
 - player_df = pd.read_csv("../input/data.csv") 
 - numcols = [ 
 -  'Overall', 
 -  'Potential', 
 - 'Crossing','Finishing',  'ShortPassing',  'Dribbling','LongPassing', 'BallControl', 'Acceleration', 
 -        'SprintSpeed', 'Agility',  'Stamina', 
 -  'Value','Wage'] 
 - catcols = ['Name','Club','Nationality','Preferred Foot','Position','Body Type'] 
 - # Subset the columns 
 - player_dfplayer_df = player_df[numcols+ catcols] 
 - # Few rows of data 
 - player_df.head(5) 
 
  
  
球员数据 
虽然该数据格式良好,但是因为工资和值列是以欧元为单位,并包含字符串,需要进行一些预处理,才能使它们为后续分析提供数值。 
- def wage_split(x): 
 -     try: 
 -         return int(x.split("K")[0][1:]) 
 -     except: 
 -         return 0 
 - player_df['Wage'] = player_df['Wage'].apply(lambda x : wage_split(x)) 
 - def value_split(x): 
 -     try: 
 -         if 'M' in x: 
 -             return float(x.split("M")[0][1:]) 
 -         elif 'K' in x: 
 -             return float(x.split("K")[0][1:])/1000 
 -     except: 
 -         return 0 
 - player_df['Value'] = player_df['Value'].apply(lambda x : value_split(x)) 
 
  
图形分类相关性 
简单来说,相关性是衡量两个变量如何一起运动的指标。 
例如,在现实生活中,收入与支出呈正相关,其中一个变量随着另一个变量的增加而增加。 
学习成绩和电子游戏的使用呈负相关,其中一个变量的增加意味着另一个变量的减少。 
因此如果预测变量与目标变量呈正相关或负相关,那么该变量就有研究价值。 
研究不同变量之间的相关性对于理解数据非常有意义。 
使用Seaborn即可轻松创建出相当不错的关系图。 
- corr = player_df.corr() 
 - g = sns.heatmap(corr,  vmax=.3, center=0, 
 -             square=True, linewidths=.5, cbar_kws={"shrink": .5}, annot=True, fmt='.2f', cmap='coolwarm') 
 - sns.despine() 
 - g.figure.set_size_inches(14,10) 
 -  
 - plt.show() 
 
  
  
所有的分类变量都去哪了? 
你有注意到什么问题吗? 
有问题,因为该图仅计算了数值列之间的相关性。 
如果目标变量是club或position,会出现什么情况? 
如果想得到三种不同情况之间的相关性,可使用以下相关性度量来计算。 
1. 数值变量 
该变量可通过Pearson相关性的方式得到,用于度量两个变量如何一起运动,范围为[-1,1]。 
2. 分类变量 
使用克莱姆V系数来分类案例。该系数是两个离散变量之间的相互关联,并与具有两个或多层次的变量一起使用。它也是一个对称的度量,因为变量的顺序无关紧要,即克莱姆(A,B)==克莱姆(B,A)。 
例如,在数据集中,Club和Nationality一定有某种关联。 
可用堆叠图来验证这一点,这是理解分类变量和分类变量间分布的一个绝佳方法,因为在该数据中有很多国籍和俱乐部,所以使用数据的子集。 
                                                (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |