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

2023-11-10

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')

分解代码

详情参阅 - 亚图跨际

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

透视Matplotlib核心功能和工具包 - Seaborn工具包 的相关文章

随机推荐

  • 2023通信工程专业毕设题目大全

    文章目录 1前言 2 如何选题 3 通信工程选题方向 3 1 移动通信方向 3 2 嵌入式开发方向 3 3 人工智能方向 3 4 物联网方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最
  • redis后端启动及关闭

    本文笔记为传智教程视频截图整理 redis前端启动 无法部署集群
  • 浅谈 malloc 函数在单片机上的应用

    聊聊 malloc函数 在单片机程序设计中怎么使用 目录 前言 一 malloc 函数简介 二 malloc 之于单片机 2 1 malloc 函数申请的内存在哪里 2 2 用与不用malloc的区别 三 malloc可能遇到的问题 3 1
  • RGMII时序约束

    RGMII是以太网MAC连接PHY的一种接口 可以实现10 100 1000M网络速度 在FPGA系统中比较常见 RGMII在1000M模式下是双沿采样 而且要求采样端是center aligned 所以其时序约束是比较复杂的 下面分TX和
  • Redis学习笔记04-基础知识

    测试性能 redis benchmark Redis官方提供的性能测试工具 参数选项如下 十六个数据库 默认使用的第0个 16个数据库为 DB 0 DB 15 默认使用DB 0 可以使用select n切换到DB n dbsize可以查看当
  • Java中的assert使用

    1 assertion 断言 是jdk1 4才开始支持的新功能 主要在开发和测试时开启 为保证性能 在正式发布后通常是关闭 2 Java中assertion与C中的assertion的区别在于 1 Java中是使用assert关键字去实现其
  • Derby 的安装&配置

    Derby 的安装 配置 原文 http zetcode com db apachederbytutorial install 在接下来的页面中 我们将展示如何安装 Derby 并根据需要配置 Derby 我们从 db apache org
  • redis安装教程

    redis安装教程 redis安装 redis安装教程 1 下载redis 2 解压 3 移动 放到usr local 录下 4 进 redis 录 5 生成 6 测试 这段运 时间会较 如果出现错误 此时需要安装tcl 如下 安装完tcl
  • Vue学习33----第三方日历组件ele-calendar 的使用(结合了lodash中的_.filter,_.find,_.map)

    文档地址 https www npmjs com package ele calendar https github com xuyanming ele calendar 效果图 组件
  • 面试题记录-- 对于软件测试的理解,测试的核心,测试策略

    记录面试遇到的题 个人理解 关于测试核心 怎么做好测试等等的问题 其实总结都是为了 预防 预防 预防 预防缺陷 把缺陷扼杀在摇篮里 测试效率 接口测试 敏捷 测试 你怎么看测试 软件测试是什么 分为哪几个阶段 怎么看测试 测试 已知测试需求
  • Java虚拟机基础知识整理

    文章目录 Java虚拟机基础知识整理 一 JVM的体系结构 二 类加载器详解 三 沙箱安全机制 一 沙箱安全发展历史 二 沙箱基本组件 四 Native以及方法区和寄存器 一 Native本地方法 二 PC寄存器 三 方法区 五 栈 Sta
  • JSP(机器调度问题)使用java进行数学建模并调用cplex求解

    机器调度问题 JSP问题 描述为 在给定每个工件的加工流程 每个工件使用机器的序列及每个工件每道工序的加工时间确定的情况下 安排工件的加工顺序 使得待加工的工件在机器上进行加工的最大完工时刻最小 接着上次的JSP模型 https blog
  • golang docker client通过ssh调用远程主机的接口

    golang通过tcp方式连接调用远程主机docker的接口 可参考 https mp csdn net mp blog creation editor 126315928 本文主要是用Go通过ssh方式连接到远程主机 调用docker接口
  • 配置chrony时间同步服务

    一 chrony简介 chrony 的优势 更快的同步 从而最大程度减少了时间和频率误差 对于并非全天 24 小时运行的虚拟计算机而言非常有用 能够更好地响应时钟频率的快速变化 对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言
  • Linux 免费学习路线大全,你想要的都在这里啦(持续更新,欢迎收藏❤️关注点赞加评论)

    为什么学 Linux 相比于 Windows Linux 免费 开源 安全 灵活 稳定 便于开发 所以更受企业青睐 甚至 90 以上 的企业应用都是用 Linux 服务器部署的 无论是前端 后端 算法 测试 运维等计算机相关岗位的同学 都建
  • Batch Normalization详解

    Batch Normalization 原理 1 Batch Normalization的提处背景 1 1 常见的帮助收敛的方法 在深度学习中 随着网络层数的加深 模型的收敛难度会越来越大 为了让模型更好的收敛 涌现出了各种各样的调参方法
  • Java8 HashMap源码解析

    HashMap底层数据结构 HashMap底层数据结构是 数组 链 如下图 当满足以下两个条件 链表会转为红黑树 1 数组长度等于或大于64 2 链表长度等于或大于8 如果数组长度小于64 链表长度等于或大于8 不会把链表转为红黑树 而是扩
  • SpringMVC中如何使用注解的方式实现文件上传呢?

    转自 SpringMVC中如何使用注解的方式实现文件上传呢 一 form表单注意事项 上传文件所处的表单 表单必须使用以下属性 enctype multipart form data method POST 二 applicationCon
  • vue-鉴权的两种方法之路由拦截

    vue中鉴权的两种方法 常用的鉴权有两种 一种是路由拦截 一种是动态路由 路由拦截 通过vue router的beforeEach方法进行每一次路由访问的拦截 判断拦截信息中是否有鉴权要求或者权限校验 以此来实现鉴权 如果权限不够 访问的路
  • 透视Matplotlib核心功能和工具包 - Seaborn工具包

    Seaborn是基于Matplotlib构建的功能强大的可视化工具 它使多变量探索性数据分析更加容易和直观 并且增加了一些新类型的图 并且其背景样式和颜色图更加令人愉悦 它具有许多内置的统计功能 使其成为统计数据分析的首选工具 它还具有非常