python组合数据分类_Python 数据可视化:分类特征统计图

上一课已经体验到了 Seaborn 相对 Matplotlib 的优势,本课将要介绍的是 Seaborn 对分类数据的统计,也是它的长项。

针对分类数据的统计图,可以使用 sns.catplot 绘制,其完整参数如下:

seaborn.catplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='strip', height=5, aspect=1, orient=None, color=None, palette=None, legend=True, legend_out=True, sharex=True, sharey=True, margin_titles=False, facet_kws=None, **kwargs)

本课使用演绎的方式来学习,首先理解这个函数的基本使用方法,重点是常用参数的含义。

x,y,hue:参数 data 所设置的数据集中的特征,其中 hue 是嵌入到坐标系中的分类特征,x, y 分别是数据集中作为横纵轴的特征。

data:一个 DataFrame 对象,即数据集。

row,col:如果要绘制分区坐标系,用这两个参数分别设置了“坐标矩阵”的行列。例如,指定 col 的值为某一个分类特征,就会按照该分类特征数据属性,划分不同坐标系分区。

order,hue_order:字符串组成的列表,指定分类特征显示的顺序。

kind:这个参数很重要,默认值是 'strip',其他取值还可以是:“point”、“bar”、“swarm”、“box”、“violin”or“boxen”,每个值都对应着一种专门的分类统计图,并且也对应着专有的函数,这是本课要重点阐述的。

palette:设置色彩方案。

其他的参数,根据名称也能基本理解。

下面就依据 kind 参数的不同取值,分门别类地介绍各种不同类型的分类统计图。

2.2.1 分类特征的散点图

kind = 'strip',默认值,等同函数 sns.stripplot。

kind = 'swarm',等同函数 sns.swarmplot。

读入数据集:

import seaborn as sns

sns.set(style="whitegrid")

exercise = sns.load_dataset("exercise")

exercise.sample(5)

avatar

然后用这个数据集制图,看看效果:

%matplotlib inline

sns.catplot(x="time", y="pulse", hue="kind", data=exercise) #①

输出结果:

enter image description here

毫无疑问,这里绘制的是散点图。但是,该散点图的横坐标是分类特征 time 中的三个值,并且用 hue='kind' 又将分类特征插入到图像中,即用不同颜色的的点代表又一个分类特征 kind 的值,最终得到这些类别组合下每个记录中的 pulse 特征值,并以上述图示表示出来。也可以理解为,x='time', hue='kind' 引入了图中的两个特征维度。

语句 ① 中,就没有特别声明参数 kind 的值,此时是使用默认值 'strip'。

与 ① 等效的还有另外一个对应函数 sns.stripplot。

sns.stripplot(x="time", y="pulse", hue="kind", data=exercise) #②

输出结果:

enter image description here

② 与 ① 的效果一样。

不过,在 sns.catplot 中的两个参数 row、col,在类似 sns.stripplot 这样的专有函数中是没有的。因此,下面的图,只有用 sns.catplot 才能简洁直观。

sns.catplot(x='time', y='pulse', hue='kind', col='diet', data=exercise, kind='strip') #③

输出结果:

enter image description here

不过,如果换一个叫角度来说,类似 sns.stripplot 这样的专有函数,表达简单,参数与 sns.catplot 相比,有所精简,使用起来更方便。

seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)

仔细比较,sns.catplot 和 sns.stripplot 两者还是稍有区别的,虽然在一般情况下两者是通用的。

因此,不要追求某一个是万能的,各有各的用途,存在即合理。

不过,下面的声明请注意:如果没有非常的必要,比如绘制分区图,在本课中后续都演示如何使用专有名称的函数。

sns.stripplot

前面已经初步解释了这个函数,为了格式完整,这里再重复一下,即 sns.catplot 中参数 kind='strip'。

如果非要将此函数翻译为汉语,可以称之为“条状散点图”。以分类特征为一坐标轴,在另外一个坐标轴上,根据分类特征,将该分类特征数据所在记录中的连续值沿坐标轴描点。

从语句 ② 的结果图中可以看到,这些点虽然纵轴的数值有相同的,但是没有将它们重叠。因此,我们看到的好像是“一束”散点,实际上,所有点的横坐标都应该是相应特征分类数据,也不要把分类特征的值理解为一个范围,分散开仅仅是为了图示的视觉需要。

ax = sns.stripplot(x="time", y="pulse", data=exercise, jitter=0) #④

输出结果:

enter image description here

④ 相对 ② 的图示,在于此时同一纵轴值的都重合了——本来它们的横轴值都是一样的。实现此效果的参数是 jitter=0,它可以表示点的“振动”,如果默认或者 jitter=True,意味着允许描点在某个范围振动——语句 ② 的效果;还可设置为某个 0 到 1 的浮点,表示许可振动的幅度。请对比下面的操作。

