打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Seaborn快速入门

文章目录


博文配套视频课程:24小时实现从零到AI人工智能


Matplotlib VS Seaborn

Seaborn概念介绍

Seaborn的底层是基于Matplotlib的,他们的差异有点像在点餐时选套餐还是自己点的区别,Matplotlib是独立点菜,可能费时费心(尤其是对我这种选择困难症患者…)但最后上桌的菜全是特别适合自己的;而Seaborn是点套餐,特别简单,一切都是配好的,虽然省时省心,但可能套餐里总有些菜是不那么合自己口味的。接下来详细说一下:

Seaborn是用户把自己常用到的可视化绘图过程进行了函数封装,形成的一个“快捷方式”,他相比Matplotlib的好处是代码更简洁,可以用一行代码实现一个清晰好看的可视化输出。主要的缺点则是定制化能力会比较差,只能实现固化的一些可视化模板类型;

而Matplotlib是可以实现高度定制化绘图的,高度定制化可以让你获得最符合心意的可视化输出结果,但也因此需要设置更多的参数,因而代码更加复杂一些。

两者相互补充,Seaborn,一般来说基本是够用的,而且特别容易上手;但很多时候Seaborn输出的结果确实可能不如人意,这时候需要结合Matplotlib做些修改,就需要深入学习下Matplotlib。

Matplotlib快速回顾

此处仅仅是快速回顾Matplotlib的相关概念,之前忘记的小伙伴可以查看数据分析可视化课程的第三章matplotlib相关内容

import pandas as pdimport matplotlib.pyplot as pltimport random# maplotlib快速回顾# 列表推导式plt.rcParams['font.sans-serif'] = ['SimHei']x_val = [str(i) + '月' for i in range(1,12)]y_val = [random.randint(1,10) for i in range(1,12)]# 显示分类图则 color与label显得有意义plt.scatter(x_val,y_val,color='red',label='我是标签')plt.legend(title='分类标题')plt.xlabel('月份')plt.ylabel('销量')plt.title('Matplotlib快速回顾')plt.show()

Matplotlib可视化鸢尾花数据

from sklearn.datasets import load_iris# 可以通过网络获取数据集,控制台有csv的存储地址data = load_iris()print(data)iris = pd.read_csv("../data/iris.csv")print(iris.head())print(iris['Type'].unique())colors = dict(zip(iris['Type'].unique(),['blue','green','red']))for index,group in iris.groupby('Type'):    # print(group)    plt.scatter(group['PetalLength'],group['SepalLength'],color=colors[index],label=index)    plt.legend(title='type')    plt.xlabel('petalLength')    plt.ylabel('sepalLength')plt.show()

Matplotlib效果图如下

SeaBorn一行代码可视化鸢尾花

import seaborn as snssns.lmplot('PetalLength','SepalLength',iris,hue='Type',fit_reg=False)plt.show()

SeaBorn效果图如下

核密度估计图,直方图

核密度估计图

# Series天生与可视化无缝转化s1= pd.Series(data=np.random.normal(loc=5,scale=1,size=100))# sns.kdeplot(s1,color='#ff0000')sns.kdeplot(s1,color='#ff0000',shade=True, vertical=True)s2= pd.Series(data=np.random.normal(loc=5,scale=4,size=100))# cmap: 颜色方案,直接配置#FF000会抛出异常,在控制台会打印正确的值sns.kdeplot(s1,s2,cmap='BrBG',shade=True)# 0,7,1版本支持: sns.plt.show()plt.show()

双核密度估计图

多图效果

# 封装了直方图和核密度估计图: rug: 控制是否画样本点sns.distplot(a=s1,hist=False,kde=True,rug=True,kde_kws={'shade':True},label='AAA')sns.distplot(a=s2,hist=False,kde=True,rug=True,kde_kws={'shade':True},label='BBB')plt.show()

密度估计图(多图)

透视表、热力图

透视图重现官方数据

# 查看源码发现下载地址是github:https://github.com/mwaskom/seaborn-datadf = sns.load_dataset("flights")print(df.info())print(df.head(n=3))# 如果数据量大可以尝试保存在本地df.to_csv('../data/flights.csv')# 采用透视表对数据结构进行重新组装df = df.pivot(index='month',columns='year',values='passengers')print(df)

热力图

  1. 可以直观的了解数据的分布情况,和差异
  2. 也能方便的发现异常数据
sns.heatmap(df,annot=True,fmt='d',cmap='YlGnBu')plt.show()#可以通过柱状图显示每年的乘客数量s = df.sum()print(s,type(s))sns.barplot(x=s.index,y=s.values)plt.show()

热力图显示每年每月的旅客人数

Seaborn样式修改与散点图

样式修改

sns.set_style("darkgrid",{'grid.color':'#00ff00'})# 返回样式的属性值for item in sns.axes_style().items():    print(item)# numpy 模拟等差数列x = np.linspace(0,10,100)y1 = np.sin(x)y2 = np.sin(x + 2) * 1.5sns.lineplot(x,y1)sns.lineplot(x,y2)plt.show()

修改样式之后的效果如下

分布图与分类散点图

tips = sns.load_dataset("tips")tips.to_csv("../data/tips.csv")print(tips.head())# 分布散点图  默认会对x列进行分组操作  jitter: 是否支持抖动效果# sns.stripplot(x='day',y='total_bill',data=tips,jitter=True)# 分类散点图  hue: 要分类的列,建议列值不能太多sns.swarmplot(x='day',y='total_bill',data=tips,hue='sex')plt.show()

分类散点图效果

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Seaborn 绘制 21 种超实用精美图表
Python数据可视化:用Seaborn绘制高端玩家版散点图
Python绘图库之Seaborn(一)
Python 数据可视化,常用看这一篇就够了
用Seaborn绘制图表
Python数据可视化库seaborn的使用总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服