Ich habe einen Datenrahmen wie folgt aus:Pandas cumsum auf groupby verhält sich nicht wie erwartet
df = pd.DataFrame({'prob':np.random.uniform(0,1,size), 'target':np.random.randint(0,2, size=size),
'pred':np.random.randint(0,2, size=size)})
Dass ich cumsum
eines groupby
eines qcut
berechnen möchten:
df['box'] = pd.qcut(df['prob'], 10)
Meine Erwartung wäre, Berechnen Sie die kumulative Funktion für jede Gruppe in der Reihenfolge, aber berechnet stattdessen eine Summe für jedes Element:
mit der Antwort
0 0.000000
1 0.018182
2 0.018182
3 0.018182
4 0.000000
5 0.018182
6 0.018182
7 0.018182
8 0.036364
9 0.018182
10 0.000000
11 0.018182
12 0.018182
13 0.036364
14 0.000000
15 0.036364
16 0.036364
17 0.036364
18 0.054545
19 0.000000
20 0.000000
21 0.018182
22 0.018182
23 0.05454
statt
'(0.0, 0.1)' 0.04
'(0.1, 0.2)' 0.12 #(0.08 + previous 0.04)
'(0.2, 0.3)' 0.17 #(0.05 + previous 0.12)
Was ist das Ergebnis, das Sie erreichen möchten? – Alex
Schneiden Sie einen Datenrahmen in 10 Boxen nach Wert und führen Sie die kumulative Summe der Werte der Elemente der Gruppe. Summiere die Werte der ersten Gruppe und dividiere durch die Anzahl dieser Klasse im gesamten Datenrahmen. – Ivan
Eine kumulative Summe bedeutet 1 Element für jedes Element in der Gruppe. Klingt, als ob du 1 Element für jede Gruppe willst? – Alex