利用Python的Seaborn快速完成数据可视化

本文介绍Seaborn库,一种基于Matplotlib的高级API封装,用于更轻松地定制化绘图。Seaborn提供丰富的图形参数,适合创建吸引人的图表,尤其在处理复杂数据集时优势明显。文章通过实例演示如何使用Seaborn绘制直方图、箱型图及多变量对比图。
摘要由CSDN通过智能技术生成

本篇文章介绍一个以matplotlib为底层,更容易定制化作图的库Seaborn

 

Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。

 

安装seaborn的方法

 
 
pip install seaborn


原始数据展现(这是一份家庭调查的数据,preglngth - 怀孕周长, birthord - 孕妇的第几个孩子, birthwgt_lb1 - 婴儿重量(单位:磅), birthwgt_oz1 - 婴儿重量(单位:盅司), agepreg - 孕妇在分娩时的年龄)


 
 
 
 
import pandas as pd	
	
births = pd.read_csv('births.csv')


640?wx_fmt=png


直方图:现在用seaborn.distplot()来制作直方图,观察之间的差异


 
 
 
 
# 对上表的prglngth列做一个直方图	
	
import matplotlib.pyplot as plt	
	
import seaborn as sns #要注意的是一旦导入了seaborn,matplotlib的默认作图风格就会被覆盖成seaborn的格式	
	
%matplotlib inline  # 为了在jupyter notebook里作图,需要用到这个命令	
	
sns.distplot(births['prglngth'])	
	
sns.plt.show()


640?wx_fmt=png


可以看到与使用matplotlib作的直方图最大的区别在于有一条密度曲线(KDE),可以通过设置参数去掉这条默认的曲线。


 
 
 
 
sns.distplot(births['prglngth'], kde=False)	
	
sns.plt.show()


640?wx_fmt=png

 

那么Pandas与Seaborn之间有什么区别呢?


其实两者都是使用了matplotlib来作图,但是有非常不同的设计差异

1. 在只需要简单地作图时直接用Pandas,但要想做出更加吸引人,更丰富的图就可以使用Seaborn

2. Pandas的作图函数并没有太多的参数来调整图形,所以你必须要深入了解matplotlib

3. Seaborn的作图函数中提供了大量的参数来调整图形,所以并不需要太深入了解matplotlib

4. Seaborn的API:https://stanford.edu/~mwaskom/software/seaborn/api.html#style-frontend

 

 
 


 
 
# 对上图进行更多的配置	
	
sns.set_style('dark')                # 该图使用黑色为背景色	
	
sns.distplot(births['prglngth'], kde=False) # 不显示密度曲线	
	
sns.axlabel('Birth number', 'Frequency') # 设置X轴和Y轴的坐标含义	
	
sns.plt.show()

640?wx_fmt=png

 
箱型图
 
 


 
 
# 以birthord作为x轴,agepreg作为y轴,做一个箱型图	
	
sns.boxplot(x='birthord', y='agepreg', data=births)	
	
sns.plt.show()

 
多变量作图

seaborn可以一次性两两组合多个变量做出多个对比图,有n个变量,就会做出一个n × n个格子的图,譬如有2个变量,就会产生4个格子,每个格子就是两个变量之间的对比图

1. var1  vs  var1

2. var1  vs  var2

3. var2  vs  var1

4. var2  vs  var2


相同的两个变量之间(var1  vs  var1 和 var2  vs  var2)以直方图展示,不同的变量则以散点图展示(var1  vs  var2 和var2  vs  var1)


要注意的是数据中不能有NaN(缺失的数据),否则会报错

 
 
 
 
sns.pairplot(births, vars=['agepreg', 'prglngth','birthord'])	
	
sns.plt.show()

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值