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

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中有重复值时会对分箱合并。

Pandas分箱离散化方法:qcut()和cut()的用法_第1张图片

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

 Pandas分箱离散化方法:qcut()和cut()的用法_第2张图片

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

Pandas分箱离散化方法:qcut()和cut()的用法_第3张图片

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

Pandas分箱离散化方法:qcut()和cut()的用法_第4张图片

2.cut()方法

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

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

Pandas分箱离散化方法:qcut()和cut()的用法_第5张图片

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

Pandas分箱离散化方法:qcut()和cut()的用法_第6张图片

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

Pandas分箱离散化方法:qcut()和cut()的用法_第7张图片

你可能感兴趣的:(Python)