У меня есть большой (около 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()
работал довольно хорошо, поэтому я действительно не ожидал, что создание этого фрейма данных Occurrences_of_Words займет очень много времени.
ps: Если ответ очевиден и вы чувствуете необходимость наказать меня за этот вопрос, включите также ответ. Спасибо.
df.word.value_counts()['myword']
примерно в два раза быстрее, чемlen(df[df.word == 'myword'])
.Если вы хотите подсчитать частоту категориальных данных в столбце в pandas dataFrame, используйте:
df['Column_Name'].value_counts()
- Источник .
источник
Просто дополнение к предыдущим ответам. Не забывайте, что при работе с реальными данными могут быть нулевые значения, поэтому полезно также включить их в подсчет, используя параметр
dropna=False
(по умолчаниюTrue
)Пример:
источник