14个Seaborn数据可视化图

2020-10-19 15:59:24 浏览数 (1)

调查数据并从中提取信息和趋势的工具。

绿色代表新的开始和成长,也意味着更新和丰富。

数据可视化在数据挖掘中起着非常重要的作用。各种数据科学家花费了他们的时间通过可视化来探索数据。为了加快这一进程,我们需要有合适的工具。

没有规划的情况下,资源也无法转化为有价值的商品。因此,我希望本文能够为您提供关于所有可视化方法的架构。

目录

  1. 简介
  2. 了解你的数据
  3. 分布曲线 a. 直方图b. 联合图c. 配对图d. Rug图
  4. 分布图a. 条形图b. 统计图c. 箱型图d. Violin图
  5. 高级绘制方法a. Strip图b. Swarm图
  6. 矩阵图a. Heat Mapb. Cluster Map
  7. 网格a. Facet Grid
  8. 回归图

简介

Seaborn是一个基于matplotlib的Python数据可视化库。它提供了一个高级界面,以绘制曲线和信息统计图形。

您可以在命令行中运行以下任何一个命令来安装Seaborn。

代码语言:javascript复制
pip install seaborn
conda install seaborn

运行以下命令可以导入seaborn。

代码语言:javascript复制
import seaborn as sns

了解你的数据

图中使用的数据集为著名的泰坦尼克数据集(图1),下面将数据集用变量df表示。

图1:泰坦尼克数据集

分布曲线

我们可以使用这些图来理解数据的平均值、中位数、范围、方差、偏差等。

a. 直方图
  • Dist plot给出了所选连续变量的直方图。
  • 这是单变量分析的一个例子。
  • 我们可以改变箱子的数量,即直方图中垂直条的数量
代码语言:javascript复制
import seaborn as sns
sns.distplot(x = df['age'], bins = 10)

图2:乘客“年龄”分布图。

  • 这里x轴表示年龄,y轴表示频率。例如,对于Bins= 10的分布图,大约有50个人年龄在0到10岁之间
b.联合图
  • 它是两个变量的组合。
  • 这是一个二元分析的例子。
  • 我们还得到了变量之间的散点图来反映它们的线性关系。我们可以自定义散点图为六边形图,其中,颜色越深,出现的次数就越多。
代码语言:javascript复制
import seaborn as sns
# For Plot 1
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'scatter')# For Plot 2
sns.jointplot(x = df['age'], y = df['Fare'], kind = 'hex')

图3:“年龄”和“票价”的联合图

  • 我们可以看到,年龄和票价之间并没有合适的线性关系。
  • kind = ' hex '提供了六边形图,kind = ' reg '提供了图形上的回归线。
c.配对图
  • 它取数据的所有数值属性,绘制两个不同变量的两两散点图和同一变量的直方图。
代码语言:javascript复制
import seaborn as sns
sns.pairplot(df)

图4:泰坦尼克号数据集配对图

d.Rug图
  • 它画了一条线,而不是像在直方图中那样二维分布图。
  • 这是单变量分析的一个例子。
代码语言:javascript复制
import seaborn as sns
sns.rugplot(x = df['Age'])

图5:乘客“年龄”的Rug图

分类图

这些图帮助我们理解分类变量。我们可以用它们进行单变量和双变量分析。

a.条形图
  • 这是一个二元分析的例子。
  • 在x轴上有一个分类变量,在y轴上有一个连续变量。
代码语言:javascript复制
import seaborn as sns
sns.barplot(x = df['Sex'], y = df['Fare'])

图6:“车费”和“性别”的条形图

  • 我们可以推断出女性的平均票价比男性高。
b.统计图
  • 它计算分类变量出现的次数。
  • 这是单变量分析的一个例子。
代码语言:javascript复制
import seaborn as sns
sns.countplot(df['Pclass'])

图7:是否幸存和' P-class '的计数图。

c.箱型图
  • 这是一个总结图。它给出了一个连续变量的最大值、最小值、平均值、第一个四分位数和第三个四分位数的信息。同时,它让我们掌握了离群值的信息。
  • 我们可以对一个连续变量进行绘图,也可以根据一个连续变量分析不同的分类变量。
代码语言:javascript复制
import seaborn as sns
#For plot 1
sns.countplot(df['Pclass'])#For plot 2
sns.boxplot(y = df['Age'], x = df['Sex'])

