本文由 保一雄@科赛网 数据分析师 原创。

Seaborn是一个很棒的可视化库,尤其是当数据维度很大时,它可以让我们用最少的代码去绘制一些描述性统计的图,便于找寻各维度变量之间的特征。

继上篇Python可视化:Seaborn(一),分享过用Seaborn做Distribution Visualization,本篇我们将分享用Seaborn做Categorial Visualization,包括其中涉及的Stripplot & Swarmplot,Boxplot & Violinplot,Barplot & Pointplot,以及抽象化的Factorplot。

我们此处结合科赛网上公开的Iris鸢尾花数据集进行演示说明。

文中所有完整源代码均可通过K-Lab在线数据分析协作工具复现。它涵盖了Python、R等主流语言,完成了包括Seaborn、Pandas、Numpy等90%以上数据分析&挖掘相关库的部署,帮助数据人才专注数据分析本身,提高效率。

Iris鸢尾花数据集:是常用的分类实验数据集,由Fisher, 1936收集整理。是一类多重变量分析的数据集。共包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度(sepal_length),花萼宽度(sepal_width),花瓣长度(petal_length),花瓣宽度(petal_width)4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。

导入库

import warnings warnings.filter

warnings("ignore")

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt %matplotlib inline

import seaborn as sns

Stripplot

Stripplot的本质就是把数据集中具有Quantitative属性的变量按照类别去做散点图(Scatterplot)。

我们将纸鸢花数据集中不同种类花的Sepal Length做Stripplot可视化。

plt.figure(1,figsize=(12,6))

plt.subplot(1,2,1)

sns.stripplot(x='species',y='sepal_length',data=iris) #stripplot

plt.title('Striplot of sepal length of Iris species')with sns.axes_style("whitegrid"): # 这个是临时设置样式的命令,如果不写,则按默认格式'darkgrid'进行绘制

plt.subplot(1,2,2)

plt.title('Striplot of sepal length of Iris species') sns.stripplot(x='species',y='sepal_length',data=iris,jitter=True) # jitterplot

plt.show()

上边左侧的图片便是在默认风格下用Stripplot绘制的散点图。在很多情况下,Stripplot中的点会重叠,使得我们不容易看出点的分布情况。一个简单的解决办法就是用在Stripplot的基础上绘制抖动图(jitterplot),仅沿着类别坐标轴的方向去随机微调整点的位置,显示出分布情况。

Swarmplot

另一个解决Stripplot中点重叠的办法就是绘制Swarmplot,它的本质就是用通过算法,在类别坐标轴的方向上去‘延展’绘制这些原本重合的点。 我们将纸鸢花数据集中不同种类花的Petal Length和Petal width做Swarmplot可视化。

plt.figure(1,figsize=(12,6))

plt.subplot(1,2,1)

sns.swarmplot(x='species',y='petal_length',data=iris)

with sns.axes_style("ticks"): # 这次使用了ticks风格

plt.subplot(1,2,2)

sns.swarmplot(x='species',y='petal_width',data=iris)

plt.show()

Boxplot

箱形图,主要包含六个数据节点,将一组数据从大到小排列,分别计算出上边缘,上四分位数Q3,中位数,下四分位数Q1,下边缘,还有异常值。 下面将纸鸢花数据集中的四个变量sepal_length, sepal_width, petal_length和petal_width做箱形图可视化。

var = ['sepal_length','sepal_width','petal_length','petal_width']

axes_style = ['ticks','white','whitegrid', 'dark']

fig = plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]): # 将除了默认的darkgrid之外的样式都展现一遍

plt.subplot(2,2,i+1) sns.boxplot(x='species',y=var[i],data=iris)

plt.show()

Violinplot

Violinplot相当于结合了箱形图与核密度图,更好地展现出数据的量化形态。

context= ['notebook','paper','talk','poster']

axes_style = ['ticks','white','whitegrid', 'dark']

plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]):#设置axes_style

