文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

终于有人将Seaborn可视化讲明白了

2024-12-03 00:21

关注

本文转载自微信公众号「数仓宝贝库」,作者王恺 等。转载本文请联系数仓宝贝库公众号。

Seaborn是一种开源的数据可视化工具,它在Matplotlib的基础上进行了更高级的API封装,因此可以进行更复杂的图形设计和输出。Seaborn是Matplotlib的重要补充,可以自主设置在Matplotlib中被默认的各种参数,而且它能高度兼容NumPy与Pandas数据结构以及Scipy与statsmodels等统计模式。Seaborn已集成在Anaconda中,无须再次安装。

01关系图

关系图能够直观地展示数据变量之间的关系以及这些关系如何依赖于其他变量,Seaborn中常用的绘制数据关系图的函数是relplot(),其语法格式如下:

  1. seaborn.relplot(*[, x, y, hue, size, style, data, kind, …]) 

参数说明如下:

relplot函数提供了几种可视化数据变量之间关系的方法,通过kind参数选择要使用的方法,并通过hue、size和style等参数来显示数据的不同子集。常见的关系图有两种,即散点图和线形图,因此Seaborn还提供了scatterplot和lineplot函数,它们的语法格式如下:

  1. seaborn.scatterplot(*[, x, y, hue, style, size, …]) 
  2.  
  3. seaborn.lineplot((*[, x, y, hue, style, size, …]))  

scatterplot用于绘制散点图,相当于seaborn.relplot(kind="scatter");lineplot用于绘制线形图,相当于seaborn.relplot(kind="line");其他参数及含义与relplot函数相同。当其中一个变量是连续变量时,更适合使用线形图表示变量之间的关系。

