Pandas: Zählen von eindeutigen Werten in einem Datenrahmen

8

Wir haben einen Datenrahmen, der so aussieht:

%Vor%

Wir wollen einfach die Anzahl aller eindeutigen Werte im DataFrame. Eine einfache Lösung ist:

%Vor%

Jedoch: 1. Es sieht so aus, als ob stack eine Kopie zurückgibt, keine Ansicht, was in diesem Fall Speicherbehinderung ist. Ist das richtig? 2. Ich möchte das DataFrame nach Zeilen gruppieren und dann die verschiedenen Histogramme für jede Gruppierung abrufen. Wenn wir die Speicherprobleme mit stack ignorieren und es jetzt verwenden, wie macht man die Gruppierung richtig?

%Vor%

Der gestapelte DataFrame hat einen MultiIndex mit einer Länge von weniger als n_rows*n_columns , weil die nan s entfernt wurden.

%Vor%

Das bedeutet, dass wir nicht leicht wissen, wie wir unsere Gruppierung aufbauen sollen. Es wäre viel besser, nur auf der ersten Ebene zu arbeiten, aber dann bin ich darauf angewiesen, wie ich dann die Gruppierung anwenden soll, die ich eigentlich möchte.

%Vor%

Bearbeiten: Eine Lösung, die keine Stapelung verwendet:

%Vor%

Sieht jedoch klobig aus. Wenn es eine bessere Option gibt, bin ich froh, sie zu hören.

Bearbeiten: Dans Kommentar enthüllte, dass ich einen Tippfehler hatte, obwohl die Korrektur uns immer noch nicht ins Ziel bringt.

    
jeffalstott 07.02.2014, 16:59
quelle

2 Antworten

7

Ich denke, Sie machen eine Zeilen / Spalten-Operation, so dass apply :

verwendet werden kann %Vor%

Hinweis: Es gibt eine value_counts DataFrame-Methode, die für 0.14 funktioniert, was dies effizienter und prägnanter macht.

Es ist erwähnenswert, dass die Funktion pandas value_counts auch für ein numpy-Array funktioniert. Sie können also die Werte des DataFrame übergeben (als 1-d-Array view mit np.ravel ):

%Vor%

Sie waren auch ziemlich nah daran, das richtig zu machen, aber Sie müssten stapeln und entstapeln:

%Vor%

Dieser Fehler scheint etwas selbsterklärend zu sein (4! = 16):

%Vor%

vielleicht wollten Sie weitergeben:

%Vor%     
Andy Hayden 07.02.2014, 20:18
quelle
1

Nicht genug Rep zu kommentieren, aber Andys Antwort:

%Vor%

habe ich persönlich benutzt und scheint mir bei weitem die vielseitigste und leicht lesbare Lösung zu sein. Ein weiterer Vorteil ist, dass es einfach ist, eine Teilmenge der Spalten zu verwenden:

%Vor%

oder

%Vor%

Gibt es einen Nachteil für diesen Ansatz oder einen bestimmten Grund, den Sie Stack und Groupby verwenden möchten?

    
tegan 02.12.2014 15:23
quelle

Tags und Links