sns.set_context(context[i]) # 设置context style,默认为notebook,除此之外还有paper,talk,poster

plt.subplot(2,2,i+1)

plt.title(str(var[i])+ ' in Iris species')

sns.violinplot(x='species',y=var[i],data=iris)

plt.show()

Violinplot用Kernel Density Estimate去更好地描述了quantitative变量的分布。

与此同时,也可以组合Swarmplot和Boxplot或Violinplot去描述Quantitative变量。用鸢尾花数据集展示如下:

context= ['notebook','paper','talk','poster']

axes_style = ['ticks','white','whitegrid', 'dark']

plt.figure(1,figsize=(12,12))for i in range(4): with

sns.axes_style(axes_style[i]):#设置axes_style sns.set_context(context[i])#设置context

plt.subplot(2,2,i+1)

plt.title(str(var[i])+ ' in Iris species')

sns.swarmplot(x='species', y=var[i], data=iris, color="w", alpha=.5)

sns.violinplot(x='species', y=var[i], data=iris, inner=None) if i%2 ==0 \ else sns.boxplot(x='species', y=var[i], data=iris) # 分别用swarmplot+violinplot 和swarmplot + boxplot

plt.show()

Barplot

Barplot主要是展现在分类中的Quantitative变量的平均值情况,并且用了Boostrapping算法计算了估计值的置信区间和Error bar.用鸢尾花数据集。

plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]):#设置axes_style

sns.set_context(context[i]) # 设置context style,默认为notebook,除此之外还有paper,talk,poster plt.subplot(2,2,i+1)

plt.title(str(var[i])+ ' in Iris species') sns.barplot(x='species',y=var[i],data=iris)

plt.show()

Countplot

如果想知道在每个类别下面有多少个观察值,用Countplot就可以,相当于是做一个Observation Counts,用鸢尾花数据集展示如下:

plt.figure(figsize=(5,5)) sns.countplot(y="species", data=iris) # 设置y='species',将countplot水平放置

plt.title('Iris species count')

plt.show()

Pointplot

Pointplot相当于是对Barplot做了一个横向延伸,一方面,用Point Estimate和Confidence Level去展示Barplot的内容;另一方面,当每一个主类别下面有更细分的Sub-Category的时候,Pointplot可以便于观察不同Sub-Category在各主类别之间的联系。展示如下:

plt.figure(1,figsize=(12,12))for i in range(4): with sns.axes_style(axes_style[i]):#设置axes_style

sns.set_context(context[i]) # 设置context style,默认为notebook,除此之外还有paper,talk,poster plt.subplot(2,2,i+1)

plt.title(str(var[i])+ ' in Iris species') sns.pointplot(x='species',y=var[i],data=iris)

plt.show()

Factorplot

Factorplot可以说是Seaborn做Category Visualization的精髓,前面讲的这些Plot都可以说是Factorplot的具体展示。我们可以用PariGrid去实现对多个类别的数值特征用同一种Plot做可视化。

sns.set(style="ticks") g = sns.PairGrid(iris, x_vars = ['sepal_length','sepal_width','petal_length','petal_width'], y_vars = 'species', aspect=0.75,size=4) # 设置间距和图片大小 g.map(sns.violinplot,palette='pastel')

plt.show()

在这个数据集中,Quantitative的变量主要有房屋的面积Area,每平米单价Price,以及房屋总价Tprice。

科赛网(kesci.com)是聚合数据人才和行业问题的在线社区,重点打造的K-Lab在线数据分析协作平台,为数据工作者的学习与工作带来全新的体验。

