在做数据分析之前,有时需要对数据进行可视化,从宏观上对数据的分布有一个认识,进而更好的理解数据在实际项目中的意义。
Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn就能做出很具有吸引力的图,而使用matplotlib能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。
一、目录:
分布图
- displot (直方图)
- kedplot(概率密度图)
- jointplot(联合密度图)
- pairplot(多变量图)
分类图
- boxplot(箱线图)
- violinplot(提琴图)
回归图
- lmplot (回归图)
矩阵图
- heatmap (热力图)
seaborn可以画的图形很多,不仅仅限于上面的几种图,详见官方文档:http://seaborn.pydata.org/index.html
总结的图形来源于官方文档、自己的相关数据可视化项目中
二、分布图:
2.1:displot(直方图)
直方图,是一种表示数据变化情况的图形。可以比较直观的看出数据的特性分布,对数据的分布状况有个宏观认识。具体参数如下:
seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None,
hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None,
vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
- bins:int或list,控制直方图的有多少个箱体
- hist:是否显示方块
- kde:是否显示密度估计曲线
- rug:控制是否生成观测数值的小细条(边际毛毯)
- fit:控制拟合的参数分布图形,能够直观的评估图形与观察数据的对应关系(黑色线条为确定的分布)
- -{hist, kde, rug, fit}_kws :参数接收字典类型,可以自行定义更多高级的样式;
- norm_hist:若为True,则直方图的高度显示为密度而非计数(含有kde图像中默认为True)
- vertical:放置的方向,如果为真,则观测值位于y-轴上(默认为False,x轴上)
-
axlabel:string、False、None,设置标签。
2.2、kdeplot(概率密度图)
概率密度图可以比较直观的看出数据样本本身的分布特征(作用效果与直方图中的kde效果类似),具体参数如下:
seaborn.kdeplot(data, data2=None, shade=False, vertical=False, kernel='gau',
bw='scott', gridsize=100, cut=3, clip=None, legend=True, cumulative=False,
shade_lowest=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)
- data、data2:表示可以输入双变量,绘制双变量核密度图;
- shade:是否填充阴影,默认不填充;
- vertical:放置的方向,如果为真,则观测值位于y轴上(默认False,x轴上);
- kernel:{‘gau’ | ‘cos’ | ‘biw’ | ‘epa’ | ‘tri’ | ‘triw’ }。默认高斯核(‘gau’)二元KDE只能使用高斯核。至于什么是核函数,这个学问就大了,建议多看看论文;
- bw:{‘scott’ | ‘silverman’ | scalar | pair of scalars }。四类核密度带方法,默认scott (斯考特带宽法),建议下来了解一下这四种方法的区别;
- gridsize:这个参数指的是每个格网里面,应该包含多少个点,越大,表示格网里面的点越多(觉得电脑OK的可以试试,有惊喜),越小表示格网里面的点越少;
- cut:参数表示,绘制的时候,切除带宽往数轴极限数值的多少,这个参数可以配合bw参数使用;
- cumulative:是否绘制累积分布;
- shade_lowest:是否有最低值渲染,这个参数只有在二维密度图上才有效;
- clip:表示查看部分结果,是一个区间;
- cbar:参数若为True,则会添加一个颜色棒(颜色帮在二元kde图像中才有);
双变量密度图:
2.3、jointplot(联合密度图)
联合分布全称是联合概率分布,是两个及以上随机变量组成的随机变量的概率分布。即两个变量之间的联系与各个方向上的分布。具体参数如下:
seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None,
height=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None,
marginal_kws=None, annot_kws=None, **kwargs)
- x,y:为DataFrame中列名或者是两组数据
- kind:{“scatter”|“reg”|“resid”|"kde"|"hex"}。表示联合图的类型,默认为散点图。
- stat_func:用于计算统计量关系的函数(可以是自己定义的函数)
- ratio:中心图与侧边图的比例,越大则中心图的占比越大
- dropna:去除缺失值
- height:图形的尺寸大小(正方形)
- space:中心图与侧边图的间隔大小;
- xlim,ylim:x,y的范围
2.4、pairplot(变量关系组图)
绘制给定数据集中,默认数据之间两两关系的图。该函数将创建一个轴网络,这样数据中的每个变量都讲通过跨一行的y轴和跨单个列的x轴共享。而对角线中则为该列变量的单变量分布。具体参数如下:
seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None,
x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None,
height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None,
grid_kws=None, size=None)
- vars:data中的子集,否则为data中的全部数量型数据(定性性数据是不会分的)
- kind:{“scatter”,“reg”};两两关系的图表类型,默认为scatter
- diag_kind:{“auto”,“hist”,“kde”};单变量图(自己与自己比较)的绘图,对角线子图
- hue:分类,按照某一列的定性数据分类
网友评论