Ich habe einen großen (ungefähr 12 Millionen Zeilen) Datenrahmen df mit sagen:
df.columns = ['word','documents','frequency']
Folgendes lief also zeitnah ab:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
Die Ausführung dauert jedoch unerwartet lange:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
Was mache ich hier falsch? Gibt es eine bessere Möglichkeit, Vorkommen in einem großen Datenrahmen zu zählen?
df.word.describe()
lief ziemlich gut, daher hatte ich wirklich nicht erwartet, dass die Erstellung dieses Occurrences_of_Words-Datenrahmens sehr lange dauern würde.
ps: Wenn die Antwort offensichtlich ist und Sie das Bedürfnis haben, mich für das Stellen dieser Frage zu bestrafen, geben Sie bitte auch die Antwort an. Danke.
df.word.value_counts()['myword']
ist etwa doppelt so schnell wielen(df[df.word == 'myword'])
.Wenn Sie die Häufigkeit kategorialer Daten in einer Spalte in pandas dataFrame zählen möchten, verwenden Sie:
df['Column_Name'].value_counts()
- Quelle .
quelle
Nur eine Ergänzung zu den vorherigen Antworten. Vergessen wir nicht, dass es beim Umgang mit realen Daten möglicherweise Nullwerte gibt. Daher ist es hilfreich, diese auch mithilfe der Option in die Zählung einzubeziehen
dropna=False
( Standard istTrue
).Ein Beispiel:
quelle