seaborn可视化工具

一.安装及查看版本

import seaborn as sns
print(sns.__version__)  # 查看版本 0.11.2

升级命令pip install —upgrade seaborn

二.seaborn常用API说明

在这里插入图片描述
figure-level是通用接口,对应的axes-level为具体接口。使用具体接口可以实现具体的功能,使用通用接口时通过设置 kind 或 其他参数 来达到具体接口的效果,所以实现同一个功能有多种方法。

三.获取数据集(用于全篇绘图举例)

查看自带数据集:print(sns.get_dataset_names())

['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'exercise', 'flights', 'fmri', 'gammas', 'geyser', 'iris', 'mpg', 'penguins', 'planets', 'taxis', 'tips', 'titanic']

分类问题:企鹅种类

penguins_df = sns.load_dataset('penguins')

speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_gsex
0AdelieTorgersen39.517.4186.03800.0Female
1AdelieTorgersen40.318.0195.03250.0Female

回归问题:小费金额

tips_df = sns.load_dataset('tips')

total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3

四.单变量

1.连续型

箱线图

查看变量取值范围,是否有异常值(极大或极小值,不包含空值)

sns.boxplot(data=penguins_df)							# 绘制数据集中所有连续型变量的箱线图
sns.catplot(data=penguins_df,x='bill_length_mm',kind='box')
sns.boxplot(data=penguins_df ,x='bill_length_mm')	  	# 在x轴上绘制箱型图
sns.boxplot(data=penguins_df ,y='bill_length_mm')  		# 在y轴上绘制箱型图

在这里插入图片描述

直方图

sns.histplot(data=penguins_df,x='bill_length_mm')
sns.displot(data=penguins_df,x='bill_length_mm')					# 默认 kind='hist'
sns.displot(data=penguin_df,x="bill_length_mm",bins=50)				# 改变分桶数

在这里插入图片描述

注意:有些数据,比如某产品的价格从几百到几万不等,箱线图可能会将一些正常值判断为异常值,并且对应的直方图效果很差,此时可以将数据进行取对数处理,如果处理后的数据表现良好,可以将原数据进行相应的处理。

sns.boxplot(data=product_df,x="price")				# 原始箱线图
sns.displot(data=dia_df,x="price")					# 原始直方图
sns.displot(data=dia_df,x="price",log_scale=True)	# 取对数处理后直方图

在这里插入图片描述

kde密度曲线

sns.displot(x="bill_length_mm",data=penguin_df,kind="kde")
sns.kdeplot(x="bill_length_mm",data=penguin_df)
sns.displot(x="bill_length_mm",data=penguin_df,kind="kde",cut=0)	# cut=0 表示只拟合实际的数值范围

ked曲线验证测试集和训练集的分布是否一致

sns.displot(data=train_df,x="depth",kind="kde",linewidth=5.0,color="r")
sns.kdeplot(data=test_df, x="depth",color="g")

在这里插入图片描述

rug地毯样本分布

sns.displot(x="bill_length_mm",data=penguin_df,kind="kde",rug=True)

在这里插入图片描述

ked与直方图合并

sns.displot(x="bill_length_mm",data=penguin_df,kde=True)

在这里插入图片描述

ecdf经验累积分布函数

sns.displot(penguin_df,x="bill_length_mm",kind="ecdf")
在这里插入图片描述

2.离散型

直接查看每类分布即可

sns.countplot(data=penguins_df,x='species')
sns.displot(data=penguins_df,x='species',hue='species')				# 根据hue指定的类别变量显示标签
sns.displot(data=penguin_df,x="species",hue="species",shrink=.7)	# 根据hue指定的类别变量显示标签,shrink指定桶的缩放大小

在这里插入图片描述

五.连续型多变量关系分析

1.散点图

sns.scatterplot(data=tip_df,x="total_bill",y="tip")
sns.relplot(data=tip_df,x="total_bill",y="tip")									# 默认kind='scatter'
sns.relplot(data=tip_df,x="total_bill",y="tip",hue="time",style="time",markers=["o","^"])	
																				# 按照time分类并设置分类样式
sns.relplot(data=tip_df,x="total_bill",y="tip",hue="size",size="size")
																				# 按照size分类

在这里插入图片描述

2.线形图

sns.lineplot(data=tip_df,x="total_bill",y="tip")
sns.relplot(data=tip_df,x="total_bill",y="tip",kind="line")

在这里插入图片描述

由图可知x和y的线性关系很差

3.线性回归

sns.regplot(data=tip_df,x="total_bill",y="tip")
sns.lmplot(data=tip_df,x="total_bill",y="tip")
sns.lmplot(data=tip_df,x="total_bill",y="tip",hue='time')

在这里插入图片描述

4.残差回归

sns.residplot(data=tip_df,x="total_bill",y="tip")

在这里插入图片描述

理想情况下残差是随机分布的,图中依然有发散趋势

5.FaceGrid特性(x和y轴即行列参数必须离散型)

FaceGrid绘制的图形将行和列设置为离散类型数据,依据离散变量的不同类别,可以将数据划分为一个个不同的子集,在各个子集上可以分析变量的分布,相当于绘制了变量的条件概率分布。

只有 figure-level水平函数(即displot,relplot,lmplot,catplot)具有FaceGrid特性。

sns.lmplot(data=tip_df,x="total_bill",y="tip",row="smoker",col="time",hue="time")
sns.relplot(data=tip_df,x="total_bill",y="tip",row="smoker",col="time",hue="time")
sns.displot(data=tip_df,x="total_bill",y="tip",row="smoker",col="time",hue="time")

在这里插入图片描述


自定义的FaceGrid

g=sns.FacetGrid(data=tip_df,row="smoker",col="time")
g.map(sns.kdeplot,"tip")

在这里插入图片描述

g=sns.FacetGrid(data=tip_df,row="time",col="smoker")
g.map(sns.scatterplot,"total_bill","tip")

在这里插入图片描述

6.联合分布

(1).两个变量的联合分布

注意:x和y的数值类型要和kind类型相融,否则报错

sns.displot(data=penguin_df,x="bill_length_mm",y="bill_depth_mm")				# 联合直方图
sns.displot(data=penguin_df,x="bill_length_mm",y="bill_depth_mm",kind="kde",rug=True)
																				# 联合kde曲线
sns.displot(data=penguin_df,x="bill_length_mm",y="bill_depth_mm",kind="kde",thresh=0.2,levels=5)	
																				# 联合kde密度曲线,thresh设置低阈值,levels线的数量
sns.displot(data=dia_df,x="price",y="clarity",log_scale=[True,False])			# 设置是否对数变换

在这里插入图片描述

(2).jointplot联合分布以及各自分布

注意:x和y的数值类型要和kind相融,否则报错

# kind : { "scatter" | "kde" | "hist" | "hex" | "reg" | "resid" }
sns.jointplot(data=tip_df,x="total_bill",y="tip")	# 默认 kind='scatter'
sns.jointplot(data=tip_df,x="total_bill",y="tip",hue="sex")

在这里插入图片描述


JointGrid----自定义的jointplot

# 方式1:
g=sns.JointGrid(data=tip_df,x="total_bill",y="tip")
g.plot(joint_func = sns.histplot, marginal_func = sns.boxplot)

在这里插入图片描述

# 方式2:
g=sns.JointGrid(data=tip_df,x="total_bill",y="tip")
g.plot_joint(sns.kdeplot)
g.plot_marginals(sns.histplot,kde=True)

在这里插入图片描述

7.pairplot所有连续型变量联合分布

(1).pairplot默认写法

# kind : {'scatter', 'kde', 'hist', 'reg'}
sns.pairplot(data=tip_df)	# 绘制所有连续型变量
sns.pairplot(data=car_df,x_vars=["speeding","alcohol"],y_vars=["total"])	# 绘制指定连续型变量

在这里插入图片描述

(2).PairGrid----自定义的pairplot

g=sns.PairGrid(data=penguin_df,hue="species")
g.map(sns.scatterplot)

在这里插入图片描述

g=sns.PairGrid(data=car_df,x_vars=["total","speeding","alcohol"],y_vars=["total","speeding","alcohol"])
g.map_upper(sns.scatterplot)
g.map_diag(sns.histplot,kde=True)
g.map_lower(sns.regplot)

在这里插入图片描述

六.离散型多变量关系分析

1.离散型变量的分布

sns.countplot(data=tip_df,x="time")
sns.catplot(data=tip_df,x="time",kind="count")

在这里插入图片描述

2.离散型变量和连续型变量的关系

(1).不同类别中数值变量的均值/中值估计:

barplot

# species 每个类别对应 bill_length_mm 的mean和median
sns.barplot(data=penguin_df,x="species",y="bill_length_mm")
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="bar")	# 默认estimator=np.mean
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="bar",estimator=np.median)