下面通过代码清单1演示如何用Seaborn绘制关系图。

  1. 代码清单1 Seaborn绘制关系图的示例 
  2.  
  3. 1 import matplotlib.pyplot as plt 
  4.  
  5. 2 import seaborn as sns 
  6.  
  7. 3 tips= sns.load_dataset("tips"
  8.  
  9. 4 print(tips.head()) 
  10.  
  11. 5 sns.relplot(x='total_bill', y='tip', data=tips, hue='smoker', style='sex'size='size'
  12.  
  13. 6 plt.show() 

程序执行结束后,输出的结果如下:

  1.      total_bill   tip     sex   smoker  day   time   size 
  2.  
  3. 0         16.99  1.01  Female       No  Sun  Dinner     2 
  4.  
  5. 1         10.34  1.66    Male       No  Sun  Dinner     3 
  6.  
  7. 2         21.01  3.50    Male       No  Sun  Dinner     3 
  8.  
  9. 3         23.68  3.31    Male       No  Sun  Dinner     2 
  10.  
  11. 4         24.59  3.61  Female       No  Sun  Dinner     4 
  12.  
  13. at 0x16dea2711f0> 

程序绘制的关系图如图1所示。

图1 Seaborn绘制散点关系图示例

下面对代码清单1中的代码做简要说明。

Tips

sns.load_dataset()函数是连网加载在线数据集,还可以在https://github.com/mwaskom/ seaborn-data网站中将数据集下载到本地使用。

02分布图

分布图可以直观地显示一个或多个变量在某个维度上的分布情况。Seaborn提供了几种常用的绘制分布图的函数,包括displot()、histplot()、rdeplot()、rugplot()、distplot()和jointplot()等。

1. displot()函数

displot()函数提供了几种可视化数据单变量或双变量分布的方法,语法格式如下:

  1. seaborn.displot([data, x, y, hue, row, col, …]) 

主要参数说明如下:

displot函数通过kind参数选择要使用的绘制数据分布情况的方法,并通过hue、row、col等参数来处理不同的数据子集。Seaborn还提供了三个更具体的绘制分布图的函数histplot()、kdeplot()和ecdfplot(),语法格式如下:

  1. seaborn.histplot([data, x, y, hue, weights, stat, …]) 
  2.  
  3. seaborn.kdeplot([x, y, shade, vertical, kernel, bw, …]) 
  4.  
  5. seaborn.ecdfplot([data, x, y, hue, weights, stat, …]) 

2. rugplot()函数

rugplot()函数的功能是绘制轴须图(毛毯分布图),即通过边缘轴须线的方式显示单个观测点的位置,以补充其他分布图,其语法格式如下:

  1. seaborn.rugplot([x, height=0.025, axis, ax, data, y, hue, …]) 

主要参数说明如下:

x和y分别是x轴和y轴的观测值向量。

3. distplot()函数

distplot()函数整合了Matplotlib的hist()函数与Seaborn的kdeplot()函数的功能,并增加了rugplot()函数绘制轴须图的功能,因此它是一个功能非常强大且灵活实用的绘制分布图函数,其语法格式如下:

  1. seaborn.distplot([a, bins, hist, kde, rug, fit, …]) 

主要参数说明如下:

下面通过代码清单2演示如何通过Seaborn绘制分布图。

  1. 代码清单2 Seaborn绘制分布图的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import matplotlib.pyplot as plt 
  6.  
  7. 3 tips= sns.load_dataset("tips"
  8.  
  9. 4 sns.set_theme(style="whitegrid"
  10.  
  11. 5 sns.displot(data=tips, x="total_bill", col="time", row="sex", binwidth=3, height=3, facet_kws= dict(margin_titles=True)) 
  12.  
  13. 6 plt.subplots() 
  14.  
  15. 7 sns.distplot(a=tips['total_bill'], rug=True, hist=False
  16.  
  17. 8 plt.show() 

程序执行结束后,输出的图像如图2和图3所示。

下面对代码清单2中的代码做简要说明。

图2 seaborn.displot函数绘制分布图示例

图3 seaborn.distplot函数绘制高斯核密度估计曲线示例

4. jointplot函数

seaborn.jointplot()函数提供了几种绘制两个变量的联合分布图的方法,其语法格式如下:

  1. seaborn.jointplot(*[,x,y,data,kind,color,...]) 

主要参数说明如下:

下面通过代码清单3演示如何通过jointplot函数绘制分布图。

  1. 代码清单3 jointplot函数绘制分布图的示例 
  2.  
  3. 1import seaborn as sns 
  4.  
  5. 2import matplotlib.pyplot as plt 
  6.  
  7. 3tips = sns.load_dataset("tips"
  8.  
  9. 4sns.set(style="white") #设置风格样式 
  10.  
  11. 5sns.jointplot(x="total_bill", y="tip", data=tips) 
  12.  
  13. 6plt.show() 

程序执行结束后,输出的图像如图4所示。

图4 jointplot函数绘制联合分布图示例

下面对代码清单3中的代码做简要说明。

03分类图

分类图展示数据根据特定变量进行分类后的统计情况。常用的分类图包括分类散点图、箱形图、条形图等。Seaborn的catplot()函数提供了几种不同的分类可视化方法,以便显示数值变量与一个或多个分类变量之间的关系,常用语法格式如下:

  1. seaborn.catplot(*[,x,y,hue,data,row,col,kind,...]) 

参数说明如下:

catplot()函数通过kind参数选择要使用的绘制数据分类的方法,并通过hue、row、col等参数来处理不同的数据子集。Seaborn还提供了三类更具体的绘制分类图的函数,包括分类散点图、分类分布图和分类预测图。

1.分类散点图函数

分类散点图函数包括stripplot()和swarmplot(),常用的语法格式如下:

  1. seaborn.stripplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.swarmplot(*[, x, y, hue, data, order, …]) 

seaborn.stripplot(*[,seaborn.swarmplot(*[,stripplot()相当于seaborn.catplot(kind= "strip"),可以显示测量变量在每个类别的分布情况,绘制的散点呈带状,数据较多时会有重叠的部分。

swarmplot()相当于seaborn.catplot(kind= "swarm"),它与stripplot()类似,但绘制的数据点不会重叠。

2.分类分布图函数

分类分布图函数包括boxplot()、violinplot()和boxenplot(),常用的语法格式如下:

  1. seaborn.boxplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.violinplot(*[, x, y, hue, data, order, …]) 
  4.  
  5. seaborn.boxenplot(*[, x, y, hue, data, order, …]) 

3.分类预测图函数

分类预测图函数包括pointplot()、barplot()和countplot(),常用的语法格式如下:

  1. seaborn.pointplot(*[, x, y, hue, data, order, …]) 
  2.  
  3. seaborn.barplot(*[, x, y, hue, data, order, …]) 
  4.  
  5. seaborn.countplot(*[, x, y, hue, data, order, …]) 

下面通过代码清单4演示如何通过Seaborn绘制分类图。

  1. 代码清单4 Seaborn绘制分类图的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import pandas as pd 
  6.  
  7. 3 import matplotlib.pyplot as plt 
  8.  
  9. 4 tips = sns.load_dataset("tips"
  10.  
  11. 5 sns.set_theme(style="whitegrid"
  12.  
  13. 6 f = sns.catplot(data=tips, kind="bar",x="day", y="total_bill", hue="smoker"
  14.  
  15. 7 f.despine(left=True
  16.  
  17. 8 f.set_axis_labels("day""total_bill"
  18.  
  19. 9 f.legend.set_title("smoker"
  20.  
  21. 10 plt.subplots() 
  22.  
  23. 11 sns.boxplot(x="day", y="total_bill", data=tips) 
  24.  
  25. 12 plt.show() 

程序执行结束后,输出的图像如图5和图6所示。

下面对代码清单4中的代码做简要说明。

图5 seaborn.catplot()函数绘制分类图示例

图6 seaborn.boxplot()函数绘制箱形图示例

04回归图

回归图是使用统计模型估计两个变量间的关系。Seaborn提供了常用的绘制回归图的函数regplot()和lmplot()。regplot()函数的功能是绘制数据和线性回归模型拟合的曲线,常用的语法格式如下:

  1. seaborn.regplot(*[, x, y, data, x_estimator, …]) 

主要参数说明如下:

data是输入的数据集,数据类型是DataFrame对象,即每一列对应一个变量,每一行对应一个观察值。

x和y是输入变量,数据类型可以是字符串、Series对象或者向量数组等。如果是字符串,则与data中的列名相对应。如果是Pandas对象,则坐标轴被标记为Series名称。

lmplot()函数结合了regplot()和FacetGrid的功能,为绘制数据集的条件子集的回归模型提供接口,语法格式如下:

  1. seaborn.lmplot(*[, x, y, data, hue, col, row, …]) 

主要参数说明如下:

regplot()和lmplot()函数密切相关,两者主要的区别是:regplot接受各种类型的x和y参数,包括numpy arrays 、pandas.series 或者pandas.Dataframe对象;而lmplot()的x和y参数只接受字符串类型。

下面通过代码清单5演示如何通过Seaborn绘制回归图。

  1. 代码清单5 Seaborn绘制回归图的示例 
  2.  
  3. 1 import seaborn as sns 
  4.  
  5. 2 import matplotlib.pyplot as plt 
  6.  
  7. 3 tips = sns.load_dataset("tips"
  8.  
  9. 4 sns.regplot(x="total_bill", y="tip", data=tips) 
  10.  
  11. 5 sns.lmplot(x="total_bill", y="tip", hue="smoker",col='sex', data=tips) 
  12.  
  13. 6 plt.show() 

程序执行结束后,输出的图像如图7和图8所示。

图7 seaborn.regplot()函数绘制回归图示例

图8 seaborn.lmplot()函数绘制回归图示例

下面对代码清单5中的代码做简要说明。

05热力图

热力图是将不同的数据值用不同的标志加以标注的一种可视化分析手段,标注的手段一般包括颜色的深浅、点的疏密以及呈现比重的形式。在数据分析中,如果离散数据波动变化比较大,那么可以使用热力图来观察波动变化。

Seaborn提供的heatmap()函数可以为二维数据绘制由颜色编码矩阵组成的热力图,语法格式如下:

  1. seaborn.heatmap(data, *[, vmin, vmax, cmap, center, …]) 

主要参数说明如下:

下面通过代码清单6演示如何通过Seaborn绘制热力图。

  1. 代码清单6 Seaborn绘制热力图的示例 
  2.  
  3. 1 import numpy as np 
  4.  
  5. 2 import seaborn as sns 
  6.  
  7. 3 import matplotlib.pyplot as plt 
  8.  
  9. 4 np.random.seed(0) 
  10.  
  11. 5 uniform_data = np.random.rand(10, 12) 
  12.  
  13. 6 sns.heatmap(uniform_data) 
  14.  
  15. 7 plt.show() 

程序执行结束后,输出的图像如图9所示。

图9 seaborn.heatmap()函数绘制热力图示例

下面对代码清单6中的代码做简要说明。

 

本文摘编于《Python数据分析与应用》,经出版方授权发布。

 

来源:数仓宝贝库内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