d.Violin图
它类似于箱型图,但它也提供了关于数据分布的补充信息。
importseabornassnssns.violinplot(y=df['Age'], x=df['Sex'])
图9:“年龄”和“性别”之间的violin图
高级绘制方法
a.strip图
- 这是一个连续变量和分类变量之间的图。
- 它以散点图为主,但补充使用分类变量的分类编码。
importseabornassnssns.stripplot(y=df['Age'], x=df['Pclass'])
图10:“年龄”与“p-class”之间的条形图
- 我们可以看到,1班和2班没有10岁左右的儿童,60岁以上的儿童多集中在1班。
- 通常,这种图被用来填补缺失值。
b.swarm图
- 这是一个strip图和violin图的结合。
- 除了数据点的数量,它还提供了它们各自的分布。
importseabornassnssns.swarmplot(y=train['Age'], x=train['Pclass'])
图11:‘年龄’与‘P-class’之间的swarm图
矩阵图
这些是使用二维矩阵数据进行可视化的特殊类型的图形。由于矩阵数据的维数较大,很难对其进行分析和可视化。因此,通过为矩阵数据提供颜色编码,使这个更容易。
a.热力图
- 在给定的原始数据集“df”中,我们有七个数值变量。那么,让我们在这七个变量之间生成一个相关矩阵。
df.corr()
图12:关联矩阵
- 虽然只有49个值,但要读取每个值似乎非常困难。因为我们遍历数以千计的特征。
所以,让我们尝试实现一些颜色编码,这会大大简化模型。
sns.heatmap(df.corr(), annot=True, cmap='viridis')
图13:泰坦尼克号数据集的关联矩阵热图。
- 同样的矩阵现在表达了更多的信息。
- 另一个非常明显的例子是使用heatmap来理解缺失的值。在图14中,黄色的虚线表示一个缺失的值,因此它使我们的任务更容易识别缺失的值。
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')
图14:泰坦尼克号数据中缺失值的热图。
b.聚类图
- 如果我们有一个矩阵数据,并想要根据其相似性对一些特征进行分组,聚类映射可以帮助我们。先看一下热图(图13),然后再看一下聚类图(图15)。
sns.clustermap(tran.corr(), annot='True',cmap='viridis')
图15:泰坦尼克号数据关联矩阵的聚类图
- x-label和y-label是一样的,但是它们协调的方式不同。这是因为它们是根据它们的相似性分组的。
- 顶部和左侧的类似流程图的结构描述了它们的相似程度。
- 聚类图使用层次聚类来形成不同的集群。
网格
网格图为我们提供了对可视化的更多控制,并通过一行代码绘制各种各样的图形。
a.面网格
- 假设我们想要绘制所有三类票中男性和女性的年龄分布,我们总共有6个图。
sns.FacetGrid(train, col='Pclass', row='Sex').map(sns.distplot, 'Age')
图16:“性别”和“p-class”的“年龄”分布图
- 面网格可以按要求提供非常清晰的图形。
- sns.FacetGrid( col = ‘col’, row = ‘row’, data = data) 提供一个包含col和行中所有唯一类别的空网格。之后,我们可以使用不同的图和常见的变量来进行特殊的变化。
回归图
这是一个更高级的统计图,它提供了散点图以及对数据的线性拟合。
sns.lmplot(x='Age', y='PassengerId', data=df, hue='Sex)
图17:男女乘客年龄与身份证的回归图。
图17为男女乘客身份证与年龄的线性回归拟合。
总结
在本文中,我们看到了14种使用seaborn的可视化技术。
我相信数据可视化增强了我们对数据解释的理解和潜力。它给我们提供了更令人满意的技能来表示数据,输入缺失值,识别异常值,检测异常,以及更多。
数据分析师就像警察一样,需要询问数据并通过它们得到信息。使用合适的工具来完成这项工作是非常必要的。因此,我希望这篇文章能够成为您查询数据的工具。