Seaborn 入门

2023-11-19

一、Seanborn 

    Seaborn是基于Matplotlib的Python数据可视化库,对matplotlib进行二次封装而成。它提供了一个高级界面,用于绘制引人入胜且内容丰富的统计图形,只是在Matplotlib上进行了更高级的API封装,从而使作图更加容易。

    Seaborn是针对统计绘图的,能满足数据分析90%的绘图需求,需要复杂的自定义图形还需要使用到Matplotlib

Seaborn解决Matplotlib面临的两个主要问题

  • 默认Matplotlib参数
  • 使用Data FrameSeaborn

Seaborn官网:http://seaborn.pydata.org/ 

 

二、Seaborn特点

  1. 绘图接口更为集成,可通过少量参数设置实现大量封装绘图
  2. 多数图表具有统计学含义,例如分布、关系、统计、回归等
  3. 对Pandas和Numpy数据类型支持非常友好
  4. 风格设置更为多样,例如风格、绘图环境和颜色配置等

三、Seaborn库

四、Seaborn 环境配置

         安装:pip install seaborn
     

五、 Seaborn 导入数据

1、从导入Pandas开始,Pandas是用于管理关系数据集, Seaborn在处理DataFrames时非常方便,DataFrames是用于数据分析最广泛使用的数据结构。

# Pandas for managing datasets
import pandas as pd

2、导入Matplotlib库

# Matplotlib for additional customization
from matplotlib import pyplot as plt

3、导入Seaborn库   

import seaborn as sns 

加载内置数据集:https://github.com/mwaskom/seaborn-data

4、导入数据框

  加载所需的数据集load_dataset()

import seaborn as sns

#加载数据
tips=sns.load_dataset('tips')
# tips

# 计算小费百分比
tips['tip_pct']=tips['tip']/(tips['total_bill']-tips['tip'])

#显示前5条
tips.head()

 输出-

要查看Seaborn库中的所有可用数据集,可以将以下命令与 get_dataset_names()函数一起使用 

import seaborn as sns
import matplotlib.pyplot as plt

#设置中文
plt.rcParams['font.sans-serif']='Microsoft YaHei'
plt.rcParams['font.size']=14

#必须去除警告信息
import warnings # 去除部分警告信息
warnings.filterwarnings('ignore')

#seaborn中有内置的数据集,获得所有的名字(必须有网络)
names=sns.get_dataset_names()
print(names)

输出的数据集列表

 六、Seaborn - 可视化数据

 

 1、条形图

    官网:http://seaborn.pydata.org/generated/seaborn.barplot.html

     seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

参数:

data: pandas.dataframe对象

x:绘图的x轴变量

y:绘图的y轴变量

hue:区分维度,不同类别的曲线添加不同颜色

orient:  “v” | “h”, 可选图的方向(垂直或水平)

estimator:用于估计每个分类箱内的统计函数,默认为mean。当然你也可以设置estimator=np.median/np.std/np.var……

order:设置特征值的顺序,例如:order=[‘Sat’,‘Sun’];

ci:允许的误差的范围(控制误差棒的百分比,在0-100之间),若填写"sd",则用标准误差(默认为95),也可设置ci=None;

capsize:设置误差棒帽条(上下两根横线)的宽度,float;

errcolor:表示置信区间的线条的颜色;

errwidth:float,设置误差条线(和帽)的厚度。

注意:x、y和hue均为源于data中的某一列值

#设置画布
sns.set(rc={'figure.figsize':(4,3)})
#条形图
sns.barplot(data=tips,x='tip_pct',y='day')
# 柱子的值表示tip_pct的平均值,黑线表示%95的置信区间

 

import numpy as np
#设置画布
sns.set(rc={'figure.figsize':(10,5)})
#条形图
sns.barplot(data=tips,x='tip_pct',y='day',hue='sex',estimator=np.median,capsize=0.2,errcolor='c')

 

# 直方图是一种条形图,用于给出频率的离散显示。数据点被分成离散的,均匀间隔的箱,并且绘制每个箱中数据点的数量。

import seaborn as sns
#加载数据
tips=sns.load_dataset('tips')
#tips.head()

#设置画布
sns.set(rc={'figure.figsize':(4,3)})
#小费比例
tips['tip_pct']=tips['tip']/(tips['total_bill']-tips['tip'])

# 使用之前的小费数据制作小费占总费用百分比的直方图
tips['tip_pct'].plot.hist(bins=50)

 

