2017-04-07 4 views
1

df.head'groupby.count' mit agg

   Populous  Continents 
Australia 2.331602e+07  Australia 
Brazil  2.059153e+08  South America 
Canada  3.523986e+07  North America 
China  1.367645e+09   Asia 
France  6.383735e+07   Europe 

Oben sind die ersten 5 Einträge meiner Datenrahmen verwenden. Ich möchte sie nach Kontinenten gruppieren, dann möchte ich eine statistische Analyse durchführen. Ich möchte einen neuen Datenrahmen mit den Avg, Summe, STD von jeder Gruppe volkreich sowie die count von Ländern in jeder Gruppe, wie seine Spalten erstellen.

new_df =df.groupby('Continents')['Populous'].agg({ 'Avg': np.average, 'Sum':np.sum, 'STD': np.std}), kümmert sich um drei Spalten, aber ich weiß nicht, wie man count dort bekommen. Ich habe versucht, einschließlich 'Size': count, innerhalb der agg-Methode, aber es führte zu einem Fehler.

Vielen Dank.

+2

Verwenden Sie "Größe": "count", wobei count eine Zeichenfolge ist. – root

+0

Ah. Dies scheint zu funktionieren. Also funktionieren nicht-numpy Funktionen, ohne den Funktionsnamen in Strings umzuwandeln, aber andere Funktionen erfordern Stringkonvertierung? – Moondra

+2

Die pandas devs haben einen String-Alias ​​für allgemeine Funktionen hinzugefügt, die in 'groupby' verwendet werden. Zum Beispiel könnte Ihr gesamtes 'agg' geschrieben werden: {'Avg': 'mean', 'Sum': 'sum', 'STD': 'std'}'. Beachten Sie, dass es einen kleinen Unterschied zwischen ''mean' 'und' np.average 'gibt, in dem' 'mean'' 'NaN' ignoriert, während' np.average' 'NaN' zurückgibt, wenn eines vorhanden ist. – root

Antwort

1

Sie können dafür 'Size': len oder 'Size': 'count' verwenden. Wie jedoch @DSM gezeigt hat, zählt len fehlende Werte, während 'count' dies nicht tut.

+2

'len' und' 'count'' sind nicht gleich - 'count' enthält keine Nullwerte, aber' len'. – DSM

+0

Das wusste ich nicht. Danke für den Hinweis - Ich habe es der Antwort hinzugefügt. – pansen

1

Sie könnten auch dies nützlich finden:

df.groupby('Continents').Populous.describe().unstack() 

Auch this answer sehen, wenn Sie mehr Statistiken wollen.

+0

Ja, ich habe versucht, 'describe' zu ​​verwenden, aber ich bemerkte, dass 'sum' fehlte, also gab ich auf. Es scheint jedoch, dass ich meine eigenen Statistiken hinzufügen kann. Danke für den Link =) – Moondra

Verwandte Themen