Eu tenho um grande dataframe df (cerca de 12M linhas) com dizer:
df.columns = ['word','documents','frequency']
Portanto, o seguinte foi executado em tempo hábil:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
No entanto, isso está demorando muito tempo para ser executado:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
O que eu estou fazendo errado aqui? Existe uma maneira melhor de contar ocorrências em um grande quadro de dados?
df.word.describe()
funcionou muito bem, então eu realmente não esperava que esse quadro de dados Occurrences_of_Words demorasse muito para ser construído.
ps: Se a resposta for óbvia e você sentir a necessidade de me penalizar por fazer essa pergunta, inclua a resposta também. obrigado.
df.word.value_counts()['myword']
é duas vezes mais rápido quelen(df[df.word == 'myword'])
.Quando você quiser contar a frequência de dados categóricos em uma coluna no pandas dataFrame, use:
df['Column_Name'].value_counts()
- Fonte .
fonte
Apenas uma adição às respostas anteriores. Não devemos esquecer que, ao lidar com dados reais, pode haver valores nulos; portanto, é útil incluir também aqueles na contagem usando a opção
dropna=False
(o padrão éTrue
)Um exemplo:
fonte