# 密度图是一种和直方图相关的图表类型,它通过计算可能产生观测数据的连续概率分布估计而产生。
# 通常的做法是将这种分布近似为’内核’的混合,也就是像正态分布那样简单的分布。
# 因此密度图也称为内核密度估计图
tips['tip_pct'].plot.density()

 

2、直方图

官网:http://seaborn.pydata.org/generated/seaborn.displot.html

    distplot主要功能是绘制单变量的直方图,且还可以在直方图的基础上施加kdeplot和rugplot的部分内容,是一个功能非常强大且实用的函数      

    seaborn.displot(data=None, *, x=None, y=None, hue=None, row=None, col=None, weights=None, kind='hist', rug=False, rug_kws=None, log_scale=None, legend=True, palette=None, hue_order=None, hue_norm=None, color=None, col_wrap=None, row_order=None, col_order=None, height=5, aspect=1, facet_kws=None, **kwargs)

参数:              

data: pandas.dataframe对象

x:绘图的x轴变量

y:绘图的y轴变量

hue:区分维度,不同类别的曲线添加不同颜色 bins:int型变量,用于确定直方图中显示直方的数量,默认为None,这时bins的具体个数由Freedman-Diaconis准则来确定

        hist:bool型变量,控制是否绘制直方图,默认为True

        kde:bool型变量,控制是否绘制核密度估计曲线,默认为True

        rug:bool型变量,控制是否绘制对应rugplot的部分,默认为False

fit:传入scipy.stats中的分布类型,用于在观察变量上抽取相关统计特征来强行拟合指定的分布,下文的例子中会有具体说明,默认为None,即不进行拟合 hist_kws,kde_kws,rug_kws:这几个变量都接受字典形式的输入,键值对分别对应各自原生函数中的参数名称与参数值,在下文中会有示例

color:用于控制除了fit部分拟合出的曲线之外的所有对象的色彩

vertical:bool型,控制是否颠倒x-y轴,默认为False,即不颠倒

norm_hist:bool型变量,用于控制直方图高度代表的意义,为True直方图高度表示对应的密度,为False时代表的是对应的直方区间内记录值个数,默认为False

label:控制图像中的图例标签显示内容 

使用distplot方法可以同时绘制直方图和密度图

import numpy as np
import pandas as pd
#使用distplot方法可以同时绘制直方图和密度图
c1 = np.random.normal(0, 1, size = 200)
c2 = np.random.normal(10, 2, size = 200)
#一维数据
values = pd.Series(np.concatenate([c1,c2]))
#bins:int或list,控制直方图的个数100
sns.distplot(values,bins = 100,color = 'r')  

 

import matplotlib.pyplot as plt

#数据
x= np.random.normal(0, 1, size = 100)

#创建一个一行三列的画布
fig,axes=plt.subplots(1,3) 

# hist和kde参数调节是否显示直方图及核密度估计(默认hist,kde均为True)
sns.distplot(x,ax=axes[0]) #左图  

sns.distplot(x,hist=False,ax=axes[1]) #中图

sns.distplot(x,kde=False,ax=axes[2]) #右图

 

 

import seaborn as sns
#密方图
#加载数据
penguins=sns.load_dataset('penguins')
#显示前5条
penguins.head()

 

sns.displot(data=penguins,x='bill_depth_mm') 

 

sns.displot(data=penguins,x='bill_depth_mm',kind='kde') 

 

 sns.displot(data=penguins,x='bill_depth_mm',kind='ecdf')

 

sns.displot(data=penguins,x='bill_depth_mm',kde=True) 

 

 sns.displot(data=penguins,x='bill_depth_mm',y='flipper_length_mm')

 

 sns.displot(data=penguins, x="flipper_length_mm", hue="island", multiple="stack")

 

sns.displot(data=penguins, x="flipper_length_mm", hue="island", col="sex", kind="kde") 

 

 

 

 

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

