机器学习 | 如何使用 Seaborn 提升数据分析效率

Seaborn和Matplotlib都是Python可视化库,它们都可以用于创建各种类型的图表。但是,Seaborn 和Matplotlib在概念和设计上有一些不同。

Matplotlib虽然已经是比较优秀的绘图库了,但是它有个今人头疼的问题,那就是API使用过于复杂,它里面有上千个函数和参数,属于典型的那种可以用它做任何事,却无从下手。

Seaborn基于Matplotlib核心库进行了更高级的APl封装,可以轻松地画出更漂亮的图形,而Seaborn的漂亮主要体现在配色更加舒服,以及图形元素的样式更加细腻。以下是两者之间的区别所在:

设计理念上的差异: Matplotlib是一个基础绘图库,提供了多种绘图工具,但大部分需要手动设置图表的各种属性。Seaborn则是在Matplotlib的基础上进行了封装,并提供了更高级别、更简洁的API。Seaborn的目标是使用少量的代码创建美观的图表,而不需要繁琐的设置。

默认样式的不同: Matplotlib的默认样式比较简单,需要手动设置才能使图表更加美观。Seaborn 使用了更加现代、美观的默认样式,并提供了多种内置的主题,使得图表的创建更加容易。

统计数据可视化功能: Seaborn的设计初衷是为了可视化统计数据,因此它提供了许多用于可视化统计数据的函数,例如分类散点图、分布图、热力图等。这些函数通常比Matplotlib更高效,更易于使用。

多变量数据可视化功能: Seaborn提供了许多用于可视化多变量数据的函数,例如矩阵图、成对图等。这些函数使得分析多变量数据更加容易。

总的来说,Seaborn具有更高级别、更简洁的API,适用于可视化统计数据和多变量数据。它的默认样式更加美观,使用更加方便。Matplotlib则是一个更加灵活、可定制性更强的绘图库,适用于创建各种类型的图表。大家可以根据自身情况选择合适的绘图库,接下来在开始讲解如何使用本次的Seaborn绘制图表之前,需要安装和导入绘图的接口,代码如下:

pip install seaborn -i https://pypi.mirrors.ustc.edu.cn/simple

目录

绘制单变量分布

绘制双变量分布

分类数据绘图


当处理一组数据时,通常先要做的就是了解变量是如何分布的。

1)对于单变量的数据来说采用直方图或核密度曲线是个不错的选择

2)对于双变量来说,可采用多面板图形展现,比如散点图、二维直方图、核密度估计图形等

针对这种情况,Seaborn库提供了对单变量和双变量分布的绘制函数,如histplot函数、displot函数,下面来介绍这些函数的使用,具体内容如下:

绘制单变量分布

可以采用最简单的直方图描述单变量的分布情况。Seaborn中提供了histplot和displot函数,它默认绘制的是一个带有核密度估计曲线的直方图。distplotO函数的语法格式如下。

# a: 表示要观察的数据,可以是Seies、一维数组或列表。
# bins:用于控制条形的数量。
# kde:接收布尔类型,表示是否绘制高斯核密度估计曲线。
# mg: 接收布尔类型,表示是否在支持的轴方向上绘制rugplot。
seaborn.displot(a, bins=None, kde=True, rug=False, fit=None, color=None)

呈现的效果如下所示:

绘制双变量分布

两个变量的二元分布可视化也很有用。在Seaborn中最简单的方法是使用jointplot()函数,该函数可以创建一个多面板图形,比如散点图、二维直方图、核密度估计等,以显示两个变量之间的双变量关系及每个变量在单坐标轴上的单变量分布。

jointplot()函数的语法格式如下。

# kind:表示绘制图形的类型。
# stat_fune:用于计算有关关系的统计量并标注图。
# color:表示绘图元素的颜色。
# height:用于设置图的大小(正方形)。
# ratio:表示中心图与侧边图的比例。该参数的值越大,则中心图的占比会越大。
# space:用于设置中心图与侧边图的间隔大小。
seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, ratio=5, space=0.2, dropna=True)

下面以散点图、二维直方图、核密度估计曲线为例,介绍如何使用Seaborn绘制这些图形。

