Что является наиболее эффективным способом подсчета явлений в pandas?

У меня есть большой (около 12 М строк) dataframe df, например:

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

Итак, следующее выполнялось своевременно:

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

Однако для этого требуется много времени:

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

Что я здесь делаю неправильно? Есть ли лучший способ подсчета вложений в большой части данных?

df.word.describe()

работает довольно хорошо, поэтому я действительно не ожидал, что этот DataFrame Occurrences_of_Words займет очень много времени.

ps: Если ответ очевиден, и вы чувствуете необходимость штрафовать меня за задание этого вопроса, пожалуйста, укажите также ответ. спасибо.

Ответы

Ответ 1

Я думаю, df['word'].value_counts() должен служить. Пропустив машину groupby, вы сэкономите время. Я не уверен, почему count должен быть намного медленнее, чем max. Оба требуют времени, чтобы избежать пропущенных значений. (Сравните с size.)

В любом случае value_counts был специально оптимизирован для обработки типа объекта, например, ваших слов, поэтому я сомневаюсь, что вы сделаете гораздо лучше.

Ответ 2

Если вы хотите посчитать частоту категориальных данных в столбце в pandas dataFrame, используйте: df['Column_Name'].value_counts()

Источник.

Ответ 3

Просто дополнение к предыдущим ответам. Не будем забывать, что при работе с реальными данными могут быть нулевые значения, поэтому полезно также включать их в подсчет с помощью параметра dropna=False (по умолчанию True)

Пример:

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

Ответ 4

Я пришел сюда, чтобы посмотреть, присутствует ли "значение" в df.column, у меня это сработало:

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