熊猫qcut binning只返回一组

时间:2017-10-19 13:15:03

标签: python-2.7 pandas

我正在使用pandas pcut和somethimes(当大量数据等于min时)它返回错误:

Bin edges must be unique

或者我必须删除我得到的非唯一垃圾箱,但随后我的所有数据都在一个垃圾箱中。

例如: 数据集:

import pandas as pd
nbins = 2
pd.qcut([0,0,0,0,0,1,2,3], nbins)

我想要那些高于或低于中位数的地方(这里是0)。 然后我期待得到:

[grp1, grp1, grp1, grp1, grp1, grp2, grp2, grp2]

但是得到的是:

pd.qcut([0,0,0,0,0,1,2,3], 2)
out >>> ValueError: Bin edges must be unique: array([ 0.,  0.,  3.]).

如果我放弃非独特的垃圾箱:

pd.qcut([0,0,0,0,0,1,2,3], 2, duplicates='drop')
out >>> [(-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0], (-0.001, 3.0]]
Categories (1, interval[float64]): [(-0.001, 3.0]]

一切都只属于一个类别。

我不想具有+/-中位数,这只是数据聚集在最小值附近的一个例子。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我找到了一种非常难看的解决方法......:

try: 
    pd.qcut(data, n_bins)
except ValueError:
    pd.qcut(data, n_bins+1, duplicates = 'drop')