悍魔之战·网游指挥部

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

Seaborn系列目录

文章目录

1. 分布统计绘图API概述

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

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

2.2 displot直方图kde图同时叠加绘制

2.3 displot绘图同时叠加rug图

2.4 displot双变量分布图(直方图、核密度)

2.5 displot分组统计绘图

2.6 displot绘制多个子图

3 displot、histplot直方图详解

3.1 直方图基本参数设置

3.1.1 横向直方图

3.1.2 直方柱数量

3.1.3 直方图样式

3.2 直方图统计方式

3.3 分组直方图样式

4 displot、kdeplot核分布图详解

4.1 kde平滑参数

4.2 kde分组绘图

4.3 双参数kde绘图

4.4 kde样式

5 ecdfplot,displot绘制累积分布图

5.1 ecdf图基本方法

5.2 互补ecdf

6 rugplot绘制累积分布图

6.1 rug图绘制方法

6.2 改变rug短线长度

6.3 rug图嵌入其他图形

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

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

Copyright © 2022 悍魔之战·网游指挥部 All Rights Reserved.