Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图

数据可视化系列汇总:
Matplotlib可视化①——二维图表绘制(折线图&直方图&散点图&条形图&箱形图)
Matplotlib可视化②——3D绘制散点图&曲面图&折线图&等高线图
Excel数据分析高级技巧①——动态图表制作(offset,vlookup,控件…)
Excel高级图表制作①——电池图/KPI完成情况对比图/重合柱形图
Excel高级图表制作②——帕累托图
Excel高级图表制作③——漏斗图/转化路径图

Seaborn是在Matplotlib的基础了进行更高级别的API封装,可以轻轻松松绘制出各式精美且方便数据分析的图表,今天主要总结了以下常用的几种:

直方图——distplot , kdeplot,看单变量的分布,是否正态,是否左右偏,有几个高峰等
箱型图——boxplot,看单变量的分布,常用来找异常值
散点图——striplot,swarmplot,看单变量的分布,与Excel中两变量相关性分布不太一样,这里的散点图更像是箱型图
变量关系图——jointplot,pairplot,双变量或多变量的两两关系图,这个就是Excel常见的散点图了
回归图——lmplot,regplot,可以画线性和非线性回归
热力图——heatmap,直观展示两两变量之间的相关程度
条形图——barplot,countplot,前者计算均值,后者计算个数,与Excel中的条形图非常类似

一、直方图

① dishist是hist的加强版,kdeplot是密度曲线图,dishist其实已经包含了kdepost

#选择数据并进行清洗
data = pd.read_csv('train.csv')
data.drop_duplicates(keep='first',inplace=True)
data.drop(['Cabin'],axis=1,inplace=True)
data.Age.fillna(data.Age.mean(),inplace=True)
data.dropna(how='any',inplace=True)
    
fig,axes = plt.subplots(2,2)
sns.distplot(data.Age,ax=axes[0,0],kde=True,hist=True)  # displot有2个特别的参数kde和hist,True是保留,False是不保留,当hist为False且kde为True时就变成了kde图
sns.kdeplot(data.Age,ax=axes[0,1],shade=True)  # kdeplot其实是在displot的基础上去掉了直方图,shade是否要填充
sns.distplot(data.Age,ax=axes[1,0],kde=False,color='b')
sns.distplot(data.Age,ax=axes[1,1],hist=False,kde=True,color='g',kde_kws={'shade': True},rug=True)
plt.show()

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第1张图片

二、箱型图

'''
set_style可设置图像背景格式,常用的有:
"whitegrid"—白色网格背景
"darkgrid"——灰色网格背景
"dark"   # 灰色背景
"white"     # 白色背景
"ticks"      # 四周加边框和刻度
'''

fig = plt.figure()
ax1 = fig.add_subplot(2,3,1)
sns.set_style('whitegrid')
sns.boxplot(y=data.Age,linewidth=0.5) # 换成X就是横着画了
ax2 = fig.add_subplot(2,3,2)
sns.set_style('dark')
sns.boxplot(x='Pclass',y='Age',data=data,palette='Blues_d')  # palette是颜色,总共有muted,RdBu,Blues_d,Set1,Set2,Set3
ax3 = fig.add_subplot(2,3,3)
sns.set_style('white')
sns.boxplot(x='Pclass',y='Age',hue='Survived',data=data,order=[2,1,3],palette='RdBu') # order可以设定顺序
ax4 = fig.add_subplot(2,3,4)
sns.set_style('darkgrid')
sns.boxplot(x='Pclass',y='Age',hue='Survived',data=data,palette='Set2')  # hue是分组绘图,会用不同颜色区分
ax5 = fig.add_subplot(2,3,5)
sns.boxplot(data=data,linewidth=0.2)
ax6 = fig.add_subplot(2,3,6)
sns.boxplot(x='Pclass',y='Age',data=data,color='g')
sns.swarmplot(x='Pclass',y='Age',data=data,color='y',linewidth=0.1)  # boxplot与swarmplot可以一起画出带分布的箱型图
plt.show()

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第2张图片

三、散点图