ax = sns.stripplot(x="time", y="pulse", data=exercise, jitter=0.05)

输出结果:

enter image description here

语句 ② 中使用 hue='kind' 参数向图中提供了另外一个分类特征,但是,如果感觉图有点乱,还可以这样做:

ax = sns.stripplot(x="time", y="pulse", data=exercise, hue='kind',

dodge=True, palette='Set2') #⑤

输出结果:

enter image description here

dodge=True 的作用就在于将 hue='kind' 所引入的特征数据分开,相对 ② 的效果有很大差异。

并且,在 ⑤ 中还使用了 paletter='Set2' 设置了色彩方案。

sns.stripplot 函数中的其他有关参数,请读者使用帮助文档了解。

sns.swarmplot

此函数即 sns.catplot 的参数 kind='swarm'。

tips = sns.load_dataset("tips")

sns.swarmplot(x="day", y="total_bill", data=tips)

# 下面的语句,与之等效

# sns.catplot(x="day", y="total_bill", kind='swarm', data=tips)

输出结果:

enter image description here

再绘制一张简单的图,一遍研究这种图示的本质。

sns.swarmplot(x=tips["total_bill"])

输出结果:

enter image description here

此图只使用了一个特征的数据,简化表象,才能探究 sns.swarmplot 的本质。它同样是将该特征中的数据,依据其他特征的连续值在图中描点,并且所有点在默认情况下不彼此重叠——这方面与 sns.stripplot 一样。但是,与之不同的是,这些点不是随机分布的,它们经过调整之后,均匀对称分布在分类特征数值所在直线的两侧,这样能很好地表示数据的分布特点。但是,这种方式不适合“大数据”。

seaborn.swarmplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)

sns.swarmplot 的参数似乎也没有什么太特殊的。下面使用几个,熟悉一番基本操作。

在分类维度上还可以再引入一个维度,用不同颜色的点表示另外一种类别,即使用 hue 参数来实现。

sns.swarmplot(x="day", y="total_bill", hue="smoker", data=tips, palette="Set2")

输出结果:

enter image description here

这里用 hue = 'smoker' 参数又引入了一个分类特征,在图中用不同颜色来区分。

如果觉得会 smoker 特征的值都混在一起有点乱,还可以使用下面方式把他们分开——老调重弹。

sns.swarmplot(x="day", y="total_bill", hue="smoker", data=tips, palette="Set2", dodge=True)

输出结果:

enter image description here

生成此效果的参数就是 dodge=True,它的作用就是当 hue 参数设置了特征之后,将 hue 的特征数据进行分类。

2.2.2 分类特征的分布图

sns.catplot 函数的参数 kind 可以有三个值,都是用于绘制分类的分布图:

kind = 'box',等同函数 sns.boxplot

kind = 'violin',等同函数 sns.violinplot

kind = 'boxen',等同函数 sns.boxenplot

下面依次对这三个专有函数进行阐述。

sns.boxplot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/266237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB 主从集群配置

创建必要的目录和认证文件: [rootmongo mongo]# mkdir keyfile [rootmongo mongo]# echo "mongo cluster one" > keyfile/m1[rootmongo mongo]# echo "mongo cluster one" > keyfile/m2[rootmongo mongo]# echo "mongo cluster one&…

linux进程互斥要点,linux进程之间互斥

总所周知,在linux中pthread_mutex_t可以用于同一进程内多个线程之间的同步。我们所需要做的工作,仅仅是定义一个全局的pthread_mutex_t类型变量即可。但是对于进程之间的互斥,就没有那么简单了。我们必须将pthread_mutex_t类型变量放到各个进…

java定时器_拾遗Timer定时器

一 Timer 介绍在开发中我们经常会遇到一些简单定时任务的需求,而不需要量级较重的定时任务就可以采取java定时器;java.util.Timer工具类中的Timer 是定时器,但定时任务写在java.util.TimerTask 中,由 Timer 执行 TimerTask &#…

逻辑门电路的知识点归纳

1.半导体二极管与MOS管的开关特性 二极管:正向导通,反向截止,但是要注意的是从反向截止到正向导通的时间极其短,但是从正向导通到反向截止要经过反向恢复(电荷存储效应)的过程,这个过程实际上就…

全国计算机等级考试题库二级C操作题100套(第78套)

第78套: 给定程序中,函数fun的功能是:将NN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N3,有下列矩阵: 1 2 3 4 5 6 7 8 9 交换后为: 3 2 1 4 5 6 9 8 7 请在程序的下划线处…

善心

2019独角兽企业重金招聘Python工程师标准>>> 一个穷苦学生郝武德.凯礼,为了付学费,挨家挨户地推销货品。 到了晚上,发现自己的肚子很饿,而口袋里只剩下一个小钱。他在大街上犹豫徘徊了半天,终于鼓起勇气&a…