绘制散点图:调用seaborn.jointplot()函数绘制散点图的示例如下。

import seaborn as sns
import numpy as np
import pandas as pd

# 创建DataFrame对象
df = pd.DataFrame({ "x": np.random.randn(500), "y": np.random.randn(500) })

# 绘制散点图
sns.jointplot(x="x", y="y", data=df, color='r', height=5, ratio=10, space=1)

上述示例中,首先创建了一个DataFrame对象df作为散点图的数据,其中x轴和y轴的数据均为500个随机数,接着调用jointplot()函数绘制一个散点图,散点图x轴的名称为“x",y轴的名称为“y”。运行结果如图所示。 

绘制二维直方图:二维直方图类似于“六边形"图,主要是因为它显示了落在六角形区域内的观察值的计数,适用于较大的数据集。当调用jointplot()函数时,只要传入kind="hex",就可以绘制二维直方图,具体示例代码如下。

#绘制二维直方图
sns.jointplot(x="x", y="y", data=df, kind="hex")

运行结果如图所示:

从六边形颜色的深浅,可以观察到数据密集的程度,另外,图形的上方和右侧仍然给出了直方图。注意,在绘制二维直方图时,最好使用白色背景。 

绘制核密度估计图形:利用核密度估计同样可以查看二元分布,其用等高线图来表示。当调用jointplot()函数时只要传入ind="kde",就可以绘制核密度估计图形,具体示例代码如下。

sns.jointplot(x="x", y="y", data=df, kind="kde", color='r', height=5, ratio=10, space=1)

上述示例中,绘制了核密度的等高线图,另外,在图形的上方和右侧给出了核密度曲线图。运行结果如图所示。 

如果想加上阴影的话可以输入 fill = True 即可,效果如下:

绘制成对双变量分布:要想在数据集中绘制多个成对的双变量分布,则可以使用pairplot()函数实现,该函数会创建一个坐标轴矩阵,并且显示Datafram对象中每对变量的关系。另外,pairplot()函数也可以绘制每个变量在对角轴上的单变量分布。

接下来,通过sns.pairplot()函数绘制数据集变量间关系的图形,示例代码如下:

import seaborn as sns
import numpy as np
import pandas as pd

# 加载seaborn中的数据集
dataset = sns.load_dataset("iris")
dataset.head()

通过load_dataset()函数加载了seaborn中内置的数据集,根据iris数据集绘制多个双变量分布。 

# 绘制多个成对的双变量分布
sns.pairplot(dataset)

最终呈现的效果如下:

分类数据绘图

数据集中的数据类型有很多种,除了连续的特征变量之外,最常见的就是类别型的数据了,比如人的性别、学历、爱好等,这些数据类型都不能用连续的变量来表示,而是用分类的数据来表示。

Seaborn针对分类数据提供了专门的可视化函数,这些函数大致可以分为如下三种:

1)类数据散点图:swarmplot()与stripplot()。

2)数据的分布图:boxplot()与violinplot()。

3)类数据的统计估算图:barplot()与pointplot()。

下面将针对分类数据可绘制的图形进行简单介绍,具体内容如下:

类别散点图:通过stripplot()函数可以画一个散点图,stripplot()函数的语法格式如下。

# x, y, hue:用于绘制长格式数据的输入。
# data:用于绘制的数据集。如果x和y不存在,则它将作为宽格式,否则将作为长格式。
# jitter:表示抖动的程度(仅沿类别轴)。当很多数据点重叠时,可以指定抖动的数量或者设为Tue使用默认值。
seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=False)

接下来,通过stripplot()

import seaborn as sns
import numpy as np
import pandas as pd

# 获取tips数据
data = sns.load_dataset("tips")
sns.stripplot(x="day", y="total_bill", data=data, hue="time")

运行结果如下:

如果想让数据进行重叠可以采用如下的方式:

除此之外,还可调用swarmplot()函数绘制散点图,该函数的好处是所有的数据点都不会重叠,可以很清晰地观察到数据的分布情况,示例代码如下。

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

类别内的数据分布:要想查看各个分类中的数据分布,显而易见,散点图是不满足需求的,原因是它不够直观。针对这种情况,我们可以绘制如下两种图形进行查看:

