python 的cut与qcut

news2024/11/19 3:18:38

我想要实现多分类,样本不是均匀分布的

使用cut,可以实现自定义范围分类
使用qcut,可以实现每个 分类的个数大致相等

cut 与 qcut方法使用

参考 https://www.cnblogs.com/Motimer/p/16006313.html

1、cut方法

pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=‘raise’, ordered=True)

(1)参数

X:被切分的类数组(array-like)数据,必须是1维的。不能是DataFrame。

bins:被切割后的区间,有3中形式:int, sequence of scalars, or IntervalIndex。

int:代表将X平分成bins份,x的范围在每侧扩展0.1%,以包括X的最大值和最小值。

sequence of scalars(标量序列):被分割后每一个bin的区间边缘,此时x没有扩展。

IntervalIndex:定义要使用的精确区间。

right:bool型,默认为True。是否包括最右边的边缘,比如right=True,bins=[1,2,3,4],则区间为(1,2]、(2,3]、(3,4];right=False,则区间为(1,2)、(2,3)、(3,4)。

labels:给分割后的bins打标签。必须与箱子长度相同,比如bins=[1,2,3],划分后有两个区间(1,2]、(2,3],则labels长度必须为2。如果labels=False,则返回X中的数据在第几个 bin中(从0开始)。

retbins:bool型,默认为False。是否将分割后的bins返回,当bins为一个int型的标量比较有用,这样可以得到划分后的区间。

precision:保留区间小数点的位数,默认为3.

include_lowest:bool型,默认为False。第一个间隔是否应包含在内。

duplicates:是否允许重复区间。raise:不允许,drop:允许。

ordered:bool型,默认为True。True对结果进行排序,False不排序。

(2)返回值

out:Categorical, Series, or ndarray。分区后x中的每个值在那个bin中,如果指定了labels则返回对应的label。

bins:分割后的区间,当指定retbins为True时返回。

(3)举例
  先生成一些测试数据

df = pd.DataFrame([x**2 for x in range(11)],columns=['number',]) # 指数列, 10个数
df

在这里插入图片描述
1

df['cut_group'] = pd.cut(df['number'],4) #(按照数据值由小到大的顺序将数据分成4份,并且使每组值的范围大致相等。)
df

在这里插入图片描述
2

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20]) #(bins参数:按照指定的边界值对变量进行分割)
df

在这里插入图片描述
3

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=False,labels=False)#(labels为False,返回值在第几个bin中)
df

在这里插入图片描述
4

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=False,labels=['第一','第二','第三','第四','第五',])#(返回自定义标签名)
df

在这里插入图片描述
5 返回划分区间

df['cut_group'],bins = pd.cut(df['number'],4,retbins=True)#(retbins参数:获取边界值的列表)
bins

在这里插入图片描述
6

df['cut_group'] = pd.cut(df['number'],bins=[0,4,8,12,16,20],right=True,include_lowest=True) #(第二)
df

在这里插入图片描述

2、qcut方法

pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=‘raise’)
 (1)参数
  x:一维 ndarray 或系列
  q:整数或浮点数的list-like,分位数。 10 表示十分位数,4 表示四分位数等。交替排列的分位数,例如[0, .25, .5, .75, 1.] 四分位数。
  labels:数组或假,默认无。用作结果箱的标签。必须与生成的 bin 长度相同。如果为 False,则仅返回 bin 的整数指示符。如果为 True,则引发错误。
  retbins:布尔型,可选。是否返回(箱,标签)。如果 bins 作为标量给出,则可能很有用。
  precision:整数,可选。存储和显示 bin 标签的精度。
  duplicates:{默认 ‘raise’, ‘drop’},可选。
  
   (2)举例
1

df = pd.DataFrame([x**2 for x in range(11)],columns=['number',])
df['cut_group'] = pd.qcut(df['number'],4)#(按变量的数量来对变量进行分割,把变量由小到大分成四组,并且让每组变量的数量相同)
df

在这里插入图片描述

2

# 跟cut()一样, 我们可以通过在qcut()设置retbins参数, 获取每个分组的边界值列表。
df['cut_group'], bins = pd.qcut(df['number'],4,retbins=True)
bins

在这里插入图片描述

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

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

相关文章

x86和arm框架下的centOS

