Что является наиболее эффективным способом подсчета явлений в 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