数据科学:是时候该用seaborn画图了

2022-04-02 19:43:47 浏览数 (1)

matplotlib是python最常见的绘图包,强大之处不言而喻。然而在数据科学领域,可视化库-Seaborn也是重量级的存在。

由于matplotlib比较底层,想要绘制漂亮的图非常麻烦,需要写大量的代码。

Seaborn是在matplotlib基础上进行了高级API封装,图表装饰更加容易,你可以用更少的代码做出更美观的图。同时,Seaborn高度兼容了numy、pandas、scipy等库,使得数据可视化更加方便快捷。

话不多说,先来展示一下Seaborn的风采:

热力图

小提琴图

散点矩阵图

多元散点图

带边际分布的Hexbin图


下面正式开始讲解如何使用Seaborn绘图

功能简介

Seaborn让coder专注于可视化分析,提供更多高级接口,无需将过多时间用于数据处理和图表装饰,一般而言,它主要有以下功能:

  • 计算多变量间关系的面向数据集接口
  • 可视化类别变量的观测与统计
  • 可视化单变量或多变量分布并与其子数据集比较
  • 控制线性回归的不同因变量并进行参数估计与作图
  • 对复杂数据进行易行的整体结构可视化
  • 对多表统计图的制作高度抽象并简化可视化过程
  • 提供多个内建主题渲染 matplotlib 的图像样式
  • 提供调色板工具生动再现数据

安装Seaborn

安装最新版本的Seaborn非常简单,使用pip命令即可:

代码语言:javascript复制
pip install seaborn

Python版本:3.6.x

Seaborn的依赖库有:numpy、scipy、matplotlib、pandas

导入Seaborn库,一般使用:

代码语言:javascript复制
import seaborn as sns

查看Seaborn版本:

代码语言:javascript复制
sns.__version
# 本文使用最新版本:0.9.0

风格管理

Seaborn装载了一些默认主题风格,通过sns.set()方法实现。

sns.set()可以设置5种风格的图表背景:darkgrid, whitegrid, dark, white, ticks,通过参数style设置,默认情况下为darkgrid风格:

更改为whitegrid风格:

你还可以通过改变参数palette来调整颜色:

提示:有人会问上面的代码从哪加载数据集?是这样的,Seaborn会内置一些数据集,通过load_data()方法加载 大家有兴趣可以去官方教程看看有哪些内置数据集 本文都会用Seaborn内置数据集讲解案例

点、线混合绘图函数 - relplot()

relplot()是seaborn中非常重要的绘图函数,它可以用于绘制散点图和线图,通过参数kind改变绘图类型。

  • 散点图:relplot(kind='scatter')
  • 线图:relplot(kind='line')

注:默认情况下为散点图

举个例子:

上面加载了内置数据集-tips(小费数据集),并对total_bill和tip字段绘制散点分布图。

tips数据集:

tips数据集字段说明:

  • total_bill:总消费
  • tip:小费
  • sex:性别
  • smoker:是否吸烟
  • day:周几
  • time:用餐类型

前面绘制了total_bill(总消费)和tip(小费)的散点关系图,我们可以清晰地看到这两者成正相关性。

如果在上面的基础上再区分时间,显示这次消费属于一周的周几,并用不同颜色标记点

传递参数 hue='day':

性别不同会对这个分布关系产生影响,我们绘制男、女两张图表

传递参数 col='sex':

性别不同、用餐类型也不同的情况下,分布是什么样的,可以绘制多张图表

传递参数 col='sex',row='time':

你也可以绘制线图,只需要传递参数kind='line':

lineplot()和scatter()函数

lineplot()和scatter()分别用于绘制线图和散点图,前面说过relplot()函数已经覆盖这两个绘图功能,所以就不赘述了,有意者可以自研。

绘制线性回归模型-lmplot()函数

lmplot()函数用以绘制回归模型,描述线性关系。

依然以小费数据集为例:

这是一个散点图 线性回归 95%置性区间的组合图

你调整置性区间的大小,传递参数ci:60:

对smoker(是否吸烟)做分类处理,得到两个不同的回归曲线,

传递参数 hue='smoker' :

绘制非参数回归模型(局部加权线性回归),传递参数 lowess=True:

分类散点图 - stripplot()函数

当有一维数据是分类数据时,散点图成了条带形状,这里就用到stripplot()函数。

箱图 - boxplot()函数

箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。

它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比 较。

箱线图的绘制方法是:

  • 先找出一组数据的最大值、最小值、中位数和两个四分位数;
  • 然后, 连接两个四分位数画出箱子;
  • 再将最大值和最小值与箱子相连接,中位数在箱子中间。

提琴图 - violinplot()函数

小提琴图结合了箱型图和密度图的特征,用于展示数据的分布形状。粗黑线表示四分数范围,延伸的细线表示95%的置信区间,白点为中位数。

小提琴图弥补了箱型图的不足,可以展示数据分布是双模还是多模。

总结

本介绍了Seaborn安装、风格配置以及各类绘图函数的使用,当然这里只是列举了小部分函数和功能,抛砖引玉,为展示seaborn的强大之处。希望Seaborn能成为大家数据科学路上的得力助手!

END

0 人点赞