图8:a)“年龄”的箱形图,b)“年龄”和“性别”不同类别的箱形图

d.Violin图

它类似于箱型图,但它也提供了关于数据分布的补充信息。

代码语言:javascript复制
import seaborn as sns
sns.violinplot(y = df['Age'], x = df['Sex'])

图9:“年龄”和“性别”之间的violin图

高级绘制方法

a.strip图
  • 这是一个连续变量和分类变量之间的图。
  • 它以散点图为主,但补充使用分类变量的分类编码。
代码语言:javascript复制
import seaborn as sns
sns.stripplot(y = df['Age'], x = df['Pclass'])

图10:“年龄”与“p-class”之间的条形图

  • 我们可以看到,1班和2班没有10岁左右的儿童,60岁以上的儿童多集中在1班。
  • 通常,这种图被用来填补缺失值。
b.swarm图
  • 这是一个strip图和violin图的结合。
  • 除了数据点的数量,它还提供了它们各自的分布。
代码语言:javascript复制
import seaborn as sns
sns.swarmplot(y = train['Age'], x = train['Pclass'])

图11:‘年龄’与‘P-class’之间的swarm图

矩阵图

这些是使用二维矩阵数据进行可视化的特殊类型的图形。由于矩阵数据的维数较大,很难对其进行分析和可视化。因此,通过为矩阵数据提供颜色编码,使这个更容易。

a.热力图
  • 在给定的原始数据集“df”中,我们有七个数值变量。那么,让我们在这七个变量之间生成一个相关矩阵。
代码语言:javascript复制
df.corr()

图12:关联矩阵

  • 虽然只有49个值,但要读取每个值似乎非常困难。因为我们遍历数以千计的特征。 所以,让我们尝试实现一些颜色编码,这会大大简化模型。
代码语言:javascript复制
sns.heatmap(df.corr(), annot = True, cmap = 'viridis')

图13:泰坦尼克号数据集的关联矩阵热图。

  • 同样的矩阵现在表达了更多的信息。
  • 另一个非常明显的例子是使用heatmap来理解缺失的值。在图14中,黄色的虚线表示一个缺失的值,因此它使我们的任务更容易识别缺失的值。
代码语言:javascript复制
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')

图14:泰坦尼克号数据中缺失值的热图。

b.聚类图
  • 如果我们有一个矩阵数据,并想要根据其相似性对一些特征进行分组,聚类映射可以帮助我们。先看一下热图(图13),然后再看一下聚类图(图15)。
代码语言:javascript复制
sns.clustermap(tran.corr(), annot='True',cmap='viridis')

图15:泰坦尼克号数据关联矩阵的聚类图

  • x-label和y-label是一样的,但是它们协调的方式不同。这是因为它们是根据它们的相似性分组的。
  • 顶部和左侧的类似流程图的结构描述了它们的相似程度。
  • 聚类图使用层次聚类来形成不同的集群。

网格

网格图为我们提供了对可视化的更多控制,并通过一行代码绘制各种各样的图形。

a.面网格
  • 假设我们想要绘制所有三类票中男性和女性的年龄分布,我们总共有6个图。
代码语言:javascript复制
sns.FacetGrid(train, col = 'Pclass', row = 'Sex').map(sns.distplot, 'Age')

图16:“性别”和“p-class”的“年龄”分布图

  • 面网格可以按要求提供非常清晰的图形。
  • sns.FacetGrid( col = ‘col’, row = ‘row’, data = data) 提供一个包含col和行中所有唯一类别的空网格。之后,我们可以使用不同的图和常见的变量来进行特殊的变化。

回归图

这是一个更高级的统计图,它提供了散点图以及对数据的线性拟合。

代码语言:javascript复制
sns.lmplot(x = 'Age', y = 'PassengerId', data = df, hue = 'Sex)

图17:男女乘客年龄与身份证的回归图。

图17为男女乘客身份证与年龄的线性回归拟合。

总结

在本文中,我们看到了14种使用seaborn的可视化技术。

我相信数据可视化增强了我们对数据解释的理解和潜力。它给我们提供了更令人满意的技能来表示数据,输入缺失值,识别异常值,检测异常,以及更多。

数据分析师就像警察一样,需要询问数据并通过它们得到信息。使用合适的工具来完成这项工作是非常必要的。因此,我希望这篇文章能够成为您查询数据的工具。

作者:Aayush Ostwal

deephub翻译组:孟翔杰

0 人点赞