R实战 第十二篇:随机数
在数据分析中,通常需要把连续的数据离散化或拆分成多个区间(bin),这就需要用到cut()或qcut()函数。
一,cut函数
把值切分成离散的区间,有三种切分方式,第一种方式是制定区间的数量,把连续值平均切分;第二种方式是以标量值序列指定各个区间的边界值;第三种方式是以IntervalIndex 精确指定各个区间,区间之间不允许重叠。
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False)
参数注释:
- x:array-like
- bins:如果是整数,表示切分区间的数量;如果是整数序列(从小到大),表示通过元素指定各个区间的边界;如果是IntervalIndex,表示精确指定各个区间。
- right:是否包含区间的右边界
- labels:为每一个区间指定一个标签
- retbins:是否返回bins(切分的区间的边界)
- precision:指定区间标签(bin label)的精度,通常是对浮点数标签来说,指定小数点后的位数
- include_lowest:指定第一个区间是否包含最低值
cut函数返回的是Categorical的对象,这是一个array-like对象,表示每一个x元素所在的区间。
1,Categorical类型
Categorical类型是指对list-like对象进行分类,返回值包括两部分,第一部分是列表,表示对原始list-like中各个元素进行分类之后的类标签,第二部分是类别信息。
举个例子,返回值第一部分是一个列表,元素是1,2,3表示各个分类。第二部分是Categories信息,共分为3类,类标签的类型是int64,类别(bins)是[1,2,3]。
>>> pd.Categorical([1, 2, 3, 1, 2, 3])
[1, 2, 3, 1, 2, 3]
Categories (3, int64): [1, 2, 3]
2,指定切分区间的数量
把ages列表平均划分为4个区间,返回的结果中,第一部分是区间的标签,这是由左开右闭的区间构成的列表;第二部分是元素的数量(Length),第三部分是分类信息,有4个分类,最后返回bins数组。
>>> ages=[20,22,25,27,21,23,37,31,61,45,41,32]
>>> cats=pd.cut(x=ages,bins=4,precision =0,retbins=True)
>>> cats
([(20.0, 30.0], (20.0, 30.0], (20.0, 30.0], (20.0, 30.0], (20.0, 30.0], ..., (30.0, 40.0], (51.0, 61.0], (40.0, 51.0], (40.0, 51.0], (30.0, 40.0]]
Length: 12
Categories (4, interval[float64]): [(20.0, 30.0] < (30.0, 40.0] < (40.0, 51.0] < (51.0, 61.0]], array([19.959, 30.25 , 40.5 , 50.75 , 61. ]))
2,指定切分区间的边界
对ages列表进行划分,区间的边界由bins列表来指定
>>> ages=[20,22,25,27,21,23,37,31,61,45,41,32]
>>> bins=[18,25,35,60,100]
>>> cats = pd.cut(ages,bins,right=True)
>>> cats
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
>>>
3,指定区分的区间
通过from_breaks()函数来制定IntervalIndex,精确制定区间的边界,用于对连续的数据进行切分:
>>> ages = [20,22,25,27,21,23,37,31,61,45,41,32]
>>> breaks = pd.IntervalIndex.from_breaks([18,25,35,60,100])
>>> breaks
IntervalIndex([(18, 25], (25, 35], (35, 60], (60, 100]],
closed='right',
dtype='interval[int64]')
>>> pd.cut(x=ages,bins=breaks)
[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]]
Length: 12
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
二,qcut函数
qcut()函数也是用于切分的函数,q是Quantile(分位数)的意思,基于分位数对连续数据进行切分。基于排序或分位数,把变量分散到大小相等的桶(bucket)中。
例如,10个分位数的1000个值将产生一个分类对象,指示每个数据点的分位数隶属关系。
For example 1000 values for 10 quantiles would produce a Categorical object indicating quantile membership for each data point.
pandas.qcut(x, q, labels=None, retbins=False, precision=3)
参数注释:
- x:一维数组,或序列
- q:分位数的个数(10是指10分位数,4是指4分位数),或者制定分位数的序列
举个例子,指定分位数的序列,q=[0,0.2,0.9,1] 表示把从(0, 0.2]的分位数作为一个区间,把(0.2, 0.9]的分位数作为一个区间,把(0.9,1]的分位数作为一个区间:
>>> ages=[20,22,25,27,21,23,37,31,61,45,41,32]
>>> pd.qcut(x=ages,q=[0,0.5,0.9,1],precision=0)
[(19.0, 29.0], (19.0, 29.0], (19.0, 29.0], (19.0, 29.0], ...,(45.0, 61.0], (29.0, 45.0], (29.0, 45.0]]
Length: 12
Categories (3, interval[float64]): [(19.0, 29.0] < (29.0, 45.0] < (45.0, 61.0]]
参考文档:
R实战 第十二篇:随机数的更多相关文章
- spring boot实战(第十二篇)整合RabbitMQ
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整 ...
- R绘图 第十二篇:散点图(高级)
散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...
- Spring Cloud & Alibaba 实战 | 第十二篇: 微服务整合Sentinel的流控、熔断降级,赋能拥有降级功能的Feign新技能熔断,实现熔断降级双剑合璧(JMeter模拟测试)
目录 一. Sentinel概念 1. 什么是Sentinel? 2. Sentinel功能特性 3. Sentinel VS Hystrix 二. Docker部署Sentinel Dashboar ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...
- 解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译)
解剖SQLSERVER 第十二篇 OrcaMDF 行压缩支持(译) http://improve.dk/orcamdf-row-compression-support/ 在这两个月的断断续续的开发 ...
- 第十二篇 SQL Server代理多服务器管理
本篇文章是SQL Server代理系列的第十二篇,详细内容请参考原文 在这一系列的上一篇,我们查看了维护计划,一个维护计划可能会创建多个作业,多个计划.你还简单地看了SSIS子系统,并查看了维护计划作 ...
- 第十二篇 Integration Services:高级日志记录
本篇文章是Integration Services系列的第十二篇,详细内容请参考原文. 简介在前一篇文章我们配置了SSIS内置日志记录,演示了简单和高级日志配置,保存并查看日志配置,生成自定义日志消息 ...
- Python之路【第十二篇】:JavaScrpt -暂无内容-待更新
Python之路[第十二篇]:JavaScrpt -暂无内容-待更新
随机推荐
- 使用html+css+js实现简易计算器
使用html+css+js实现简易计算器, 效果图如下: html代码如下: <!DOCTYPE html> <html lang="en"> <he ...
- spring-AOP(面向切面编程)-xml方式配置
AOP是针对面向对象编程的一种补充,有时使用面向对象不能很好完成一些额外的功能业务时,可以采用AOP来进行补充. AOP术语: 切面(Aspect) 切面是用于编写切面逻辑的一个类,这个类很类似于JD ...
- web前端(12)—— 页面布局2
本篇博文,主要就讲定位的问题,也就是页面布局里最重要的,本篇博文不出意外的话,也是css的最后一篇博文了 定位,position属性 定位有三种: 相对定位 绝对定位 固定定位 相对定位,positi ...
- ASP.NET系统对象
一.ASP.NET 系统对象 Request:用来获取客户端在Web请求期间发送的值,如URL参数,表单参数 Response:用来负者返回到客户端的HTTP输出 ...
- 修改主机时间对MySQL影响
背景 在装机实施时,BIOS忘记调整时间,导致服务器时间与CST不符合:待发现问题时,MySQL环境已经在运行,所以只能通过操作系统进行更改:但是更改完成后,MySQL进行重启时发生了问题.以下为问题 ...
- Linux-centos7超过2TB使用parted命令分区
介绍说明: parted的操作都是实时的,也就是说你执行了一个分区的命令,他就实实在在地分区了, 而不是像fdisk那样,需要执行w命令写入所做的修改, 所以进行parted的测试千万注意不能在生产环 ...
- Windows重启显卡驱动热键说明
Windows 有一个秘密的快捷键,可以重启显卡驱动程序.如果你的电脑经常“冻屏”,可以在重启电脑之前试试这个快捷键,它可以修复冻屏,否则就只能强制重启电脑了. 这个组合快捷键将重启 Win10 和 ...
- 操作系统常用调度算法(转载https://www.cnblogs.com/kxdblog/p/4798401.html)
操作系统常用调度算法 在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用.下面介绍几种常用的调度算法. 先来先服务(FCFS)调度算法 ...
- Lua-pb 升级到Lua5.3
项目lua库升级到5.3版本后,最头疼的就是原先的一些第三方库原先只是基于lua5.1设计的,比如protobuff 相关的的. 之前项目引入Lua-pb 实现protobuf的解析和使用,但是这个库 ...
- CISCO静态路由配置
静态路由:手动添加路由条目到路由表中 优点:没有额外的路由cpu负担,节约带宽,增加网络安全性. 缺点:必须去了解整个拓扑结构,如果网络拓扑发生变化,需要在所有r路由上手动修改路由表. 实验拓扑如下: ...