Python可视化:Seaborn(二)相关推荐

  1. python根据表格数据生成折线图_Kaggle、Python数据可视化seaborn(二):折线图

    现在您已经熟悉了编码环境,接下来学习如何制作自己的图表! 在本教程中,您将学习怎样用Python来创建专业的线形图.在接下来的练习中,您将使用您的新技能来处理真实世界的数据集. 准备好笔记本 我们首先 ...

  2. Python可视化 | Seaborn(01)

    kdeplot和distplot的介绍: #入门---kdeplot和distplot import numpy as np #导入numpy包,用于生成数组 import seaborn as sn ...

  3. python三维数据转换成二维_5大Python可视化库到底选哪个好?一篇文章搞定从选库到教学...

    最近和鲸社区的大佬们,竟不约而同地写起了可视化库的教程,开始了掰头 ※完整教程列表在文末附录 虽然对于我们这种吃瓜群众来说是件好事,但 大概大佬的快乐往往就是那么的朴实无华且枯燥吧.害,管他呢,赶紧拿 ...

  4. [转载] python可视化分析(matplotlib、seaborn、ggplot2)

    参考链接: Python Matplotlib数据可视化2 python可视化分析总结(matplotlib.seaborn.ggplot) 一.matplotlib库1.基本绘图命令3.图形参数设置 ...

  5. python可视化分析(matplotlib、seaborn、ggplot2)

    python可视化分析总结(matplotlib.seaborn.ggplot) 一.matplotlib库 1.基本绘图命令 3.图形参数设置 4.特殊统计图的绘制 4.1 数学函数图 4.2 气泡 ...

  6. Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn)

    Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn) 目录

  7. Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)

    Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化.箱型图/散点图.小提琴图/散点图组合可视化的简介.使用方法之最强攻略(建议收藏) 目录 二.组合图可视 ...

  8. python地理可视化_【Python教程】地理可视化之二

    Basemap是Matplotlib的一个子包,负责地图绘制.昨天的推送对如何绘制风向图进行了描述,本文再次利用该包简单介绍如何绘制海洋及海冰温度彩色图示,该图常见于NOAA官网.具体操作如下: 导入 ...

  9. python中seaborn画swarm图_Python可视化 | Seaborn5分钟入门(四)——stripplot和swarmplot

    微信公众号:「Python读财」 如有问题或建议,请公众号留言 Seaborn是基于matplotlib的Python可视化库. 它提供了一个高级界面来绘制有吸引力的统计图形.Seaborn其实是在m ...

最新文章

  1. 阿里巴巴总裁马云对雅虎员工的精彩演讲:爱迪生欺骗了世界!(转载)
  2. 深度学习核心技术精讲100篇(五十)-爱奇艺逗芽表情搜索分析与实践
  3. 2018.11.05 NOIP模拟 规避(最短路计数)
  4. 端口复用:隐藏 嗅探与攻击
  5. Linux ffmpeg的安装编译过程
  6. java班级管理系统代码_基于jsp的班级管理系统-JavaEE实现班级管理系统 - java项目源码...
  7. 在css中arial,Helvetica或Arial作为CSS中的基本字体?
  8. 保姆级教程,手把手教你制作数据分析报告
  9. WAV声音档转PCM
  10. vue 圆形百分比进度条_vue 圆形进度条组件解析
  11. java获取jsessionid后_关于jsessionid获取的问题
  12. 迭代扩展卡尔曼滤波IEKF
  13. 户外移动电源:华宝新能、EcoFlow上演“龙虎斗”
  14. android 声明一个空数组
  15. 为什么使用Hadoop?
  16. Python的len函数探究
  17. 斐讯n1做服务器性能,斐讯N1:系统配置优化
  18. firebase 推送_使用Firebase Cloud Messaging发送推送通知
  19. Notepad++的字体设置加Consolas和微软雅黑混合字体转载
  20. 国王游戏(贪心+模拟)

热门文章

  1. how to fix error 25007 : loadlibraryshim()
  2. c语言程序设计 江宝钏 实验九,c语言程序设计,江宝钏著,实验九.docx
  3. python tempfile 创建临时目录
  4. tf.unstack\tf.unstack
  5. 剑指Offer:反转链表【24】
  6. Python 增删改查
  7. 实用工具---制作试卷
  8. Jumping Jack
  9. Delegate(QLabel和QComboBox)
  10. HDU 1426 Sudoku Killer