绘图和可视化之Seaborn

绘图和可视化之Seaborn_第1张图片


优势在哪里?

使用Matplotlib

绘图和可视化之Seaborn_第2张图片


绘图和可视化之Seaborn_第3张图片


通过iris.Name.unique()可以看出有三种花

代码

绘图和可视化之Seaborn_第4张图片

结果

绘图和可视化之Seaborn_第5张图片

通过Seaborn去画只需要一行代码

绘图和可视化之Seaborn_第6张图片

                                                                          直方图和密度图

(matplotlib)

绘图和可视化之Seaborn_第7张图片

直方图

密度图


Seaborn中各种图:kde表示密度图

绘图和可视化之Seaborn_第8张图片


                                                                   Seaborn实现柱状图和热力图

绘图和可视化之Seaborn_第9张图片

绘图和可视化之Seaborn_第10张图片

得到DataFrame的原数据


加工---》生成透视表

绘图和可视化之Seaborn_第11张图片

画热力图

绘图和可视化之Seaborn_第12张图片

绘图和可视化之Seaborn_第13张图片

另一种:

绘图和可视化之Seaborn_第14张图片


                                                                                 柱状图

绘图和可视化之Seaborn_第15张图片

绘图和可视化之Seaborn_第16张图片

绘图和可视化之Seaborn_第17张图片


                                                               Seaborn图形显示效果的设置

没有Seaborn的时候用matplotlib

绘图和可视化之Seaborn_第18张图片

绘图和可视化之Seaborn_第19张图片

使用Seaborn

def sinplot():

      plt.plot(x,y1)

      plt.plot(x,y2)

绘图和可视化之Seaborn_第20张图片

style 风格

设置主题风格

绘图和可视化之Seaborn_第21张图片

微调

绘图和可视化之Seaborn_第22张图片

eg:

绘图和可视化之Seaborn_第23张图片


使用sns.set()还原

绘图和可视化之Seaborn_第24张图片

更改图形曲线的属性

绘图和可视化之Seaborn_第25张图片

eg:

绘图和可视化之Seaborn_第26张图片

----------------------------------------------------------------------------------------------------------------------------------

Seaborn是Python基于matplotlib的数据可视化工具。它提供了很多高层封装的函数,帮助数据分析人员快速绘制美观的数据图形,而避免了许多额外的参数配置问题。 本案例中,我们以波士顿房价数据集为例,演示如何使用seaborn绘制常见的图形。包括散点图、柱状图、饼图、直方图、盒图、概率密度图、小提琴图和点对图等。

波士顿房价数据集中每一列数据对应的含义如下表所示:

绘图和可视化之Seaborn_第27张图片

1 数据准备

首先我们可以使用pandas将数据文件读取,数据类型为DataFrame。

import pandas as pd 
boston = pd.read_csv("./input/boston_house_prices.csv") 
boston.head(10)
绘图和可视化之Seaborn_第28张图片
%matplotlib inline
import seaborn as sns

2 散点图

散点图能够同时将两个数值型特征可视化,从散点图中我们可以直观地观察两个特征之间的关系。例如是否存在线性关系等。 seaborn中可以使用 jointplot 函数绘制散点图。jointplot函数通常由三个参数需要设置,x和y分别代表需要横轴和纵轴显示的特征名称。data为数据,可以为DataFrame类型。例如在房价数据中,我们需要绘制犯罪率(CRIM)与房价(MEDV)之间的散点图,可以使用以下代码:

sns.jointplot(x="CRIM" , y = "MEDV" ,data = boston)


绘图和可视化之Seaborn_第29张图片


从上图可以发现,我们不仅得到了两个特征的散点图,对于每一个单独的特征,jointplot函数默认将其直方图进行了绘制。同时,也将特征之间的皮尔逊相关系数计算出来。皮尔逊相关系数能够用来判断特征之间的线性关系,其取值范围为[-1,1]。取值为0表示两个特征没有相关性。越接近1说明特征之间越存在正相关性。越接近-1表示特征之间越存在负的线性相关性。在我们的上述例子中,皮尔逊相关系数为-0.39,说明犯罪率与房价之间存在一定的负相关性。

我们可以进一步使用 lmplot 方法将两个特征之间的线性回归直线也画出来。

sns.lmplot(x="CRIM" , y = "MEDV" ,data = boston)


绘图和可视化之Seaborn_第30张图片


3 直方图

对于连续型特征,我们可以使用直方图来观察特征取值的分布情况。在seaborn中,直方图可以使用 distplot 函数进行绘制。例如,我们绘制出单位财产税(TAX)特征的直方图。

sns.distplot(boston["TAX"])

绘图和可视化之Seaborn_第31张图片

distplot 函数默认同时绘制直方图和KDE(核密度图),如果不需要核密度图,可以将kde参数设置成False。

sns.distplot(boston["TAX"], kde = False)

绘图和可视化之Seaborn_第32张图片

