pandas qcut 和cut 详解

在机器学习中,pandas的qcut和cut常用于连续变量的离散化。二者区别在于分箱思路:qcut关注箱子容量,如等频分箱;cut关注箱子尺寸,如等距分箱。qcut支持指定分位数,cut可自定义边界。两者参数及返回值各有特点,如qcut的分位数参数q,cut的等距分箱设定。

在机器学习中,连续变量的离散化过程,一般用pandas的 qcut或者cut函数来进行分箱。

qcut和cut的区别

关于这两个函数的联系和区别,网上有各种说法,典型的有以下几种:

  • qcut用于指定箱子个数,cut用于指定分箱边界。
  • qcut用于等频分箱,cut用于等距分箱。
  • qcut用于值比较多的情况,cut用于值比较少。

这些说法都是不准确或者不对的,归根结底来说,qcut和cut的区别,是分箱思路的不同。也就是分箱时,你关注的是箱子的容量(即箱子中样本的多少),还是关注箱子的尺寸(即边界值,以及边界值之间的距离)。

如果关注的是箱子的容量,比如希望等频分箱,或者第一个箱子装50%,剩下的平分,那么就用qcut。
如果关注的是箱子的尺寸,比如0-100的装在一个箱子里面,100-200的装另外一个,或者说等距分箱,那么就用cut。

具体解释下qcut和cut的各个参数以及返回值的含义。

qcut 基于分位数的离散化方法
不仅可以等频分箱,而且可以指定每个箱子的分位数。

out, bins = pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates=‘raise’)

参数名取值说明
x1d ndarray or Series分箱对象数组
qint or list-like of floatint:分位数,比如10代表按照10分位分箱,4代表按照4分位分箱。
list-like of float:分位数数组,比如[0, .25, .5, .75, 1.] 必须在0,1之间取值
labelsarray or False, default None分箱的标签数组,False的时候返回代表分箱的整数
retbinsbool, optional是否把分箱结果作为返回值。
precisionint, optional精度
duplicates{default ‘raise’, ‘drop’}, optional如果分箱边界不是唯一的,指定raise ValueError ,或者是drop 非唯一值
返回值取值说明
outCategorical or Series or array of integers if labels is False如果x是series则out是category series,否则out是Categorical
binsndarray of floats分位数数组,只有retbins 为True才返回

cut 基于箱子长度的离散化方法
不仅可以等距分箱,还可以指定每个箱子的边界,甚至可以留白

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

参数名取值说明
x1d ndarray or Series分箱对象数组
binsint, sequence of scalars, or IntervalIndexint:指定等距分箱的箱子数量,同时最左或者最右边界再扩展0.1%(取决于right参数)
sequence of scalars:
IntervalIndex:指定分箱间隔值,不在间隔的样本数据都设为NaN
rightbool, default True分箱是否包括最右侧的值
labelsarray or False, default None分箱的标签数组,False的时候返回代表分箱的整数
retbinsbool, optional是否把分箱结果作为返回值。
precisionint, optional精度
include_lowestbool, default False第一个分箱是否应该包括最小值
duplicates{default ‘raise’, ‘drop’}, optional如果分箱边界不是唯一的,指定raise ValueError ,或者是drop 非唯一值
orderedbool, default True返回值out是否被排序
New in version 1.1.0.
返回值取值说明
outCategorical or Series or array of integers if labels is False如果x是series则out是category series,否则out是Categorical
binsndarray of floats分位数数组,只有retbins 为True才返回
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值