首页 > 解决方案 > 将数据分箱到相同大小的箱中

问题描述

我想将值分箱到同样大小的箱中。假设我们有以下 Pandas 系列:

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

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

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

这会产生三个 bin,并且为系列的每个元素分配以下 bin 编号:

[0,0,0,0,0,0,0,2,2]

现在,我想让 bin 边界使每个 bin 具有相同数量的元素(即 3),并且将数据点分配给 bin 应该如下所示:

[0,0,0,1,1,1,2,2,2]

我怎样才能实现这一点?并且应该为平局做些什么(即当数据点的数量不能被箱的数量整除时)?

标签: pythonpandasbinning

解决方案


利用 -

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, 3, 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.        ]))

推荐阅读