2017-10-19 60 views
1

我與熊貓PCUT和somethimes(當大量的數據都等於分)返回無論是一個錯誤的工作:熊貓qcut合併只返回一個組

Bin edges must be unique 

或者我不得不放棄非 - 我得到的獨特箱,但是然後我所有的數據都在一個箱中。

例如: 數據集:

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

我想然後以具有的那些高於或低於中位數(這裏爲0)。 然後我期待着得到:

但什麼是得到的是兩種:

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]] 

一切是在只有一個類別。

我不想肯定有+/-中位數,這只是一個例子,當數據聚集在分鐘左右。

謝謝您的幫助

回答

0

我發現了一個非常醜陋的方式來解決它...:

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