Python数据分析11——Seaborn绘图

目录

Seaborn介绍

Seaborn安装

官方文档

Seaborn绘图风格

sns.axes_style

sns.set_style()

sns.set

sns.despine

Seaborn颜色风格

Seaborn在Axes绘图

Seaborn绘图

关系型绘图

seaborn.relplot()

基本使用

hun参数 

添加col和row参数 

绘制折线图 

分类绘图

分类散点图

分类分布图 

分类统计图

条形图

柱形图

点线图

分布绘图

单变量分布

二变量分布 

pairplot 

线性回归绘图

补充

热力图和EDA探索性分析 


Seaborn介绍

Seaborn 是一个基于 matplotlib 且数据结构与 pandas 统一的统计图制作库。他提前已经定义好了一套自己的风格。然后也封装了一系列的方便的绘图函数,之前通过 matplotlib 需要很多代码才能实现完成的图,使用 seaborn 可能非常简单,一行代码搞定。

Seaborn安装

1.通过 pip:pip install seaborn;

2.通过 anaconda:conda install seaborn;

官方文档

官网:seaborn: statistical data visualization — seaborn 0.11.2 documentation (pydata.org)icon-default.png?t=M5H6http://seaborn.pydata.org/

中文学习文档:

An introduction to seaborn-Seaborn 0.9 中文文档 (cntofu.com)icon-default.png?t=M5H6https://www.cntofu.com/book/172/docs/1.md

Seaborn绘图风格

在seaborn中,可以通过三个函数来设置样式。分别是 sns.set_style;sns.axes_style;sns.set 方法。

sns.axes_style

(1)如果没有传任何参数,返回的是字段属性;

(2)临时的样式;

with sns.axes_style("dark",{"ytick.left":True}):
    sns.scatterplot(x="total_bill",y="tip",data=tips)

例如:

Python数据分析11——Seaborn绘图_第1张图片

 

sns.set_style()

这个函数和 sns.axes_style 一样,也是用来设置绘图风格的。但是这个函数的风格设置,不是临时的,而是一旦设置了,那么下面所有绘图风格都会用这个风格。

sns.set_style("darkgrid")
sns.scatterplot(x="total_bill",y="tip",data=tips)

例如:

Python数据分析11——Seaborn绘图_第2张图片

 

sns.set

set 方法也是用来设置样式的,它的功能更加强大。除了 style 以外,还可以设置调色板,字体,字体大小,颜色等,也可以设置其它的 matplotlib.rcParams可以接受的参数。

sns.set(rc={"lines.linewidth":4})
fmri = sns.load_dataset("fmri")
sns.lineplot(x="timepoint",y="signal",data=fmri)

例如:

Python数据分析11——Seaborn绘图_第3张图片

 

sns.despine

移除轴脊柱函数;

例如:

Python数据分析11——Seaborn绘图_第4张图片

Seaborn颜色风格

不推荐使用(使用起来不是很方便)这里不做过多的描述。

实例:

Python数据分析11——Seaborn绘图_第5张图片

Python数据分析11——Seaborn绘图_第6张图片 

 

Seaborn在Axes绘图

实际上 seaborn 的绘图函数中也有大量的直接使用 Axes 进行绘图的,凡是函数名中已经明确了这个图的类型,这种图都是使用 Axes 绘图的。比如 sns.scatterplot,sns.lineplot,sns.barplot 等。Axes绘图可以直接使用之前 matplotlib 的一些设置图的元素。

fig,ax = plt.subplots(1,2,figsize=(20,5))
sns.scatterplot(x="total_bill",y="tip",data=tips,ax=ax[0])
sns.barplot(x="day",y="total_bill",data=tips,ax=ax[1])

例如绘制条形图

Python数据分析11——Seaborn绘图_第7张图片

绘制散点图

Python数据分析11——Seaborn绘图_第8张图片

 

Seaborn绘图

关系型绘图

seaborn.relplot()

这个函数功能非常强大,可以用来表示多个变量之间的关联关系。默认情况下是绘制散点图,也可以绘制线型图,具体绘制什么图形是通过 kind 参数来决定的。实际上一下两个函数就是relplot的特例:

散点类型:scatterplot -> relplot(kind="scatter");

线性类型:lineplot -> replot(kind="line");

基本使用

import seaborn as sns
tips = sns.load_dataset("tips",cache=True)
sns.relplot(x="total_bill",y="tip",data=tips)

Python数据分析11——Seaborn绘图_第9张图片

hun参数 

hue 参数是用来控制第三个变量的颜色显示的。比如我们在以上图的基础上体现出星期几的参数,那么可以通过以下代码来实现:

sns.relplot(x="total_bill",y="tip",hue="day",data=tips)

Python数据分析11——Seaborn绘图_第10张图片

添加col和row参数 

col 和 row ,可以将图根据某个属性的值的个数分割成多列或者多行。比如在以上图的基础上我们想要把 lunch 和 dinner 分割成两个图显示,则:

# col_wrap=1 控制换行
# size  点的大小
sns.relplot(x='total_bill',y='tip',data=tips,col='time',col_wrap=1,size="size")
sns.relplot(x='total_bill',y='tip',data=tips,col='time')

Python数据分析11——Seaborn绘图_第11张图片

Python数据分析11——Seaborn绘图_第12张图片

 

绘制折线图 

relplot 通过设置 kind="line" 可以绘制折线图。并且它的功能比 plt.plot 更加强大。plot只能指定具体的 x轴和y轴的数据。而 relplot 则可以在自动在两组数据中进行计算绘图。