1 CPU架构分为 X86 , ARM ,MIPS , power , ia64 AMD64 X86_64 x64 ,是64位的CPU 架构,区分ARM64 1.x86 : 复制指令集cisc,高性能,速度快,完成量打(内存,硬盘&#xf…

NoSQLBooster4MongoDB - 用SQL查询MongoDB

最好的MongoDB的客户端工具–NoSQLBooster。NoSQLBooster立志做“The Smartest IDE for MongoDB”。 使用 mb.runSQLQuery()方法,能把SQL语句翻译成MongoDB的查询语句. 借助适用于 MongoDB 的 NoSQLBooster,您可以针对 MongoDB 运行 SQL SELECT 查询。 SQL 支持包…

离线安装PostgreSQL数据库(v13.4版本)

记录:328 场景:在CentOS 7.9操作系统上,离线安装PostgreSQL数据库,版本:v13.4。主要是PostgreSQL的编译、安装、启动、登录、设置远程可登录、创建数据库、创建数据库用户等。 版本: 操作系统&#xff1…

转铁蛋白修饰硬脂酸/棕榈酸 TF-PEG-C18 Stearic Acid/C16, palmitic acid

产品名称:转铁蛋白-聚乙二醇-硬脂酸 英文名称:TF-PEG-C18 Stearic Acid 纯度:95% 存储条件:-20C,避光,避湿 外观:固体或粘性液体,取决于分子量 PEG分子量可选:350、550、750、1k、2k…

G. Good Key, Bad Key(暴力)

Problem - 1703G - Codeforces 有n个箱子。第i个箱子里有ai个硬币。你需要按顺序打开所有n个箱子,从箱子1到箱子n。 你可以用两种类型的钥匙来打开箱子。 一把好钥匙,使用它需要花费k个硬币。 坏钥匙,不需要花费任何金币,但会将…

操作系统:进程的创建(fork函数)、进程的替换(exec函数)

文章目录1.进程的创建2.进程的替换3.进程的阻塞1.进程的创建 ①调用fork函数的进程为父进程,调用后生成一个子进程; ②创建子进程成功时,父进程中fork函数的返回值是子进程的进程号PID; ③创建子进程失败时,父进程中fo…

使用.NET简单实现一个Redis的高性能克隆版(一)

正文 我遇到了这个项目,它的目标是成为一个比Redis有着更好性能和更易用的克隆版。我发现它很有趣,因为它主要的卖点之一就是它是在多线程模式下运行(而不是像Redis那样是单线程)。他们使用memtier_benchmark(Redis项…

shell命令以及运行原理

shell命令以及运行原理shell命令以及运行原理shell命令以及运行原理 Linux严格意义上来说说的是操作系统,我们把操作系统称之为“内核”(kernel),但是我们用户是不会直接与kernel直接打交道的,我们是通过一个“外壳程…

D. Fixed Point Guessing(二分+交互式问题)

Problem - D - Codeforces 这是一个互动问题。 最初,有一个数组a[1,2,...,n],其中n是一个奇数正整数。陪审团选择了n-12对不相干的元素,然后对这些元素进行交换。例如,如果a[1,2,3,4,5],对1↔4和3↔5进行互换&#xf…

吐血经验,怎么把OAK相机的镜头模组拆下来?

消息快播:OpenCV众筹了一款ROS2机器人rae,开源、功能强、上手简单。来瞅瞅~ 编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查…

[AI] LRTA*(K) 搜索算法

LRTA*[k]搜索算法 一、理论二、实际应用步骤一、理论 LRTA*(K) 是LRTA* 算法的进阶版,关于LRTA*的回顾请点此处, LRTA*(K) 论文请点此处 该文作者把LRTA算法归为 无界传播(unbounded propagation, 中文用谷歌翻译的。。。囧),LRTA(K)归为有…

第四章:JVM运行时参数

一、JVM参数选项类型类型一:标准参数选项类型二:-X参数选项类型三: -XX参数选项二、常用的 JVM 参数选项打印设置的 XX 选项及值堆、栈、方法区的参数栈堆方法区垃圾回收器相关参数Serial回收器ParNew 回收器ParallelGcCMS回收器G1 回收器如何…

Win11杜比全景声无法正常运行的解决方法教学

Win11杜比全景声无法正常运行的解决方法教学。我们的电脑开启杜比声全景音效之后,无论是看电影,还是听音乐,都可以获得更加良好的视听体验。但是有用户却遇到了电脑无法正常的开启杜比声音效的问题,一起来看看如何去解决的方法吧。…

【Selenium】Selenium4 Grid

Selenium Grid: 将客户端发送的命令转发到远程浏览器上执行 WebDriver 脚本。 简介 Selenium Grid 是由一个 hub 服务和若干个 node 代理节点组成。 Hub 调度服务,管理各个代理节点的注册信息和状态信息,并且接收来自客户端代码的调用请求,…

13.练习题(年月日,打字游戏)

练习 1.任意给出一个年、月、日,判断是这一年的第几天:闰年算法:能被4整除且不能被100整除,或者能被400整除。 如:2012 5 10 是这一年的第131天。 提示:使用数组的方式计算,将每月的天数放在一…

面试学习总结

之前根据视频做的总结,备个份。 一、Volatile关键字 volatile是Java虚拟机提供的轻量级的同步机制。 三个特性: 保证可见性 线程修改了工作内存中的值并写回到主内存之后,主内存立刻通知所有线程。称为可见性。(结合JMM理解&am…

蓝桥杯刷题(三)

蓝桥杯刷题一.等差素数列(较难)二.货物摆放(思路新奇)三.既约分数四.跳跃五.数值求值(坑题)蓝桥杯题库一.等差素数列(较难) 这道题有公式,其等差就是它长度内所有素数的乘…

Seata安装并注册集成到Nacos服务上

目录 一.工具地址与版本 二.解压与配置 三.创建数据库,执行脚本 四.启动与调试 五.seata高可用 六.查看启动情况 一.工具地址与版本 1.nacos-server-2.0.3 下载地址:Releases alibaba/nacos GitHub 2.seata-server-1.4.2 下载地址&#xff1…

小侃设计模式(十四)-职责链模式

1.概述 责任链模式(Chain of Responsibility Pattern)是为请求创建了一个接收者对象的链,让请求沿着这条链进行传播,直到有对象处理它为止,它属于典型的行为型模式。这种方式降低了发送者和处理者之间的耦合关系&…

HTML+CSS简单的网页制作期末作业 关于我的家乡——四川文化网页介绍 DW大学生网页作业制作设计 Dreamweaver简单网页成品

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有…