|
副标题[/!--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一定有某种关联。
可用堆叠图来验证这一点,这是理解分类变量和分类变量间分布的一个绝佳方法,因为在该数据中有很多国籍和俱乐部,所以使用数据的子集。
(编辑:应用网_阳江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|