"""
需求:signal与timepoint变化关系 --- > 折线图
读图
线 --- 均值
阴影  --- 置信区间
    ci=None
style:region    不同区域使用线条样式不一样 
"""
sns.relplot(x='timepoint',y='signal',data=fmri,kind='line',ci=None,hue="region",col="event",style="region")

Python数据分析11——Seaborn绘图_第13张图片

 

分类绘图

分类图的绘制,采用的是 sns.catplot 来实现的。cat是category的简写,这个方法默认绘制的是 分类散点图,如果想要绘制其他类型的图,同样也是通过 kind 参数来指定。

主要分为

(1)分类散点图;

(2)分类分布图;

(3)分类统计图;

分类散点图

分类散点图比较适合数据量不是很多的情况,它是用 catplot 来实现的,但是也有一下两种特别地方法:

(1)stripplot():catplot(kind="strp")默认的;

(2)swarmplot():catplot(kind="swarm");

sns.catplot(x="day",y="total_bill",data=tips,hue="sex")

Python数据分析11——Seaborn绘图_第14张图片 

"""
分簇散点图

缺点  数据量巨大 不适用
"""
sns.catplot(x="day",y="total_bill",data=tips,hue="sex",kind="swarm")

Python数据分析11——Seaborn绘图_第15张图片

分类分布图 

分类分布图,主要是根据分类来看,然后在每个分类下的数据的分布情况。也是通过 catplot

 来实现的,以下三个方法分别是不同的 kind 的参数:

(1)箱型图:boxplot()        (kind="box")

(2)小提琴图:vioinplot()        (kind=”violin")

Python数据分析11——Seaborn绘图_第16张图片

Python数据分析11——Seaborn绘图_第17张图片

 

分类统计图

分类统计图,则是根据分类,统计每个分类下的数据的个数或者比例。有以下几种方式:

(1)条形图:barplot()        (kind="bar")

(2)柱形图:countplot()        (kind="count")

(3)点线图:pointplot()        (kind="point")

条形图

seaborn 中的条形图具有统计功能,可以统计处比例,平均数,也可以按照你想要的统计函数来统计。

"""
分类统计图
需求:直观体现不同日期total_bill数量
黑色线  置信区间  线条越长意味数据比较离散

estimator :函数

"""
sns.catplot(x='day',y='total_bill',data=tips,kind='bar',estimator=sum)

Python数据分析11——Seaborn绘图_第18张图片

 

柱形图

柱形图是专门用来统计某个单一变量出现数量的图形。

sns.catplot(x="sex",data=titanic,kind="count")

Python数据分析11——Seaborn绘图_第19张图片

点线图

点线图可以非常方便的看到变量之间的趋势变化。

sns.catplot(x="sex",y="survived",data=titanic,kind="point",hue="class")

Python数据分析11——Seaborn绘图_第20张图片

 

分布绘图

分布绘图主要分为单变量分布以及二变量分布和pairplot;

单变量分布

单一变量主要就是通过直方图控制的,在 seaborn 种直方图的绘制采用的是 distplot,其中 dist 是 distribution的简写,不是 histogram 的简写。

titanic = pd.read_csv("./seaborn-data-master/titanic.csv")
titanic.head()
sns.distplot(titanic["age"])

Python数据分析11——Seaborn绘图_第21张图片

参数变化

"""
需求:观察所有人年龄的分布情况

单变量分布图 -- > 直方图
- kde  是否展示kde曲线
- bins  指定组数
- rug  越密集数据越集中
- hist  是否展示直方图
"""
sns.distplot(age_titanic['age'],bins=30,rug=True,hist=False)

Python数据分析11——Seaborn绘图_第22张图片

二变量分布 

多变量分布图可以看出两个变量之间的分布关系。一般都是采用多个图进行表示。多变量分布图采用的函数是 jointplot。

"""
二变量分布
kind='hex'  六边形的点
gridsize    点的大小
height      图形大小 20*20
ratio       主图和副图之间比例
space       主图和副图之间距离

marginal_kws
"""
sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex',gridsize=15,height=5,ratio=3,space=0,marginal_kws={"rug":True,"kde":True},color="red")

Python数据分析11——Seaborn绘图_第23张图片

pairplot 

通常用来机器学习建立模型之前选择合适的模型。

sns.pairplot(tips,vars=["total_bill","tip"])

Python数据分析11——Seaborn绘图_第24张图片

线性回归绘图

线性回归图可以帮助我们看到数据的关系趋势。在 seaborn 种可以通过 regplot 和lmplot两个函数实现。regplot 的 x 和 y 可以为 Numpy数组,Series等变量。而lmplot的x和y必须为字符串,并且 data的值不能为空:

(1)regplot(x,y,data=None);

(2)lmplot(x,y,data)。

Python数据分析11——Seaborn绘图_第25张图片

补充

热力图和EDA探索性分析 

#输入需要使用的库
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import seaborn as sns
from pandas_profiling import ProfileReport
"""数据分析"""
#热力图
# 分析各特征之间的相关性并可视化。
plt.figure(figsize=(15,10))
sns.heatmap(dataset.corr(),annot=True)



#EDA探索性分析
profile = ProfileReport(dataset, title='EDA', explorative=True)

#"第一个不行用第二个"   https://blog.csdn.net/weixin_44527237/article/details/110096564
profile.to_widgets()
profile.to_notebook_iframe()

你可能感兴趣的:(python数据分析,python,数据分析,Seaborn,Matplotlib)