以下是绘制箱形图的相关概念:

seaborn中用于绘制箱形图的函数为boxplot(),其语法格式如下:

# palette:用于设置不同级别色相的颜色变量。---palette=["r","g","b","y"]
# saturation:用于设置数据显示的颜色饱和度。----使用小数表示
seaborn.boxplot(x=None, y=None, hue=None, data=None, orient=None, color=None, saturation=0.75, width=0.8)

具体代码如下:

import seaborn as sns
import numpy as np
import pandas as pd

# 获取数据
data = sns.load_dataset("tips")

# 绘制箱形图
sns.boxplot(x="day", y="total_bill", data=data, hue="time", palette=["g", "r"], saturation=0.5)

最终呈现的效果如下所示:

以下是绘制小提琴图的相关概念: 

seaborn中用于绘制小提琴图的函数为violinplot(),其语法格式如下: 

seaborn.violinplot(x=None, y=None, hue=None, data=None)

最终呈现的效果如下所示: 

类别内的统计估计:要想查看每个分类的集中趋势,则可以使用条形图和点图进行展示。Seaborn库中用于绘制这两种图表的具体函数如下:

1)barplot()函数:绘制条形图。

2)pointplot()函数:绘制点图。

使用barplot函数示例如下:

使用pointplot函数示例如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/353913.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Blender教程(基础)-物体的移动、旋转与缩放-04

一、新建一个立方体 ShiftA新建一个立方体用来演示。 二、物体的移动 xyz轴移动 点击下图图左侧的移动选项后,选中要移动的物体,会出现三个箭头的方向,这分别代表沿着x、y、z轴移动。xyz平面移动 这个小正方体代表沿着某一个面移动&#…

04.领域驱动设计:了解聚合和聚合根,怎样设计聚合

目录 1、概述 2、聚合 3、聚合根 4、怎么设计聚合 4.1 聚合的构建过程主要步骤 第 1 步:采用事件风暴。 第 2 步:选出聚合根。 第 3 步:找出与聚合根关联的所有紧密依赖的实体和值对象。 第 4 步:画出对象的引用和依赖模型…

vue3框架基本使用

一、安装包管理工具 vite和vue-cli一样,都是脚手架。 1.node版本 PS E:\vuecode\vite1> node -v v18.12.12.安装yarn工具 2.1 yarn简单介绍 yarn是一个包管理工具,也是一个构建、打包工具 yarn需要借助npm进行安装:执行的命令行npm i…

找不同-《企业应用架构模式》2024典藏版

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 以下是2004年《企业应用架构模式》中译本和2024年《企业应用架构模式》典藏版译本的页面。 您能从中找出至少10处不同吗? 如何选择UMLChina服务 UMLChina公众号精选&…

Blender教程(基础)-面的细分与删除、挤出选区-07

一、Blender之面的细分 新建一个立方体,在编辑模式下、选中一个面。 在选中的面上单击右键弹出细分选项,选择细分。 在选中细分后、会默认细分1次。修改细分次数在左下角 二、Blender之面的删除 选择中需要操作的面,在英文状态下按X键弹…

VSCode 1.85.0更新的3个实用功能

1、单个文件可直接拖拽为独立窗口 当单文件过长,直接分成两个视图就不用上下频繁滚动 2、将终端移动到编辑器区域 此时,终端也可像文件一样拖拽为独立窗口 3、文件夹目录粘性头部 默认关闭,需要设置 "workbench.tree.enableStickyScro…

Linux权限的概念,shell命令以及运行原理

目录 1.shell命令以及运行原理2.Linux权限2.1Linux中的两类用户2.2Linux权限管理2.2.1文件访问者的分类(人)2.2.2文件类型和访问权限(事物属性)2.2.3文件的类型以及权限的缩写2.2.4文件权限值的表示方法2.2.5文件访问权限的相关设…

HTML 曲线图表特效

