Pandas分箱离散化方法:qcut()和cut()的用法
1.qcut()函数
·
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)。否则不返回 |
precision | Int型可选参数。这个参数什么作用还没弄明白 |
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 | 可以接受三种类型的数据。 |
right | bool型参数。当为True时,最后形成的分箱为左开又闭区间。否则,形成的分箱为左闭右开区间。 |
labels | 作用同qcut() |
retbins | 作用同qcut() |
precision | 作用同qcut() |
include_lowest | bool型参数。 |
duplicates | 作用同qcut() |
而qcut()方法默认形成的是左开右闭型的分箱区间。除了整数,bins还可以接受以下两种数据类型:
这里需要说明一下,当qcut()和cut()中的q和bins分别都为整数时,虽然最后形成的分箱的个数都与这个整数相同。但是这两个函数的分箱标准是不同的。这里重新取一组数来说明。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)