Seaborn 入门 的相关文章

  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • ctypes 错误:libdc1394 错误:无法初始化 libdc1394

    我正在尝试将程序编译为共享库 我可以使用 ctypes 在 Python 代码中使用该库 使用以下命令该库可以正常编译 g shared Wl soname mylib O3 o mylib so fPIC files pkg config
  • 无故运行测试时 PyCharm 抛出“AttributeError: 'module' object has no attribute”

    因此 我有一个 Django REST Framework 项目 有一天它无法在 PyCharm 中运行测试 从命令行我可以使用它们来运行它们paver or the manage py直接地 曾经有一段时间 当我们没有在文件顶部导入类的超
  • “一旦获取切片就无法更新查询”。最佳实践?

    由于我的项目的性质 我发现自己不断地从查询集中取出切片 如下所示 Thread objects filter board requested board id order by updatedate 10 但这给我带来了实际对我选择的元素进
  • 如何在VIM中设置文件的正确路径?

    每当我击中 pwd在 vim 中命令总是返回路径C Windows system32 即使我在桌面上的 Python 文件中 所以每当我跑步时 python 命令返回 python can t open file Users myname
  • 更改 x 轴比例

    我使用 Matlab 创建了这个图 使用 matplotlib x 轴绘制大数字 例如 100000 200000 300000 我想要 1 2 3 和 10 5 之类的值来指示它实际上是 100000 200000 300000 有没有一
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • 揭秘sharedctypes性能

    在 python 中 可以在多个进程之间共享 ctypes 对象 然而我注意到分配这些对象似乎非常昂贵 考虑以下代码 from multiprocessing import sharedctypes as sct import ctypes
  • 如何从 JSON 响应重定向?

    所以我尝试使用 Flask 和 Javascript 上传器 Dropzone 上传文件并在上传完成后重定向 文件上传正常 但在烧瓶中使用传统的重定向 return redirect http somesite com 不执行任何操作 页面
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 在 Spyder 的变量资源管理器中查看局部变量

    我是 python 新手 正在使用 Spyder 的 IDE 我欣赏它的一项功能是它的变量资源管理器 然而 根据一些研究 我发现它只显示全局变量 我找到的解决方法是使用检查模块 import inspect local vars def m
  • 使用 pybtex 将 bibtex 转换为格式化的 HTML 参考书目,例如哈佛风格

    我正在使用 Django 并将 bibtex 存储在我的模型中 并且希望能够以格式化 HTML 字符串的形式向我的视图传递引用 使其看起来像哈佛引用样式 使用中描述的方法Pybtex 无法识别 bibtex 条目 https stackov
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 以编程方式使用 Sphinx 特定指令解析 .rst 文件

    我希望能够在 Python 中解析基于 sphinx 的 rst 以便进一步处理和检查 就像是 import sphinx p sphinx parse path to file rst do something with p 似乎在 do
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 通过 Web 界面执行 python 单元测试

    是否可以通过 Web 界面执行单元测试 如果可以 如何执行 EDIT 现在我想要结果 对于测试 我希望它们是自动化的 可能每次我对代码进行更改时 抱歉我忘了说得更清楚 EDIT 这个答案此时已经过时了 Use Jenkins https j
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c

