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
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
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]
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
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 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.