fig,axes = plt.subplots(2,3)
sns.stripplot(y=data.Fare,ax=axes[0,0],linewidth=0.01)
sns.swarmplot(y=data.Fare,ax=axes[0,1])  # swarmplot是带分布的散点图,stripplot是不带分布的
sns.stripplot(x='Pclass',y='Age',data=data,ax=axes[0,2],jitter=True) # jitter是抖动的意思
sns.stripplot(x='Pclass',y='Age',data=data,ax=axes[1,0],hue='Survived',jitter=True)
sns.stripplot(x='Pclass',y='Age',data=data,ax=axes[1,1],hue='Survived',split=True,jitter=True) # hue可以分组,如果再加上split=True,则可以将两个组分开画
sns.swarmplot(x='Pclass',y='Age',data=data,ax=axes[1,2],hue='Survived',split=True)
plt.show()

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第3张图片

四、变量关系图

sns.jointplot(x='Age',y='Fare',data=data)

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第4张图片

sns.jointplot(x='Age',y='Fare',data=data,kind='reg')  # 是带回归线

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第5张图片

sns.jointplot(x='Age',y='Fare',data=data,kind='kde',space=0)  # 是密度曲线

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第6张图片

sns.jointplot(x='Age',y='Fare',data=data,kind='hex',size=5,ratio=3,color='b') # hex是变成六边形

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第7张图片

sns.pairplot(data) # 所有变量两两画图

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第8张图片

sns.pairplot(data,diag_kind='kde') # 通过diag_kind设定中间曲线的格式

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第9张图片

sns.pairplot(data,vars=[‘Age’,‘Fare’,‘Pclass’]) # 选择部分变量画图

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第10张图片

sns.pairplot(data,vars=['Age','Fare'],hue='Pclass',markers=['*','o','D']) # 还可以通过hue分组,以及通过markers字段设定每组用不同的标记

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第11张图片

五、回归图

sns.lmplot(x='Age',y='Fare',data=data)  # 默认线性回归

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第12张图片

sns.lmplot(x='Age',y='Fare',data=data,order=2) # order代表项,2代表二次多项式

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第13张图片

sns.lmplot(x='Age',y='Fare',data=data,order=3,ci=0.9)  # ci代表置信度

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第14张图片

sns.lmplot(x='Age',y='Fare',data=data,hue='Survived',markers=['o','D']) # hue分组后还是在一张图上画

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第15张图片

sns.lmplot(x='Age',y='Fare',data=data,col='Survived',col_wrap=2)  # col可以在两张图上画,类似于之前的split

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第16张图片

sns.lmplot(x='Age',y='Fare',data=data,hue='Survived',col='Survived') # hue和col可以同时使用一个字段

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第17张图片

sns.lmplot(x='Age',y='Fare',data=data,hue='Survived',col='Pclass',size=4)  # hue和col如何不使用同一个字段,相当于分成了先按col分成子图,子图中再按hue分组

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第18张图片

六、热力图

df = data.pivot_table('Fare','Pclass','Age')
sns.heatmap(df) # 绘制三个变量的热力图,这个例子不太好使,更适合用在 不同城市不同月份的销售额这种

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第19张图片

   s = data.corr()
    sns.heatmap(s,annot=True)  # 绘制两两变量的相关性,annot是展示数值

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第20张图片

七、条形图

fig,axes = plt.subplots(2,3)
sns.barplot(x='Pclass',y='Age',data=data,ax=axes[0,0])  # 默认的是均值,estimator='median'可以更改为中位数
sns.barplot(x='Pclass',y='Age',data=data,ci=0,ax=axes[0,1]) # ci=0可以取消置信线
sns.barplot(x='Pclass',y='Age',hue='Survived',data=data,ax=axes[0,2],ci=0) # 通过hue分组
sns.countplot(x='Pclass',data=data,ax=axes[1,0])  # countplot是计算单变量的个数
sns.countplot(x='Pclass',data=data,hue='Survived',ax=axes[1,1]) # 也可以用hue分组计数
sns.countplot(y='Pclass',data=data,hue='Survived',ax=axes[1,2],hue_order=[1,0]) # 如果是y,就变成了横条形图
plt.show()

Seaborn做图系列①——直方图&箱型图&散点图&变量关系图&回归图&热力图&条形图_第21张图片
如果觉得对你有帮助,可否给我一个小小的赞~

你可能感兴趣的:(Seaborn)