2657c68d64ca99f3ae7e506bfdfe86ad.png

这篇文章是Python可视化seaborn系列的第二篇文章,本文将详解seaborn如何探究数据的分布。

65f9c3b6cf99a45e131c22adbae91057.png

单变量

直方图 displot

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)bins → 箱数

hist、ked、rug → bool,能否显示箱/密度曲线/数据分布

norm_hist → 直方图能否按照密度来显示,假如为False,显示计数

{hist,kde,rug,fit} _kws:字典,对应部分的各种参数。

vertical → 能否水平显示

fit → 可结合scipy库在图像上做拟合

label → 图例

axlabel → x轴标注

86a3aac9a522649caca601846e3a5e97.png

5c5036ea145707bcff97ca6d7fc7e897.png

03b2f0ca6edd08a3a006bcd405b66ee1.png

e6176bb7dcae0b2e0e49ab27a6008dd8.png

核密度预计图 kdeplot

核密度预计的步骤:

每一个观测周围用一个正态分布曲线近似

叠加所有观测的正态分布曲线

归一化

seaborn.kdeplot(data,data2 = None,shade = False,vertical = False,kernel ='gau',bw ='scott',gridsize = 100,cut = 3,clip = None,legend = True,cumulative = False,shade_lowest = True,cbar = False,cbar_ax =无,cbar_kws =无,ax =无, kwargs )

shade: 假如为True,则用颜色填充KDE曲线下方的区域(或者者在数据为双变量时用颜色填充的轮廓)

kernel: {‘gau’|‘cos’|‘biw’|‘epa’|‘tri’|‘triw’} 用于拟合的核,双变量值能用高斯核(gau)

bw: {'scott'|'silverman'|标量|一对标量} 确定核的大小,近似了解为拟合程度,bw越大,曲线越平缓。

gridsize:int, 网格中的离散点数

cumulative :能否绘制累积分布

cbar:参数若为True,则会增加一个颜色条(颜色条在双变量kde图像中才有)

4c128f301a1743abd7cda93c04661617.png

daf0e4789e0e308b0bff17ffbba87f4f.png

ef229b0bd8ce0cf55b5508c007cb6035.png

0351df7bc05c5b77030c7ff7594205de.png

核密度分布图不但能绘制单个变量的,也能绘制双变量!!!

df96f699ff91ab780b23eb8153a9b26a.png

16d5697b64915f5d0d61cef10fb17fac.png

双变量

jointplot

seaborn.jointplot(x,y,data = None,kind ='scatter',color = None,size = 6,ratio = 5,space = 0.2,dropna = True,xlim = None,ylim = None,joint_kws = None,marginal_kws =None,annot_kws =None, kwargs )

该函数是JoinGrid类的一个轻量级界面,假如想更加灵活的绘制,可以使用JoinGrid函数

kind: 设置类型:“scatter”、“reg”、“resid”、“kde”、“hex”

size: int, 图像大小(图像自动调整为正方形)

radio: int, 主图与边缘图的高度比

space: # 设置主图和边缘图的间距

{x,y} lim :在绘图之前设置轴限制

{joint,marginal,annot} _kws:dicts 绘图组件的其余关键字参数

514886eaa7924e574955c0abbb7efeba.png

619b6fe482194d9bfbcfdbb7383d3527.png

seaborn会直接给出变量的皮尔逊相关系数和P值

pearson相关系数计算:

4bf186540c80ae63c289f6aac7e99b76.png

p:样本间的差异由抽样误差所致的概率小于p.

f7a84415de9f495d11b492a15004d47f.png

ecae2af1511a9ad5e5a0f7d28a372044.png

00a96ef21e7f29ae739082c241cf6e7a.png

8b43f154aadbd11815fe8f1ca7191d03.png

e299ed633e08ac2d7f7901e099c16d5a.png

JointGrid

前面讲过jointplot其实是JoinGrid的一个封装,要想有更灵活的设置,可以使用JoinGrid类

__init__(x,y,data = None,size = 6,ratio = 5,space = 0.2,dropna = True,xlim = None,ylim = None)

方法:

plot(joint_func,marginal_func ,annot_func)→ 绘制完整的图形

plot_joint(func,** kwargs)→ 绘制双变量图形

plot_marginals(func,** kwargs)→ 绘制边缘单变量图形

savefig(?args,* kwargs)→ 保存

set_axis_labels([xlabel,ylabel])→ 在双变量轴上设置轴标签。

13a77d1ede71944ec711f2bd0364d8a1.png

14bc33e8eaa6fa4048ae3d955586ad5c.png

6779528649dcb8a8ee79b7f575845087.png

ed7e071e83bff511e8710e5ddbf6165c.png

090ad93c0d81fe3b3cbec5280c83106d.png

e91ead3151247e8e3141417b2ed0c8a4.png

探究两两变量之间的关系

通常我们的数据并不是只有一个或者者两个变量,那么对于多个变量,我们常需要探究两两变量之间的分布及关系这是我们就需要使用pairplot函数 或者者是PairGrid类

pairplot

seaborn.pairplot(data,hue = None,hue_order = None,palette = None,vars = None,x_vars = None,y_vars = None,kind ='scatter',diag_kind ='auto',markers = None,s = 2.5,aspect = 1,dropna = True,plot_kws = None,diag_kws = None,grid_kws = None)

hue: string(变量名) : 颜色将按照指定的变量分类

hue_order : list 设置调色板色调变量级别

palette : 调色板

vars : list 变量名称列表,否则使用所有数值型变量的列

markers: 点样式

a8ad2897e4a681101637e306a2e6132e.png

sepal_length sepal_width petal_length petal_width species

5.1 3.5 1.4 0.2 setosa

4.9 3.0 1.4 0.2 setosa

4.7 3.2 1.3 0.2 setosa

4.6 3.1 1.5 0.2 setosa

5.0 3.6 1.4 0.2 setosa

ce6ec81a079064939b25078be5c62e02.png

8c5584a80bfe195d3385674be0dace8b.png

2bb2f095ff32719a0b7378f41c759090.png

PairGrid

相当于jointplot?和?JointGrid的关系,PairGrid 对矩阵散点图有着更为灵活的控制

__init__(data,hue = None,hue_order = None,palette = None,hue_kws = None,vars = None,x_vars = None,y_vars = None,diag_sharey = True,size = 2.5,aspect = 1,despine = True,dropna = True)

方法:

add_legend([legend_data,title,label_order])绘制一个图例,可能将其放在轴外并调整图形大小。

map_diag(func,** kwargs):在每个对角线子图上绘制具备单变量函数的图。

map_lower(func,** kwargs):在下对角线子图上绘制具备双变量函数的图。

map_upper(func,** kwargs):在上对角线子图上绘制具备双变量函数的图

map_offdiag(func,** kwargs):在非对角线子图上绘制具备双变量函数的图。

set(** kwargs):在每个子图集Axes上设置属性。

ed59a771cb0b15a7bfd011d1f82841d2.png

6a49a6f9268f75e735f04e9d6a6a7a3e.png

75a32f34af627d27ff65a078953ad167.png

看再屡次,都不如自己亲身动手写一次,只有在实际应用中不断练习,思考,调整。才能了解掌握数据可视化的技能。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