Python+Seaborn绘制分布图的示例详解

目录
  • 前言
  • 示例 1
  • 示例 2
  • 示例 3
  • 示例 4
  • 示例 5
  • 例子 6
  • 例子 7
  • 示例 8
  • 示例 9
  • 示例10

前言

在本文中,我们将介绍10个示例,以掌握如何使用用于Python的Seaborn库创建图表。

任何数据产品的第一步都应该是理解原始数据。对于成功和高效的产品,这一步骤占据了整个工作流程的很大一部分。

有几种方法用于理解和探索数据。其中之一是创建数据可视化。它们帮助我们探索和解释数据。

通过创建适当和设计良好的可视化,我们可以发现数据中的底层结构和关系。

分布区在数据分析中起着至关重要的作用。它们帮助我们检测异常值和偏态,或获得集中趋势(平均值、中值和模态)度量的概述。

对于示例,我们将使用Kaggle上可用的墨尔本住房数据集中的一个小样本。

我们从导入库并将数据集读入Pandas数据帧开始。

import pandas as pd 
import seaborn as sns 
sns.set(style="darkgrid", font_scale=1.2) 
df = pd.read_csv( 
  "/content/melb_housing.csv",  
  usecols=["Regionname", "Type", "Rooms", "Distance", "Price"] 
) 
df.head()

该数据集包含了墨尔本房屋的一些特征及其价格。

Seaborn的离散函数允许创建3种不同类型的分布区,分别是:

  • 柱状图
  • Kde(核密度估计)图
  • Ecdf图

我们只需要调整kind参数来选择plot的类型。

示例 1

第一个例子是创建一个基本直方图。它将连续变量的取值范围划分为离散的箱子,并显示每个箱子中有多少个值。

sns.displot( 
  data=df, 
  x="Price", 
  kind="hist", 
  aspect=1.4 
)

我们将df的名称传递给数据参数。参数x接受要绘制的列名。aspect参数调整大小的宽高比。它也可以改变高度。

示例 2

在第一个例子中,我们可以清楚地看到价格栏中有一些异常值。柱状图在右边有一条长尾,这表明价格非常高的房子很少。

减少这种异常值影响的一种方法是对值取对数。displot函数可以使用log_scale参数执行此操作。

sns.displot( 
  data=df, 
  x="Price", 
  kind="hist", 
  aspect=1.4, 
  log_scale=10 
)

价格以10的幂表示。现在我们对房价的分布有了一个更好的概述。

示例 3

我们还可以调整直方图中的箱数量。在某些情况下,最好使用较少的箱数量,这样我们就可以得到一个更结构化的概述。

用于此调整的参数是box。

sns.displot( 
  data=df, 
  x="Price", 
  kind="hist", 
  aspect=1.4, 
  log_scale=10, 
  bins=20 
)

示例 4

数据集还包含分类变量。例如,类型列有3个类别,分别是h(房屋)、t(联排房屋)和u(单位)。我们可能需要分别检查每款的分布情况。

一种选择是在相同的可视化中用不同的颜色显示它们。我们只需要将列的名称传递给hue参数。

sns.displot( 
  data=df, 
  x="Price", 
  hue="Type", 
  kind="hist", 
  aspect=1.4, 
  log_scale=10, 
  bins=20 
)

这个图为我们提供了2条信息:

  • 每个类别的大小与房屋的数量有关。h类是最大的一类。
  • 每类房屋的价格分布。

示例 5

另一个检查每个类别分布的选项是创建单独的子图。我们可以对这个任务使用col或row参数。给定列中的每个类别都有一个子图。

sns.displot( 
  data=df, 
  x="Price", 
  col="Type", 
  kind="hist", 
  aspect=1.4, 
  log_scale=10, 
  bins=20 
)

例子 6

displot函数还允许生成二维直方图。因此,我们得到了关于两列中值的观察值(即行)分布的概述。

我们使用价格和距离列创建一个。我们只是将列名传递给x和y参数。

sns.displot( 
  data=df, 
  x="Price", 
  y="Distance", 
  col="Type", 
  kind="hist", 
  height=5, 
  aspect=1.2, 
  log_scale=(10,0), 
  bins=20 
)

较暗的区域密度更大,所以它们包含了更多的观测数据。两列看起来都是正态分布,因为密集的区域在中心。

你可能已经注意到,我们使用了一个元组作为log_scale参数的参数。因此,我们可以为每个列传递不同的比例。

例子 7

Kde图还可以用于可视化变量的分布。它们和直方图很相似。然而,kde图使用连续的概率密度曲线来表示分布,而不是使用离散的箱。

kind参数设置为“kde”,以生成kde图。

sns.displot( 
  data=df, 
  x="Price", 
  kind="kde", 
  aspect=1.4, 
  log_scale=10 
)

示例 8

与直方图类似,可以为不同的类别分别绘制kde图。我们的数据集包含房屋的区域信息。我们看看不同地区的价格变化。

sns.displot( 
  data=df, 
  x="Price", 
  hue="Regionname", 
  kind="kde", 
  height=6, 
  aspect=1.4, 
  log_scale=10 
)

