¿Cuál es la forma más eficiente de contar las ocurrencias en los pandas?

Tengo un df de datos grande (alrededor de 12M filas) con decir:

df.columns = ['word','documents','frequency'] 

Así que lo siguiente se ejecutó de manera oportuna:

 word_grouping = df[['word','frequency']].groupby('word') MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index() MaxFrequency_perWord.columns = ['word','MaxFrequency'] 

Sin embargo, esto está demorando un tiempo inesperado en ejecutarse:

 Occurrences_of_Words = word_grouping[['word']].count().reset_index() 

¿Qué estoy haciendo mal aquí? ¿Hay una mejor manera de contar las ocurrencias en un gran dataframe?

 df.word.describe() 

funcionó bastante bien, por lo que realmente no esperaba que este dataframe de Ocurrencias de los Datos tomara mucho tiempo en construirse.

ps: Si la respuesta es obvia y sientes la necesidad de penalizarme por hacer esta pregunta, incluye la respuesta también. gracias.

Creo que df['word'].value_counts() debería servir. Al saltarte la maquinaria groupby, ahorrarás algo de tiempo. No estoy seguro de por qué el count debería ser mucho más lento que el max . Ambos se toman un tiempo para evitar los valores perdidos. (Comparar con el size .)

En cualquier caso, value_counts se ha optimizado específicamente para manejar el tipo de objeto, como tus palabras, así que dudo que lo hagas mucho mejor que eso.

Cuando desee contar la frecuencia de datos categóricos en una columna en pandas dataFrame use: df['Column_Name'].value_counts()

– Fuente .

Solo una adición a las respuestas anteriores. No olvidemos que al tratar con datos reales puede haber valores nulos, por lo que es útil incluirlos en el conteo usando la opción dropna=False (el valor predeterminado es True )

Un ejemplo:

 >>> df['Embarked'].value_counts(dropna=False) S 644 C 168 Q 77 NaN 2 

Vine aquí solo para encontrar si “valor” estaba presente en df.column, esto me funcionó:

 "value" in df["Column"].values