499 Stimmen

Zählen Sie die Häufigkeit, mit der ein Wert in einer DataFrame-Spalte auftritt

Ich habe einen Datensatz

category
cat a
cat b
cat a

Ich möchte gerne etwas Ähnliches zurückgeben, das die eindeutigen Werte und ihre Häufigkeiten zeigt

category   freq 
cat a       2
cat b       1

672voto

EdChum Punkte 333941

Verwenden Sie value_counts() wie von @DSM kommentiert.

In [37]:
df = pd.DataFrame({'a':list('abssbab')})
df['a'].value_counts()

Out[37]:

b    3
a    2
s    2
dtype: int64

Auch groupby und count. Viele Wege, um ein Katze zu häuten.

In [38]:
df.groupby('a').count()

Out[38]:

   a
a   
a  2
b  3
s  2

[3 rows x 1 columns]

Siehe die Online-Dokumentation.

Wenn Sie die Häufigkeit zum ursprünglichen DataFrame hinzufügen möchten, verwenden Sie transform, um einen abgestimmten Index zurückzugeben:

In [41]:
df['freq'] = df.groupby('a')['a'].transform('count')
df

Out[41]:

   a freq
0  a    2
1  b    3
2  s    2
3  s    2
4  b    3
5  a    2
6  b    3

[7 rows x 2 columns]

125voto

Arran Cudbard-Bell Punkte 5558

Wenn Sie alle Spalten anwenden möchten, können Sie Folgendes verwenden:

df.apply(pd.value_counts)

Dies wendet eine spaltenbasierte Aggregationsfunktion (in diesem Fall value_counts) auf jede der Spalten an.

108voto

Satyajit Dhawale Punkte 1112
df.category.value_counts()

Diese kurze Codezeile gibt Ihnen die gewünschte Ausgabe.

Wenn der Spaltenname Leerzeichen enthält, können Sie

df['category'].value_counts()

24voto

Roman Kazakov Punkte 647
df.apply(pd.value_counts).fillna(0)

value_counts - Gibt ein Objekt zurück, das die Anzahl der eindeutigen Werte enthält

apply - zählt die Häufigkeit in jeder Spalte. Wenn Sie axis=1 setzen, erhalten Sie die Frequenz in jeder Zeile

fillna(0) - macht die Ausgabe ansprechender. Ändert NaN in 0 um

22voto

Vidhya G Punkte 2290

In 0.18.1 groupby zusammen mit count gibt nicht die Häufigkeit von eindeutigen Werten zurück:

>>> df
   a
0  a
1  b
2  s
3  s
4  b
5  a
6  b

>>> df.groupby('a').count()
Empty DataFrame
Columns: []
Index: [a, b, s]

Die eindeutigen Werte und ihre Häufigkeiten können jedoch leicht mit size bestimmt werden:

>>> df.groupby('a').size()
a
a    2
b    3
s    2

Mit df.a.value_counts() werden standardmäßig sortierte Werte (absteigend, d.h. der größte Wert zuerst) zurückgegeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X