python绘图之seaborn 笔记

前段时间学习了梁斌老师的数据分析(升级版)第三讲<探索性数据分析及数据可视化>,因为以前一直比较忙没有来得及总结,趁今天是周末有点闲暇时间,整理一下笔记:html

什么是seaborn

Seaborn是一种基于matplotlib的Python绘图工具库。它提供了一种高度交互式界面,便于用户可以作出各类有吸引力的,信息量大的统计图表。python

在大多数状况下使用seaborn就能作出很具备吸引力的图,而使用matplotlib就能制做具备更多特点的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式的可视化。算法

 

特色:api

  • 多个内置主题及颜色主题
  • 可视化单一变量,二位变量用于比较数据
  • 可视化线性回归模型中的独立变量及不独立变量
  • 可视化矩阵数据, 经过聚类算法探究矩阵间的结构
  • 可视化时间序列数据及不肯定性的展现
  • 可在分割区域制图,用于复杂的可视化

 

安装数组

pip install seaborn数据结构

若是是在Anaconda环境下,打开Anaconda prompt:frontend

conda install seaborndom

 

数据集分布可视化函数

  1 单变量分布                                              seaborn.distplot(abins=Nonehist=Truekde=Truerug=Falsefit=Nonehist_kws=Nonekde_kws=Nonerug_kws=Nonefit_kws=Nonecolor=Nonevertical=Falsenorm_his    t=Falseaxlabel=Nonelabel=Noneax=None)工具

a : series或一维数组或列表类型的数据

bins :设置矩形条的数量

hist :控制是否显示条形图

kde :控制是否显示核密度估计图

rug :控制是否显示观测的小细条(边际毛毯)

fit :控制拟合的参数分布图形

vertical : 显示正交控制

import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns    //注意:一旦导入了seaborn,matplotlib的默认做图风格就会被覆盖成seaborn的格式
sns.set_style("dark") #设置背景色为黑色
%matplotlib inline
// 准备数据
x1 = np.random.normal(size = 1000) x2 = np.random.randint(0, 50, 200)

     直方图    

sns.distplot(x1, bins=20, kde=True,rug=True)  

    核密度估计(核密度估计是在几率论中用来估计未知的密度函数,属于非参数检验方法之一。)

sns.distplot(x2, hist=False, rug=True)

sns.kdeplot(x2, shade=True)  //shade控制阴影
sns.rugplot(x2)

    拟合参数分布 

x = np.random.gamma(6, size=200)#生成gamma分布的数据 sns.distplot(x, kde=False, fit=stats.gamma);#fit拟合

 

  2 双变量分布 

// 准备数据
df1 = pd.DataFrame({"x": np.random.randn(200),
                   "y": np.random.randn(200)})

df2 = pd.DataFrame({"x": np.random.randn(200),
                   "y": np.random.randint(0, 100, 200)})

    散布图    

sns.jointplot(x="x", y="y", data=df1)

    二维直方图

sns.jointplot(x="x", y="y", data=df_obj1, kind="hex")

  核密度估计 

sns.jointplot(x="x", y="y", data=df_obj1, kind="kde")

  3 数据集中变量间关系可视化 

  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(缺失的数据),不然会报错

dataset = sns.load_dataset("tips")
sns.pairplot(dataset)

 

类别数据可视化

 

// 准备数据
data = sns.load_dataset('exercise')

数据类型以下:
 Unnamed: 0  id     diet  pulse    time  kind
0           0   1  low fat     85   1 min  rest
1           1   1  low fat     85  15 min  rest
2           2   1  low fat     88  30 min  rest
3           3   2  low fat     90   1 min  rest
4           4   2  low fat     92  15 min  rest

 

 

 

  1 类别散点图

sns.stripplot(x="diet", y="pulse", data=data) //数据点会重叠

sns.swarmplot(x="diet", y="pulse", data=data, hue='kind')//数据点不重叠

  2 类别内数据分布

    箱型图 

sns.boxplot(x="diet", y="pulse", data=data)

  小提琴图 

sns.violinplot(x="diet", y="pulse", data=data, hue='kind')   // hue 指定子类别

  3 类别内统计图

    柱状图

sns.barplot(x="diet", y="pulse", data=data, hue='kind')

    点图 

sns.pointplot(x="diet", y="pulse", data=data, hue='kind')

 

 

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

相关文章
相关标签/搜索