📜  海运 |分类图

📅  最后修改于: 2022-05-13 01:55:38.501000             🧑  作者: Mango

海运 |分类图

绘图基本上用于可视化变量之间的关系。这些变量可以是完全数字的,也可以是像组、类或部门这样的类别。本文处理分类变量以及如何使用Python提供的Seaborn 库将它们可视化。

Seaborn除了是一个统计绘图库外,还提供了一些默认数据集。我们将使用一个名为“tips”的默认数据集。 “小费”数据集包含有关可能在餐厅用餐的人的信息,以及他们是否给服务员留下小费、他们的性别、是否吸烟等信息。
让我们看一下tips数据集。

代码

Python3
# import the seaborn library
import seaborn as sns
 
# import done to avoid warnings
from warnings import filterwarnings
 
# reading the dataset
df = sns.load_dataset('tips')
 
# first five entries if the dataset
df.head()


Python3
# set the background style of the plot
sns.set_style('darkgrid')
 
# plot the graph using the default estimator mean
sns.barplot(x ='sex', y ='total_bill', data = df, palette ='plasma')
 
# or
import numpy as np
 
# change the estimator from mean to standard deviation
sns.barplot(x ='sex', y ='total_bill', data = df,
            palette ='plasma', estimator = np.std)


Python3
sns.countplot(x ='sex', data = df)


Python3
sns.boxplot(x ='day', y ='total_bill', data = df, hue ='smoker')


Python3
sns.violinplot(x ='day', y ='total_bill', data = df, hue ='sex', split = True)


Python3
sns.stripplot(x ='day', y ='total_bill', data = df,
              jitter = True, hue ='smoker', dodge = True)


Python3
sns.swarmplot(x ='day', y ='total_bill', data = df)


Python3
sns.violinplot(x ='day', y ='total_bill', data = df)
sns.swarmplot(x ='day', y ='total_bill', data = df, color ='black')


Python3
sns.factorplot(x ='day', y ='total_bill', data = df, kind ='bar')



现在让我们继续进行绘图,以便我们可以如何可视化这些分类变量。

条形图

条形图基本上用于根据某些方法聚合分类数据,默认情况下是平均值。也可以理解为按动作分组的可视化。为了使用这个图,我们为 x 轴选择一个分类列,为 y 轴选择一个数值列,我们看到它创建了一个图,每个分类列都取平均值。

句法:

barplot([x, y, hue, data, order, hue_order, …])

例子:

Python3

# set the background style of the plot
sns.set_style('darkgrid')
 
# plot the graph using the default estimator mean
sns.barplot(x ='sex', y ='total_bill', data = df, palette ='plasma')
 
# or
import numpy as np
 
# change the estimator from mean to standard deviation
sns.barplot(x ='sex', y ='total_bill', data = df,
            palette ='plasma', estimator = np.std)

输出:

解释/分析
从情节来看,我们可以说男性的平均总账单比女性多。

  • 调色板用于设置绘图的颜色
  • 估计器用作每个分类箱内估计的统计函数。

计数图

计数图基本上计算类别并返回它们出现的计数。它是 seaborn 库提供的最简单的绘图之一。

句法:

countplot([x, y, hue, data, order, …])

例子:

Python3

sns.countplot(x ='sex', data = df)

输出:

解释/分析
查看该图,我们可以说数据集中男性的数量多于女性的数量。由于它只返回基于分类列的计数,我们只需要指定 x 参数。

箱形图

箱线图有时被称为箱线图。它显示了代表变量之间比较的定量数据的分布。箱线图显示数据集的四分位数,而胡须延伸以显示分布的其余部分,即表示异常值存在的点。

句法:

boxplot([x, y, hue, data, order, hue_order, …])

例子:

Python3

sns.boxplot(x ='day', y ='total_bill', data = df, hue ='smoker')

输出:

解释/分析——
x 取分类列,y 是数值列。因此我们可以看到每天花费的总账单。“hue”参数用于进一步添加分类分隔。通过查看情节,我们可以说不吸烟的人周五的账单比吸烟的人高。

小提琴情节

它类似于箱线图,只是它提供了更高、更高级的可视化,并使用核密度估计来更好地描述数据分布。

句法:

violinplot([x, y, hue, data, order, …])

例子:

Python3

sns.violinplot(x ='day', y ='total_bill', data = df, hue ='sex', split = True)

输出:

解释/分析——

  • 色调用于使用性别类别进一步分离数据
  • 设置 split=True 将为每个级别绘制一半的小提琴。这可以更容易直接比较分布。

条形图

它基本上根据类别创建散点图。

句法:

stripplot([x, y, hue, data, order, …])

例子:

Python3

sns.stripplot(x ='day', y ='total_bill', data = df,
              jitter = True, hue ='smoker', dodge = True)

输出:

解释/分析——

  • 带状图的一个问题是,您无法真正分辨出哪些点堆叠在一起,因此我们使用 jitter 参数来添加一些随机噪声。
  • jitter 参数用于添加一定量的抖动(仅沿分类轴),当您有许多点并且它们重叠时,这可能很有用,以便更容易查看分布。
  • 色调用于提供额外的分类分离
  • 设置 split=True 用于根据 hue 参数指定的类别绘制单独的条形图。

群图

它与带状图非常相似,只是点被调整为不重叠。有些人还喜欢将小提琴图和带状图的想法结合起来形成这个图。使用 swarmplot 的一个缺点是有时它们不能很好地扩展到非常大的数字,并且需要大量计算来排列它们。因此,如果我们想正确地可视化一个 swarmplot,我们可以将它绘制在小提琴图之上。

句法:

swarmplot([x, y, hue, data, order, …])

例子:

Python3

sns.swarmplot(x ='day', y ='total_bill', data = df)

输出:

例子:

Python3

sns.violinplot(x ='day', y ='total_bill', data = df)
sns.swarmplot(x ='day', y ='total_bill', data = df, color ='black')

输出:

因子图

它是所有这些绘图中最通用的,并提供了一个名为 kind 的参数来选择我们想要的绘图类型,从而使我们免于单独编写这些绘图的麻烦。 kind 参数可以是 bar、violin、swarm 等。

句法:

sns.factorplot([x, y, hue, data, row, col, …])

例子:

Python3

sns.factorplot(x ='day', y ='total_bill', data = df, kind ='bar')

输出: