J'ai un grand (environ 12M lignes) dataframe df avec disons:
df.columns = ['word','documents','frequency']
Ainsi, ce qui suit s'est déroulé en temps opportun:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
Cependant, cela prend un temps inattendu à s'exécuter:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
Qu'est-ce que je fais de mal ici? Existe-t-il une meilleure façon de compter les occurrences dans une grande trame de données?
df.word.describe()
a plutôt bien fonctionné, donc je ne m'attendais vraiment pas à ce que ce dataframe Occurrences_of_Words prenne beaucoup de temps à construire.
ps: Si la réponse est évidente et que vous ressentez le besoin de me pénaliser pour avoir posé cette question, veuillez également inclure la réponse. Merci.
df.word.value_counts()['myword']
est environ deux fois plus rapide quelen(df[df.word == 'myword'])
.Lorsque vous souhaitez compter la fréquence des données catégorielles dans une colonne de pandas dataFrame, utilisez:
df['Column_Name'].value_counts()
- Source .
la source
Juste un ajout aux réponses précédentes. N'oublions pas que lorsqu'il s'agit de données réelles, il peut y avoir des valeurs nulles, il est donc utile de les inclure également dans le comptage en utilisant l'option
dropna=False
(la valeur par défaut estTrue
)Un exemple:
la source