Pandas分箱离散化方法:qcut()和cut()的用法

本文详细解析了pandas库中qcut与cut方法的参数及使用场景,对比了两者的区别,尤其在处理重复值和分箱标准上的不同。通过实例说明了在机器学习特征工程中如何正确应用这些函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.qcut()方法

qcut()函数中的参数主要包括以下几个:

参数名作用
X只接收1维矩阵或Series.
q整数或list-like of 整型。当q为整数时,代表分箱数。
labels接收array型或False型数据,默认取值为None. 这个参数需要和retbins参数一起使用。当labels=False时,只返回分箱的索引。当labels为array时,其长度要和bins的个数相等。
retbins布尔型可选参数。当为True时,返回(bins,labels)。否则不返回
precisionInt型可选参数。这个参数什么作用还没弄明白
duplicates默认值为raise. 如果X中有重复值时会报错。当duplicates='drop'时,X中有重复值时会对分箱合并。

 另外,当参数q为array时,数组长度-1即为最后的分箱数目。数组array中后一个值与前一个值的差即为该分箱占比。

 

当待分箱的数据有重复值时,网上看到的方法是先使用rank(method='first')方法对数据进行排序得到没有重复值的序列,然后再分箱。但这种做法有一个问题,会将原始数据中的重复值(比如这里的4和5)分到不同的箱子里. 如果是机器学习中对特征进行分箱然后求解特征的WOE或IV指标时,这种做法会导致最后计算的IV偏高。而使用duplicates='drop'时,可以避免这个问题。

在机器学习中通常对某个变量离散化之后,还有对分箱后的数据进行数值化编码。 这里使用labels标签可以直接完成这两部操作。

2.cut()方法

 cut()方法中的参数如下:

参数参数作用
x类array数据,也是只接收1维数据。
bins可以接受三种类型的数据。
rightbool型参数。当为True时,最后形成的分箱为左开又闭区间。否则,形成的分箱为左闭右开区间。
labels作用同qcut()
retbins作用同qcut()
precision作用同qcut()
include_lowestbool型参数。
duplicates作用同qcut()

 而qcut()方法默认形成的是左开右闭型的分箱区间。除了整数,bins还可以接受以下两种数据类型:

这里需要说明一下,当qcut()和cut()中的q和bins分别都为整数时,虽然最后形成的分箱的个数都与这个整数相同。但是这两个函数的分箱标准是不同的。这里重新取一组数来说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值