2017-11-03 2 views
3

Ich muss den Mittelwert und Median für Frequenzen zwischen zwei kategorischen Variablen erhalten. Z.B .:beschreibende Statistiken für zwei kategorische Variablen (Pandas)

Etikett, Brief Num
Foo | A | 1
Foo | B | 2
Foo | C | 4
Bar | A | 2
Bar | G | 3
Bar | N | 1
Bar | P | 2
Cee | B | 1
Cee | B | 2
Cee | C | 4
Cee | D | 5

Zum Beispiel, was ist die mittlere und mittlere Anzahl von Buchstaben pro Etikett. Hier sind 11 Fälle von drei möglichen Markierungen (M = 3,667) und der Median ist 4 (3 foo, 4 bar, 4 cee). Wie kann ich das in Pandas berechnen? Ist es möglich, dies mit einer groupby-Anweisung zu tun? Mein Datensatz ist viel größer als das.

Antwort

1

Need value_counts für eine Spalte oder groupby + size (oder count wenn NaN s auslassen müssen):

a = df['Label'].value_counts() 
print (a) 
Cee 4 
Bar 4 
Foo 3 
Name: Label, dtype: int64 

#alternative 
#a = df.groupby('Label').size() 
print (a.mean()) 
3.6666666666666665 

print (a.median()) 
4.0 

a = df.groupby(['Label','Letter']).size() 
print (a) 
Label Letter 
Bar A   1 
     G   1 
     N   1 
     P   1 
Cee B   2 
     C   1 
     D   1 
Foo A   1 
     B   1 
     C   1 
dtype: int64 

print (a.mean()) 
1.1 

print (a.median()) 
1.0 
+0

Ich habe eine Frage off topic. Wie importieren Sie die OP-Daten in Ihren Datenrahmen? – bhansa

+1

Ich benutze 'sep =" \ s + \ | \ s + "' und füge '|' zu 'header's manuell hinzu – jezrael

+0

Oder besser ist' sep = "\ s + \ | \ s + | \ s +" '- nicht notwendig add' | 'zu Überschriften – jezrael

Verwandte Themen