南方大都市区的平均房价似乎最高。

示例 9

另一种检查变量分布的方法是使用ecdf图。它表示低于给定列中每个唯一值的观察值的比例或计数。

这是一种可视化的累计和。因此,我们能够看到更密集的值范围。

sns.displot( 
  data=df, 
  x="Distance", 
  kind="ecdf", 
  height=6, 
  aspect=1.4, 
  stat="count" 
)

曲线斜率高的值范围有更多的观测值。例如,我们没有很多房子的距离超过30。与此相反,在10到15的距离范围内有很多房子。

示例10

ecdf图也支持hue、col和row参数。因此,我们可以在一个列中区分不同类别之间的分布。

sns.displot( 
  data=df, 
  x="Distance", 
  kind="ecdf", 
  hue="Type", 
  height=6, 
  aspect=1.4, 
  stat="count" 
)

对于数据分析或机器学习任务,了解变量(即特征)的分布是非常重要的。我们如何处理给定的任务可能取决于分布。

在这篇文章中,我们看到了如何使用Seaborn的displot函数来分析价格和距离栏的分布。

以上就是Python+Seaborn绘制分布图的示例详解的详细内容,更多关于Python Seaborn分布图的资料请关注我们其它相关文章!

(0)

相关推荐

  • python中seaborn包常用图形使用详解

    seaborn包是对matplotlib的增强版,需要安装matplotlib后才能使用. 所有图形都用plt.show()来显示出来,也可以使用下面的创建画布 fig,ax=plt.subplots() #一个画布 fig,(ax1,ax2) = plt.subplots( ncols=2) #两个画布 1)单个特征统计图countplot sn.countplot(train.mnth)#离散型特征可使用,描述样本点出现的次数. 2)单个特征统计图distplot sn.distplot(t

  • Python-Seaborn热图绘制的实现方法

    制图环境: pycharm python-3.6 Seaborn-0.8 热图 import numpy as np import seaborn as sns import matplotlib.pyplot as plt sns.set() np.random.seed(0) uniform_data = np.random.rand(10, 12) ax = sns.heatmap(uniform_data) plt.show() # 改变颜色映射的值范围 ax = sns.heatmap

  • python数据可视化Seaborn绘制山脊图

    目录 1. 引言 2. 举个栗子 3.山脊图 4.扩展 5.结论 1. 引言 山脊图一般由垂直堆叠的折线图组成,这些折线图中的折线区域间彼此重叠,此外它们还共享相同的x轴. 山脊图经常以一种相对不常见且非常适合吸引大家注意力的紧凑图的形式表现.观察上图,我们给其起名叫Ridge plot是非常恰当的,因为上述图表看起来确实很像山的脊背.此外,上述图像还有另一个称呼叫做Joy Plots–这主要是因为Joy Division乐队在如下专辑封面上采用了这种可视化形式. 2. 举个栗子 在介绍完山脊图

  • 用python的seaborn画数值箱型图

    目录 一.概念介绍 二.数据展示 三.数据导入 四.画图 总结 一.概念介绍 箱型图(box-plot),又称为箱线图,盒型图,盒须图.在数据探索阶段或者描述性分析过程中,我们常常用于展示多类连续型数据的数值分布情况,便于类间对比和快速识别异常值. 在一幅箱型图中,一个连续数值序列构成一个盒子,如下所示. 每一个盒子主要展示的是数据的上四分位数Q1(25%),中位数(50%),下四分位数Q3(75%).划分异常值的界限我们称为上下极限,其离Q1,Q3分别是1.5IQR(IQR=Q3-Q1,称作四

  • python数据可视化Seaborn画热力图

    目录 1.引言 2. 栗子 3. 数据预处理 4. 画热力图 5. 添加数值 6. 调色板优化 1.引言 热力图的想法很简单,用颜色替换数字. 现在,这种可视化风格已经从最初的颜色编码表格走了很长一段路.热力图被广泛用于地理空间数据.这种图通常用于描述变量的密度或强度,模式可视化.方差甚至异常可视化等. 鉴于热力图有如此多的应用,本文将介绍如何使用Seaborn 来创建热力图. 2. 栗子 首先我们导入Pandas和Numpy库,这两个库可以帮助我们进行数据预处理. import pandas

  • Python可视化学习之seaborn绘制矩阵图详解

    目录 本文内容速览 1.绘图数据准备 2.seaborn.pairplot 加上分类变量 修改调色盘 x,y轴方向选取相同子集 x,y轴方向选取不同子集 非对角线散点图加趋势线 对角线上的四个图绘制方式 只显示网格下三角图形 图形外观设置 3.seaborn.PairGrid(更灵活的绘制矩阵图) 每个子图绘制同类型的图 对角线和非对角线分别绘制不同类型图 对角线上方.对角线.对角线下方分别绘制不同类型图 其它一些参数修改 本文内容速览 1.绘图数据准备 还是使用鸢尾花iris数据集 #导入本帖

  • Python+Seaborn绘制分布图的示例详解

    目录 前言 示例 1 示例 2 示例 3 示例 4 示例 5 例子 6 例子 7 示例 8 示例 9 示例10 前言 在本文中,我们将介绍10个示例,以掌握如何使用用于Python的Seaborn库创建图表. 任何数据产品的第一步都应该是理解原始数据.对于成功和高效的产品,这一步骤占据了整个工作流程的很大一部分. 有几种方法用于理解和探索数据.其中之一是创建数据可视化.它们帮助我们探索和解释数据. 通过创建适当和设计良好的可视化,我们可以发现数据中的底层结构和关系. 分布区在数据分析中起着至关重

  • matplotlib在python上绘制3D散点图实例详解

    大家可以先参考官方演示文档: 效果图: ''' ============== 3D scatterplot ============== Demonstration of a basic scatterplot in 3D. ''' from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np def randrange(n, vmin, vmax): ''' Helper f

  • Python OpenCV实现图形检测示例详解

    目录 1. 轮廓识别与描绘 1.1 cv2.findComtours()方法 1.2 cv2.drawContours() 方法 1.3 代码示例 2. 轮廓拟合 2.1 矩形包围框拟合 - cv2.boundingRect() 2.2圆形包围框拟合 - cv2.minEnclosingCircle() 3. 凸包 绘制 4. Canny边缘检测 - cv2.Canny() 4.1 cv2.Canny() 用法简介 4.2 代码示例 5. 霍夫变换 5.1 概述 5.2 cv2.HoughLin

  • Python可视化绘制图表的教程详解

    目录 1.Matplotlib 程序包 2.绘图命令的基本架构及其属性设置 3.Seaborn 模块介绍 3.1 未加Seaborn 模块的效果 4.描述性统计图形概览 4.1制作数据 4.2 频数分析 python 有许多可视化工具,但本书只介绍Matplotlib.Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在python脚本,IPython的交互环境下.Web应用程序中使用.该项目是由John Hunter 于2002年启动,其目的是为python构建MA

  • python实现PCA降维的示例详解

    概述 本文主要介绍一种降维方法,PCA(Principal Component Analysis,主成分分析).降维致力于解决三类问题. 1. 降维可以缓解维度灾难问题: 2. 降维可以在压缩数据的同时让信息损失最小化: 3. 理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解. PCA简介 在理解特征提取与处理时,涉及高维特征向量的问题往往容易陷入维度灾难.随着数据集维度的增加,算法学习需要的样本数量呈指数级增加.有些应用中,遇到这样的大数据是非常不利的,而且从大数据集中学习

  • Python线性点运算数字图像处理示例详解

    目录 点运算 定义 分类 线性点运算 分段线性点运算 非线性点运算 对数变换 幂次变换 点运算 定义 分类 线性点运算 例子: 分段线性点运算 非线性点运算 对数变换 幂次变换 1. 点运算是否会改变图像内像素点之间的空间位置关系? 点运算是一种像素的逐点运算,它与相邻的像素之间没有运算关系,点运算不会改变图像内像素点之间的空间位置关系. 2. 对图像灰度的拉伸,非线性拉伸与分段线性拉伸的区别? 非线性拉伸不是通过在不同灰度值区间选择不同的线性方程来实现对不同灰度值区间的扩展与压缩,而是在整个灰

  • Python面向对象编程repr方法示例详解

    目录 为什么要讲 __repr__ 重写 __repr__ 方法 str() 和 repr() 的区别 为什么要讲 __repr__ 在 Python 中,直接 print 一个实例对象,默认是输出这个对象由哪个类创建的对象,以及在内存中的地址(十六进制表示) 假设在开发调试过程中,希望使用 print 实例对象时,输出自定义内容,就可以用 __repr__ 方法了 或者通过 repr() 调用对象也会返回 __repr__ 方法返回的值 是不是似曾相识....没错..和 __str__ 一样的

  • python函数传参意义示例详解

    目录 C++这样的语言用多了之后,在Python函数传递参数的时候,经常会遇到一个问题,我要传递一个引用怎么办? 比如我们想要传一个x到函数中做个运算改变x的值: def change(y): y += 1 x = 1 print ("before change:", x) change(x) print ("after change: ", x) 得到的结果是 before change: 1 after change:  1 完全没用~~~这是怎么回事? 我来说

  • python模块shutil函数应用示例详解教程

    目录 本文大纲 知识串讲 1)模块导入 2)复制文件 3)复制文件夹 4)移动文件或文件夹 5)删除文件夹(慎用) 6)创建和解压压缩包 本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等操作,这些 os 模块中一般是没有提供的.但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的. 知识串

  • Python实现连接dr校园网示例详解

    目录 背景 分析 实现 背景 在校园里认证上网很麻烦需要web输入账号密码有时还会忘记web地址此时就需要一个人或者程序帮我们实现,这时我想到用python制作这个程序(初学者python代码不规范) 分析 需要分析web登录网址的浏览器头发现是get方法这就简单了,再次分析get请求发现有user_account字段,user_password字段还有ip字段mac字段这时我们的思路就来了使用curl命令直接把这个代码放到终端里运行发现是可以的 curl "http://学校认证服务器ip:8

随机推荐