透视Matplotlib核心功能和工具包 - Seaborn工具包

Seaborn是基于Matplotlib构建的功能强大的可视化工具。 它使多变量探索性数据分析更加容易和直观,并且增加了一些新类型的图,并且其背景样式和颜色图更加令人愉悦。 它具有许多内置的统计功能,使其成为统计数据分析的首选工具。 它还具有非常详细的在线文档,您可以在以下位置找到https://seaborn.pydata.org/index.html。

我们将使用两个数据集来演示大多数海洋特征。 其中一个数据集“葡萄酒质量”,另一个是来自虚拟小吃店的小吃销售数据集。

关系图

小吃销售数据集

该数据集(在代码库中提供)包含有关给定日期,星期几,是否为周末以及当天是否促销的各种商品的销售信息。 我们拥有三年的数据:2015年,2016年和2017年。数据集的前五行如下所示:

图略

然后,我们将添加两个派生变量以帮助绘制所需的图形:month(1到12)和Quarter(1/4)。 添加这些变量后,前五行如下所示:

图略

以下代码块读取Excel文件并添加其他变量:

import pandas as pd
import numpy as np

snacks_sales = pd.read_csv('Snacks_Data.csv')
snacks_sales['Month'] = pd.DatetimeIndex(snacks_sales['Date']).month
Quarter_Mapping = {1:1, 2:1, 3:1, 4:2, 5:2, 6:2, 7:3, 8:3, 9:3, 10:4, 
                   11:4, 12:4}
snacks_sales['Quarter'] = snacks_sales['Month'].map(Quarter_Mapping)

葡萄酒质量数据集

该数据集具有11个影响葡萄酒质量的属性。 质量等级从3到8不等,然后我们将3和4映射到Low,将5和6映射到Med,将7和8映射到high以创建一个新变量:质量。

数据集的前五行如下所示:

图略

我们还将为葡萄酒质量数据集计算相关矩阵,我们将在一些图中使用该矩阵。

以下是用于读取其他变量并将其添加到Wine Quality数据集的代码块:

import pandas as pd

# Read the data from a csv file into pandas data frame
wine_quality = pd.read_csv('winequality.csv', delimiter=';')

# Map numeric Quality codes to 'Low', 'Med' and 'High' qualitative 
  ratings
quality_map = {3:'Low', 4: 'Low', 5:'Med', 6:'Med', 7:'High', 8:'High'}
wine_quality['Quality'] = wine_quality['quality'].map(quality_map)

# compute correlation matrix
corr = wine_quality.corr() 

# Display the first 5 records of wine_quality dataset, and unique 
  values of quality variable
wine_quality.head()
set(wine_quality.quality)

变量

除了将它们的关系绘制在二维图中的两个变量之外,seaborn还可以绘制三个附加变量对两个主要变量之间的关系的影响图。 这三个变量称为语义变量。 它们被称为色调,大小和样式,它们充当给定绘图功能的参数。

对于每个唯一的色调值,将有一个关系图。 同样,对于样式的每个唯一值,都会有一个关系图。 如果色调变量中有两个唯一值(例如,是和否),样式变量中有两个唯一值(例如,s和D标记),则将有2 * 2 = 4个关系图( 是&s,是&D,否&s,否&D组合)。 各种色调值以不同的颜色绘制,各种样式值以不同的线或标记样式绘制。

同样,大小变量会影响两个主要变量的绘制点的大小。 与Matplotlib散布函数不同,此处,大小可变范围分为多个容器,并将点分配给这些容器。 在Matplotlib散点函数中,每个点都分别映射为大小可变的不同值。

除了这三个语义变量外,seaborn还允许在row和col中添加另外两个变量,其中针对row / col变量的每个唯一值,将有一个图(轴),并将其布置在row / col中。 这些行和列变量称为构面变量,因为它们使我们能够了解其他构面对所绘制的两个主要变量的影响。

这些附加变量可以映射到要分析数据的各个维度,或者要分析两个变量之间的关系。 在典型的销售分析场景中,两个主要变量可以是销售额(单位或美元)或时间(天,月或季度),维度可以是业务单位,产品线,地区。

关系绘图

关系图描述了两个连续变量之间的关系。 seaborn中有一个常见的API,relplot(),用于两种类型的图:线图和散点图。 但是,这两种类型中的每一种都有单独的函数:lineplot()和scatterplot()。 我们可以使用带有参数的relplot()来绘制折线图或散点图,也可以直接使用lineplot()和scatterplot()函数。

一对一和一对多关系的线图

在线图中,观测值连接到可以自定义样式的线。 x和y变量之间的关系可以是一对一的,有时也可以是一对多的。 在我们的零食销售数据集中,如果我们根据日期或期间绘制每个商品的销售量,则这是一对一的关系,因为每对日期/期间和销售量只有一个观察值。 但是,如果我们按月销售,则每个月有30个观察值(销售记录),这是一对多的关系。

Seaborn提供了多种选择来绘制这两种类型的关系。

导入所需包:

import matplotlib.pyplot as plt
import seaborn as sns

步骤细节:

  • 设置背景样式:
sns.set(style='darkgrid')
  • 用图的标题在period和smoothies销售之间绘制折线图:
sns.relplot(x='Period', y='Smoothies', 
         data=snacks_sales.query('Period < 300'), kind='line')
plt.title('line plot', size=20, color='g')
  • 绘制period和smoothies销售之间的折线图,以星期几为色调:
day_order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 
             'Saturday', 'Sunday']
sns.relplot(x='Period', y='Smoothies', hue='daywk', 
            hue_order=day_order,
            data=snacks_sales.query('Period < 300'), kind='line')
plt.title('line plot with hue=daywk', size=20, color='g')
  • 以促销为色调在period和smoothies销售之间绘制折线图:
sns.relplot(x='Period', y='Smoothies', hue='Promotion', hue_order=
            ['Yes', 'No'],
            data=snacks_sales.query('Period < 300'), kind='line')
plt.title('line plot with hue=Promotion', size=20, color='g')
  • 在“period”和“smoothies”销售之间绘制折线图,其中“促销”为色调,“周末”为样式:
sns.relplot(x='Period', y='Smoothies', hue='Promotion', hue_order=
            ['Yes', 'No'], style='weekend', 
            style_order=['Y', 'N'], kind='line', 
            data=snacks_sales.query('Period < 300'))
plt.title('line plot with hue and style', size=20, color='g')

分解代码

详情参阅 - 亚图跨际

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值