01_Seaborn快速入门

在这里插入图片描述


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


Matplotlib VS Seaborn

Seaborn概念介绍

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

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

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

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

Matplotlib快速回顾

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

import pandas as pd
import matplotlib.pyplot as plt
import 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 sns
sns.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-data
df = 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.5
sns.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()

分类散点图效果
在这里插入图片描述

在这里插入图片描述

发布了128 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/lsqzedu/article/details/104197030