一、功能:
两者功能相似,都是将一个Series切割成若干个分组
api 可以看官网详细介绍,大致如下:
pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
其中最常用的有个三个参数, x -代表数据集,这里一般是Series
q -为一个整数或数组,代表切割成几组或者具体的切割方式
labels -代表切割后的分组名称
返回值是一个 Categorical 类型,是一个可迭代对象,其中即包含了一个series,即 x中每个元素的分组标记。还包含了整体的分组情况。
二、区别
qcut 是等频切割,即基本保证每个组里的元素个数是相等的
cut是按值切割,即根据数据值的大小范围等分成n组,落入这个范围的分别进入到该组。
三、例题
ages = np.array([1,5,10,40,36,12,58,62,77,89,100,18,20,25,30,32]) cc = pd.qcut(ages,5)
结果:
[(0.999, 12.0], (0.999, 12.0], (0.999, 12.0], (36.0, 62.0], (25.0, 36.0], ..., (12.0, 25.0], (12.0, 25.0], (12.0, 25.0], (25.0, 36.0], (25.0, 36.0]] Length: 16 Categories (5, interval[float64]): [(0.999, 12.0] < (12.0, 25.0] < (25.0, 36.0] < (36.0, 62.0] < (62.0, 100.0]]dd = pd.cut(ages,5)
结果:
[(0.901, 20.8], (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], ..., (0.901, 20.8], (0.901, 20.8], (20.8, 40.6], (20.8, 40.6], (20.8, 40.6]] Length: 16 Categories (5, interval[float64]): [(0.901, 20.8] < (20.8, 40.6] < (40.6, 60.4] < (60.4, 80.2] < (80.2, 100.0]]