linux权限sudo和su,Linux su和sudo命令的区别,并获得root权限

su(superuser)su表示切换用户,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-"后表示也切换的当前的环境变量到新用户的环境变量。su root…

python 清屏_Python学前准备如果你知道要去哪,那么全世界都给你让路

一、Python 已来 AI 不远在当今,人工智能已经渗透到了智能手机、网络搜索,广告分发,人脸识别,语音识别,自动驾驶,智能医疗,无人银行等日常生活领域。人工智能的生活化是不可避免的,它…

软件测试 决策表

决策表技术使用的一下特征的应用 If then else 逻辑关系 输入变量之间存在逻辑关系 计算过程中涉及对输入变量子集的处理 输入与输出之间存在因果关系 圈复杂度较高 决策表规模的增长方式不高(有N个条件的有限项决策表有2^N条规则),有几种方法…

js判断用户是否离开当前页面

简介 VisibilityChange 事件;用于判断用户是否离开当前页面 Code // 页面的 visibility 属性可能返回三种状态 // prerender,visible 和 hidden let pageVisibility document.visibilityState; // 监听 visibility change 事件 document.addEventLi…

全国计算机等级考试题库二级C操作题100套(第79套)

第79套&#xff1a; 给定程序中&#xff0c;函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回&#xff0c;并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串&#xff0c;且串长<N。 请在程序的下划线处填入正确的内容并把…

linux 交叉编译 静态库,在ARM交叉编译时,如何选择要链接的静态库?

小编典典您有两种选择&#xff0c;获取正确的编译器。编写自己的“ C”库。获取正确的编译器。你是 总是 最安全的有一个编译器匹配您的系统。这适用于x86Linux和各种发行版。如果不同的编译器可以工作&#xff0c;您将很幸运。当您交叉编译时&#xff0c;这样做会更加困难&…

python输出可执行文件_重定向-禁止在Python调用中输出可执行文件

重定向-禁止在Python调用中输出可执行文件我有一个名为B的二进制文件&#xff0c;该文件在调用时会生成输出。 如果从Bash shell调用它&#xff0c;则大多数输出将受到A > /dev/null的抑制。所有输出将受到A &> /dev/null的抑制我有一个名为B的Python脚本&#xff0c…

全国计算机等级考试题库二级C操作题100套(第80套)

第80套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;将形参n中&#xff0c;各位上为偶数的数取出&#xff0c;并按原来从高位到低位的顺序组成一个新的数&#xff0c;并作为函数值返回。 例如&#xff0c;从主函数输入一个整数&#xff1a;27638496&#x…

记一次B站答题经历

第一题部分&#xff1a;社区规范卷 --------- ------------ 第二题&#xff1a;社区规范第二部分 -------------------- 第三部分自由选择题 ---------------------- -------------------------------- 最后答题成绩得分 -------------- ------------- 答完题后的感受&#xff…

linux 安装程序丢失链接动态库,Linux安装软件过程中提示缺少动态链接库.so的解决方法...

Linux在安装软件的时候有时会出现错误&#xff0c;提示缺少动态链接库.so&#xff0c;该问题是由什么原因导致的呢?情况分析&#xff1a;1.缺少动态连接库.so-cannot open shared object file:No such file or directory2.缺少动态连接库.so.0-cannot open shared object file…

全国计算机等级考试题库二级C操作题100套(第81套)

第81套&#xff1a; 给定程序中&#xff0c;函数fun的功能是&#xff1a;在形参s所指字符串中的每个数字字符之后插入一个号。例如&#xff0c;形参s所指的字符串为&#xff1a;def35adh3kjsdf7。执行结果为&#xff1a;def35adh3kjsdf7*。 请在程序的下划线处填入正确的内容并…

菜鸟python爬虫_Python爬虫学习-基础爬取

编译环境&#xff1a;python v3.5.0, mac osx 10.11.4第三方库&#xff1a;针对网页解析&#xff0c;python有丰富的第三方库如:BeautifulSoup, urllib, requests etc.可以通过import来引入指定第三方库&#xff0c;通过from lib import function导入第三方库中的指定函数。如&…

点云赋值 PointCloudT::Ptr 运行时崩溃

PointCloudT::Ptr cloud; cloud.reset(new PointCloudT); cloud->points.resize(500);for(int index 0;index <500;index){  cloud->point[index].x 1.0; cloud->point[index].y 1.0;}采用以上方式赋值程序崩溃。Point t; for(int index 0;index <500;ind…

yaf(5) smarty

2013年4月6日 13:41:37 参考: http://www.oschina.net/question/812776_71817 http://yaf.laruence.com/manual/yaf.class.dispatcher.setView.html 这两者都是在bootstrap.php中写_initSmarty()函数来重新实现yaf的视图接口 这中方案默认的是存放模版文件的上级文件夹名字必须…