随机推荐

  • 修改代码后,刷新页面没有更新的解决办法。Disable cache禁止缓存

    工作内容 不对外开放 很多时候 我们修改代码并保存后 到浏览器看效果 发现并没有更新 刷新页面后也没有更新 可能是你的缓存开启了 Network 里勾选Disable cache重新加载页面后 会发现浏览器使用缓存了 打开Disable c
  • Vue中高德地图获取经纬度及逆地理解析的两种方式CDN或NPM(协议必须是https) 否则定位会一直失败

    高德地图获取经纬度 npm方式 npm i amap amap jsapi loader save import AMapLoader from amap amap jsapi loader npm方式 export function NP
  • SimSiam:Exploring Simple Siamese Representation Learning

    Siamese网络最大化了一个图像的两个增强之间的相似性 服从于避免崩溃解的某些条件 在本文中 SimSiam即使 不使用以下任何一项也可以学习有意义的表示 i 负样本对 ii 大批量 iii 动量编码器 我们的实验表明 停止梯度stop
  • 推荐工具!使终端便于 DevOps 和 Kubernetes 使用

    如果你熟悉 DevOps 和 Kubernetes 的使用 就会知道命令行界面 CLI 对于管理任务有多么重要 好在现在市面上有一些工具可以让终端在这些环境中更容易使用 在本文中 我们将探讨可以让工作流程简化的优秀工具 帮助你在 DevOp
  • ai人工智能制作视频_建立一个人工智能驱动的可搜索视频档案

    ai人工智能制作视频 In this post I ll show you how to build an AI powered searchable video archive using machine learning and Goo
  • 为什么要使用零知识证明来开发跨链协议

    用户需要什么样的跨链服务 在过去的几年当中出现了各种各样的独立公链以及以太坊 Layer 2 由于在安全性 低成本 快速交易以及开发者和用户社区差异等方面 不同链都具有各自不同的优势 用户在不同链之间切换使用的行为是很常见的 比起以太坊链
  • B端产品设计与实现总结

    Author skatexg Time 2022 03 06 适用范围 B端产品的迭代需求和研发管理总结 end
  • win10关闭电池保护模式_Windows10如何关闭电源保护模式?

    展开全部 首先 在Win10系统桌面上32313133353236313431303231363533e78988e69d8331333365633962能看到笔记本电源标志 当然台式电脑是没有这个图标的 这里的节电模式仅适用于笔记本电脑
  • 设置HTML为桌面壁纸

    我们程序员每天都面对着静态或动态壁纸 但是谁不想拥有一个炫酷的html桌面呢 先看一下效果 下面是几例使用html当桌面进行交互的实际效果 1 桌面可以玩魔方 2 飞机跟随鼠标移动 3 火箭跟随鼠标移动 4 可以通过调节参数的星空 英文自查
  • springboot-rocketmq日志rocketmq_client.log问题

    问题描述 springboot配置rocketmq后 会写入日志到rocketmqlogs目录下的rocketmq client log文件中 且日志过于庞大 解决 1 启动类增加代码 System setProperty ClientLo
  • 因果推断dowhy之-ihdp数据集上的案例学习

    0x01 案例背景 IHDP Infant Health and Development Program 就是一个半合成的典型数据集 用于研究 专家是否家访 对 婴儿日后认知测验得分 之间的关系 原数据集是基于随机控制实验进行的 因此可以获
  • matlab 曲线拟合插值问题

    引言 polyfit 和polyval 经常用于多项式拟合和插值取点 但不能乱用 原理 polyfit根据一些列的点去拟合成一个多项式 多项式的阶次可以设定 假设对于某一小段数据 如图 现在想根据当前点的变化趋势拟合多项式并插值 使用pol
  • 源码漏洞思路笔记

    根据文件名称判断内容 部分文件没有固定的名称和位置 取决于编写网站人员 以下是一般情况 admin 后台路径 data 处理数据 install 安装 menber 会员中心 temple 模板文件 bak文件 数据库备份 bak是back
  • SphereEx苗立尧:云原生架构下的Database Mesh研发实践

    嘉宾 苗立尧 2022年7月27日 在由开放原子开源基金会主办的 2022开放原子全球开源峰会 上 SphereEx Mesh实验室负责人 云原生技术专家苗立垚带来了 云原生架构下的Database Mesh的研发实践 的主题演讲 从云原生
  • bean的有效范围和生命周期(scope)

    scope 的取值范围给出了bean的生命周期 存活时间 即scope 取值决定了Tomcat服务器分配给用户的 bean 的有效范围和生命周期 因此需要理解 scope取值的具体意义 下面就JSP动作标记useBean 中scope取值的
  • conda : 无法将“conda”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

    conda 无法将 conda 项识别为 cmdlet 函数 脚本文件或可运行程序的名称 请检查名称的拼写 如果包括路径 请确保路径正确 然后再试一次 解决办法 没有添加系统变量 所以系统根本识别不了conda命令 找不到位置 添加以下系统
  • java fop,使用ApacheFOP从Java中的XML生成PDF

    I am trying to generate on the fly PDF reports from Java objects I have not been able to find many examples of this so I
  • Hbase的入门心得:

    Hbase的入门心得 在了解了Hadoop的大家族的核心成员HDFS MapReduce以及资源管理器YARN后 HBase又是一个新颖的技术出现 在超人学院吴超老师的视频里介绍到 HBase Hadoop Database是一个分布式的
  • 图智能在反洗钱方向的应用实践丨Fabarta 技术专栏

    导读 依托于 Fabarta 在金融行业应用图技术解决反洗钱业务领域问题成功经验 将图智能在反洗钱方向的应用实践进行总结并分享 主要包括以下几个方面 全文目录 反洗钱业务业务背景 当前反洗钱的业务流程及痛点 如何应用图智能进行反洗钱分析 案
  • Seaborn 入门

    一 Seanborn Seaborn是基于Matplotlib的Python数据可视化库 对matplotlib进行二次封装而成 它提供了一个高级界面 用于绘制引人入胜且内容丰富的统计图形 只是在Matplotlib上进行了更高级的API封