Seaborn系列(三):分布统计绘图(distribution)

本文详细介绍了Seaborn库中的分布图绘制,包括displot、histplot、kdeplot、ecdfplot和rugplot函数的使用。从单变量分布到双变量分布,再到分组统计和样式设置,全面讲解了直方图、核密度图和累积分布图的绘制方法,并通过企鹅数据集实例展示了各种分布图的创建过程。此外,还探讨了直方图的统计方式、核密度图的平滑参数以及rug图的绘制技巧。
该文章已生成可运行项目,

Seaborn系列目录



分布分析(了解变量的分布)是数据分析和建模非常重要且必要的步骤,也是统计学中最基本的方法。

1. 分布统计绘图API概述

分布就是了解数据变量的分布规律的。seaborn中“分布”绘图函数共5个:

  • displot():通过kind参数指定为"hist",“kde”,“ecdf”。默认为hist。
    • histplot():直方图
    • kdeplot():核密度分布
    • ecdfplot():累积分布
    • rugplot():地毯图(用短线密度表示分布)。rugplot可以在其他图形(hist,kde,ecdf)中显示。
  • displot函数为figure级函数,返回FacetGrid对象,类似于figure。
  • histplot, kdeplot, ecdfplot和rugplot函数为axes级函数,返回axes对象。
    • 注意rugplot函数和另外几个函数有一点不太相同。displot的kind参数不支持rug,但是displot函数有个rug参数,可以在其他图绘制的时候同时绘制rug图。

figure级函数与axes级函数区别见Seaborn系列(一):绘图基础、函数分类、长短数据类型支持

2. displot单变量分布图(直方图、核密度、累积分布)

  • sns.displot(x=None,y=None,data=None,kind="hist"):根据kind绘制分布图。

常用参数简介:displot函数同样可以用数组、字典和DataFrame作为数据。

  • data参数:data为类字典数据或DataFrame。数组为参数时不需要指定data。
  • x,y参数:只指定x时,表示统计单变量x的分布。x,y都指定时表示双变量分布。
  • kind参数:绘图类型。“hist”:直方图,"kde"核密度图,"ecdf"累积分布图。

分组聚合参数

  • hue参数:用不同颜色对数组分组。hue可以是列表或者data的key。hue的每一个数据绘制一组分布图,给一个图例标签。
  • row,col:把row,col指定的数据按照行或列排列到不同的子图。
  • palette参数:指定hue分组的每组曲线的颜色。

legend、height、aspect参数与relplot类似

  • legend参数:图例显示方式。False不现实图例。brief则hue和size的分组都取等间距样本作为图例。full则把分组内所有数值都显示为图例。auto则自动选择brief或full。
  • height参数:每个子图的高度(单位inch)
  • aspect参数:宽度=aspect×高度

以企鹅penguins数据集为例。(由物种、岛、鸟嘴长度、鸟嘴宽度、鳍足长度、体重、性别组成。)

>>> penguins=sns.load_dataset("penguins")
>>> penguins
    species     island  bill_length_mm  ...  flipper_length_mm  body_mass_g     sex
0    Adelie  Torgersen            39.1  ...              181.0       3750.0    Male
1    Adelie  Torgersen            39.5  ...              186.0       3800.0  Female
2    Adelie  Torgersen            40.3  ...              195.0       3250.0  Female
3    Adelie  Torgersen             NaN  ...                NaN          NaN     NaN
4    Adelie  Torgersen            36.7  ...              193.0       3450.0  Female
..      ...        ...             ...  ...                ...          ...     ...
339  Gentoo     Biscoe             NaN  ...                NaN          NaN     NaN
340  Gentoo     Biscoe            46.8  ...              215.0       4850.0  Female
341  Gentoo     Biscoe            50.4  ...              222.0       5750.0    Male
342  Gentoo     Biscoe            45.2  ...              212.0       5200.0  Female
343  Gentoo     Biscoe            49.9  ...              213.0       5400.0    Male

[344 rows x 7 columns] 

2.1 displot函数绘制单变量分布图

import matplotlib.pyplot as plt
import seaborn as sns
penguins=sns.load_dataset('penguins')

sns.displot(data=penguins,x="bill_length_mm")
sns.displot(data=penguins,x="bill_length_mm",kind='kde')
sns.displot(data=penguins,x="bill_length_mm",kind='ecdf')

plt.show()

displot-直方图

displot-核密度图

本文章已经生成可运行项目
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hustlei

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值