将数据合并到大小相等的容器中

问题描述

我想将值分类为大小相等的分类。假设我们有以下熊猫系列:

ex = pd.Series([1,2,3,4,5,6,7,888,999])

现在,我想创建三个垃圾箱:

pd.cut(ex,labels=False)

这将导致三个bin,并将以下bin编号分配给该系列的每个元素:

[0,2]

现在,我希望具有bin边框,以使每个bin具有相等数量的元素(即3),并且将数据点分配到bin的外观应类似于:

[0,1,2]

我该如何得知?打破平局该怎么做(即,当数据点的数量不能除以箱的数量时)?

解决方法

使用-

pd.qcut(ex,3,labels=False)

输出

0    0
1    0
2    0
3    1
4    1
5    1
6    2
7    2
8    2

使用retbins=True来获取垃圾箱。

pd.qcut(ex,labels=False,retbins=True)

输出

(0    0
 1    0
 2    0
 3    1
 4    1
 5    1
 6    2
 7    2
 8    2
 dtype: int64,array([  1.,3.66666667,6.33333333,999.        ]))
,

请使用熊猫qcut函数。试试这个pd.qcut(ex,q=3,labels=False)

,

尝试

bins = ex.index//3 # np.arange(len(ex))//3
bins
Out[98]: Int64Index([0,1,2,2],dtype='int64')