同样,我们可以绘制房间数的直方图。

sns.distplot(boston["RM"], kde = False)

绘图和可视化之Seaborn_第33张图片

可见,房间数近似服从正态分布。我们可以通过bins参数设置分段数量,例如我们观察房价(MEDV)特征,将bins设置成100。

sns.distplot(boston["MEDV"], bins = 100, kde = False)

绘图和可视化之Seaborn_第34张图片

4 盒图

盒图可以直观地将连续型特征的中位数、上下四分位数显示出来。通常也作为一种单特征离群值检测的定性方法。在seaborn中,可以使用 boxplot 函数绘制盒图。参数orient设置盒图的朝向。

sns.boxplot(boston["MEDV"],orient = "v")

绘图和可视化之Seaborn_第35张图片

我们可以先对数据进行分组,然后对比不同组数据的分布(盒图表示)。我们只需要给 boxplot 函数制定x和y两个参数。其中,x为分组特征,需要为离散型。y为对比的特征。例如我们查看不同的房间数下,房价的分布情况,可以使用以下代码:

import math boston["RM_int"] = boston["RM"].map(math.floor) #对RM取整 
sns.boxplot(x="RM_int", y = "MEDV",data = boston, orient="v")
绘图和可视化之Seaborn_第36张图片

通过上图可以看出,随着房间数目的增大,房价呈现先下降后上升的变化趋势。

进一步地,我们可以通过hue参数制定第二个分组特征。例如我们希望进一步观察房子是否在河边(CHAS)对房价的影响。

sns.boxplot(x="RM_int", y = "MEDV", hue = "CHAS",data = boston, orient="v")

绘图和可视化之Seaborn_第37张图片

通过上述盒图,我们可以得出两个基本观察结论。首先,房间数小于5的房子都不在河边。其次,在房间数量相同的情况下,河边的房子比非河边的房子价格要高。以上两点与我们日常生活经验也是相符合的。

5 柱状图

对于离散型特征,我们可以使用柱状图绘制其每一种取值的样本数量。例如,对于房间数(RM_int),可以通过seaborn的 countplot 函数画出不同房间数量的房子的数量。

sns.countplot(x = "RM_int", data = boston)

绘图和可视化之Seaborn_第38张图片

同样地,我们可以进一步制定一个分组特征绘制不同分组下的柱状图。

sns.countplot(x = "RM_int", hue = "CHAS", data = boston)

绘图和可视化之Seaborn_第39张图片

6 核密度图

与直方图类似,核密度图也是一种研究特征分布的工具。在seaborn中,通过 kdeplot 函数绘制核密度图。

sns.kdeplot(boston["CRIM"])
绘图和可视化之Seaborn_第40张图片
sns.kdeplot(boston["ZN"])
绘图和可视化之Seaborn_第41张图片 绘图和可视化之Seaborn_第42张图片

我们可以绘制两个特征的核密度图。例如,绘制一氧化碳和低收入人群占比两个特征的核密度图。

sns.kdeplot(boston["NOX"], boston["LSTAT"])

绘图和可视化之Seaborn_第43张图片

7 小提琴图

核密度图是一种结合了盒图和核密度图的图。它将盒图和密度图展示在同一个图上,因长相通常类似小提琴而得名。在seaborn中,可以使用 violinplot 函数绘制小提琴图。

sns.violinplot(x="RM_int", y = "MEDV",data = boston)

绘图和可视化之Seaborn_第44张图片


与盒图类似,我们可以在小提琴图中制定额外的分组特征。

sns.violinplot(x="RM_int", y = "MEDV", hue = "CHAS",data = boston, orient="v")
绘图和可视化之Seaborn_第45张图片


将上图的分组分别绘制在盒图的两边, 使用split=True参数设置。

sns.violinplot(x="RM_int", y = "MEDV", hue = "CHAS",split = True, data = boston)

绘图和可视化之Seaborn_第46张图片

8 点对图

点对图可以同时将多个特征两两之间的散点图等通过一条命令进行绘制。点对图的绘制函数为 pairplot。为了显示美观,我们只选取数据找那个特征的一个子集进行绘制。

sns.pairplot(boston[["CRIM","NOX","RM","LSTAT","MEDV"]])
绘图和可视化之Seaborn_第47张图片


9 热力图

import matplotlib.pyplot as plt 
corr = boston.corr()#特征的相关系数矩阵 
f, ax = plt.subplots(figsize=(10, 10)) 
cmap = sns.diverging_palette(220, 10, as_cmap=True) 
sns.heatmap(corr, cmap=cmap, vmax=1.0, square=True, xticklabels=2, yticklabels=2, linewidths=.3, cbar_kws={"shrink": .5}, ax=ax) 
plt.show()

绘图和可视化之Seaborn_第48张图片

通过以上热力图我们可以直观地观察特征之间的相关性强弱。


你可能感兴趣的:(Python基础)