在这里插入图片描述

pointplot

sns.pointplot(data=penguin_df,x="species",y="bill_length_mm",hue="island") # 默认estimator=np.mean
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="point",hue="island")

在这里插入图片描述

(2).不同类别中数值变量的取值范围:

boxplot适合跨度小的数据,boxenplot适合跨度大的数据

sns.boxplot(data=penguin_df,x="species",y="bill_length_mm")
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="box")
sns.boxen(data=dia_df,x="clarity",y="price")
sns.catplot(data=dia_df,x="clarity",y="price",kind="box")
sns.catplot(data=dia_df,x="clarity",y="price",kind="boxen")

在这里插入图片描述

(3).不同类别中数值变量的分布图:

stripplot分布散点图

sns.stripplot(data=penguin_df,x="species",y="bill_length_mm")
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="strip")
# jitter 表示数据重叠部分的重叠度,0或False表示完全重叠
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="strip",jitter=False)

在这里插入图片描述

swarmplot分簇散点图

sns.swarmplot(data=penguin_df,x="species",y="bill_length_mm")
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="swarm")

在这里插入图片描述

violinplot

sns.violinplot(data=penguin_df,x="species",y="bill_length_mm")
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="violin")

# 绘制violinplot图的同时显示分布,下面两句必须同时使用
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",kind="violin")
sns.swarmplot(data=penguin_df,x="species",y="bill_length_mm",color="w",size=3)

# 分类时左右切分
sns.catplot(data=penguin_df,x="species",y="bill_length_mm",hue="sex",kind="violin",split=True)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值