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分别都为整数时,虽然最后形成的分箱的个数都与这个整数相同。但是这两个函数的分箱标准是不同的。这里重新取一组数来说明。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