2017-01-01 2 views
2

Ich habe einen einfachen Datenrahmen wie der unten erwähnte.Wahrscheinlichkeit in Pandas

Wie die Wahrscheinlichkeit des Auftretens von einer in Column_1 nach der Column_2 und zu zählen?

Column_1 ist ein Ergebnis (entweder eins oder null).

Column_2 ist eine Art Klassifizierung.

Also die erste Zeile bedeutet 1 für eine Person, die in Gebäudenummern A mit einem Auto lebt, ist Modell LM.

Column_1 Column_2 Column_3 
1  A   LM 
1  B   LO  
0  C   LP 
1  D   LM 
0  A   LK 
1  A   LM 

Wenn ich verstehe, das Ergebnis korrigieren

LM LO LP LK 
A .33    0 
B    .167 
C    0 
D .167 
+0

Was ist Ihre erwartete Ausgabe? – Zero

Antwort

1

Sie können pivot_table verwenden könnte:

print (df.pivot_table(index='Column_2', 
         columns='Column_3', 
         values='Column_1', 
         aggfunc='sum', 
         fill_value=0)) 
Column_3 LK LM LO LP 
Column_2     
A   0 2 0 0 
B   0 0 1 0 
C   0 0 0 0 
D   0 1 0 0 

Eine andere Lösung mit groupby und unstack:

df1 = df.groupby(['Column_2','Column_3'])['Column_1'].sum().unstack(fill_value=0) 
print (df1) 
Column_3 LK LM LO LP 
Column_2     
A   0 2 0 0 
B   0 0 1 0 
C   0 0 0 0 
D   0 1 0 0 

Zuletzt Sie von divlength von index teilen kann - es ist length von df:

print (df1.div(len(df.index))) 
Column_3 LK  LM  LO LP 
Column_2        
A   0.0 0.333333 0.000000 0.0 
B   0.0 0.000000 0.166667 0.0 
C   0.0 0.000000 0.000000 0.0 
D   0.0 0.166667 0.000000 0.0 
+0

Um die Wahrscheinlichkeit zu erhalten, denke ich, dass ich die Summe durch die Länge von Column_1 nicht die Summe von 1 teilen muss? –

+0

Sorry, warum 0,33? Was ist Formel? – jezrael

+0

Die Länge von Column_1 ist 6 in diesem Fall also wenn Sie 2/6 = 0.33 teilen –

Verwandte Themen