下面是代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>基于 ApexCharts 的 HTML5 曲线图表DEMO演示</title><style> body {background: #000524; }#wrapper {padding-top: 20px;background: #000524;b…

opencv#33 边缘检测

边缘检测原理 图像的每一行每一列都可以看成是一个连续的信号经过离散后得到的数值&#xff0c;例如上图左侧给出的图像由黑色到白色的一个信号&#xff0c;也就是图像中某一行像素变化是由黑色逐渐到白色&#xff0c;我们将其对应在一个坐标轴中&#xff0c;将像素值的大小对应…

sysfs: cannot create duplicate filename ‘/devices/virtual/leds/led1‘问题查找及解决

问题描述&#xff1a;安装模块时出现如下错误&#xff1a; [rootVinxin_PC leds]# cd /driver_Test/ [rootVinxin_PC driver_Test]# ls app leds-s5pv210.ko [rootVinxin_PC driver_Test]# lsmod Module Size Used by Not tainted [rootVin…

最全全国十七个数据入表和资产化案例深度解析

2024年1月1日起&#xff0c;财政部会计司发布的《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;规定为数据资源的会计处理提供了明确的指导原则。这一里程碑事件也标志着我国在数据资产入表领域正式进入实际操作阶段&#xff0c;随后&#xff0c;数据资产入表在全国…

stable diffusion学习笔记——文生图(一)

模型设置 基本模型 基本模型也就是常说的checkpoint&#xff08;大模型&#xff09;&#xff0c;基本模型决定了生成图片的主体风格。 如上图所示&#xff0c;基本模型的后缀为.safetensors。需要存放在特定的文件夹下。 如果用的是启动器&#xff0c;可以在启动器内直接下载。…

2024年黑龙江省安全员C证证考试题库及黑龙江省安全员C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年黑龙江省安全员C证证考试题库及黑龙江省安全员C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考…

(java)idel中将对与json的相互转

1、目录结构 2、导入包 在模块下面建立lib目录将包导入模块中 包的百度网盘 链接&#xff1a;https://pan.baidu.com/s/1abNF8cOTeNb00rM7tp04iQ?pwd39wc 提取码&#xff1a;39wc 3、建立两个测试类person和dog类 public class Dog {private String name;private int age…

STM32标准库——(5)EXTI外部中断

1.中断系统 中断&#xff1a;在主程序运行过程中&#xff0c;出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;使得CPU暂停当前正在运行的程序&#xff0c;转而去处理中断程序&#xff0c;处理完成后又返回原来被暂停的位置继续运行 中断优先级&#xff…

CMake 完整入门教程(一)

1 前言 每一次学习新东西都是很有乐趣的&#xff0c;虽然刚开始会花费时间用来学习&#xff0c;但是实践证明&#xff0c;虽然学习新东西可能会花费一些时间&#xff0c;但是它们带来的好处会远远超过这些花费的时间。学习新东西是值得的&#xff0c;也是很有乐趣的。 网络上…

六、Kotlin 类型进阶

1. 类的构造器 & init 代码块 1.1 主构造器 & 副构造器在使用时的注意事项 & 注解 JvmOverloads 推荐在类定义时为类提供一个主构造器&#xff1b; 在为类提供了主构造器的情况下&#xff0c;当再定义其他的副构造器时&#xff0c;要求副构造器必须调用到主构造器…

安全防御{第三次作业(在第二次作业上添加点需求)}

目录 需求&#xff1a; 拓扑图&#xff1a; 注意&#xff1a;先打开防火墙web界面&#xff0c;在此不做演示 1.要求一&#xff1a;&#xff0c;生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器 2.要求二&#xff1a;办公区全天可以访问服务器区&#…

RISC-V RVWMO 内存模型解释

RISC-V RVWMO 内存模型解释 引言 本文介绍 RISC-V RVWMO 内存模型。RVWMO 内存模型定义了什么样的全局内存顺序才是合法的。本引言部分将解释为什么会出现不合法的全局内存顺序&#xff0c;以及为什么需要内存模型。 首先引起乱序的全局内存顺序&#xff08;指令重排序&…

静态分析C语言生成函数调用关系的利器——cally和egypt

大纲 准备工作安装graphviz安装cally安装egypt简单分析GCC产生RTL&#xff08;Register transfer language&#xff09;文件callyegypt总结 高级分析callyegypt 总结参考资料 在《静态分析C语言生成函数调用关系的利器——cflow》和《静态分析C语言生成函数调用关系的利器——c…