2017-01-05 3 views
1

Meine Daten here.pd.qcut - Valueerror: Bin Kanten müssen eindeutig sein

q = pd.qcut(df['loss_percent'], 10) 

ValueError: Bin edges must be unique: array([ 0.38461538, 0.38461538, 0.46153846, 0.46153846, 0.53846154, 
     0.53846154, 0.53846154, 0.61538462, 0.69230769, 0.76923077, 1.  ]) 

Ich habe durch why-use-pandas-qcut-return-valueerror gelesen, aber ich bin immer noch verwirrt.

Ich stelle mir vor, dass einer meiner Werte eine hohe Häufigkeit des Auftretens hat und dass bricht qcut.

erster Schritt ist, wie kann ich feststellen, ob das tatsächlich der Fall ist, und welcher Wert ist das Problem. Zuletzt, welche Art von Lösung ist angemessen angesichts meiner Daten.

+0

ich diese Frage beantwortet [hier] (http://stackoverflow.com/a/36883735/2336654) – piRSquared

+0

Mögliche Duplikat [pd.qcut mit Werten, die inf sind (unendlich) Valueerror: Bin Kanten muss eindeutig sein:] (http://stackoverflow.com/questions/41475470/pd-qcut-with-values-that-are-inf-infinity-valueerror-bin-edges-must -be-unique) –

Antwort

2

die Lösung in der Post Mit https://stackoverflow.com/a/36883735/2336654

def pct_rank_qcut(series, n): 
    edges = pd.Series([float(i)/n for i in range(n + 1)]) 
    f = lambda x: (edges >= x).argmax() 
    return series.rank(pct=1).apply(f) 

q = pct_rank_qcut(df.loss_percent, 10) 
+0

Also schneidet diese Lösung die Daten immer noch in gleiche Blöcke (mein Fall Dezil?). Wenn das der Fall ist, warum ist dann nicht qcut behoben, genau nach Ihrer Lösung zu tun? Ich frage mich nur ... – codingknob

Verwandte Themen