Mam dużą (około 12 mln wierszy) df ramki danych z powiedzmy:
df.columns = ['word','documents','frequency']
Tak więc następujące działania przebiegały w odpowiednim czasie:
word_grouping = df[['word','frequency']].groupby('word')
MaxFrequency_perWord = word_grouping[['frequency']].max().reset_index()
MaxFrequency_perWord.columns = ['word','MaxFrequency']
Jednak to trwa nieoczekiwanie długo:
Occurrences_of_Words = word_grouping[['word']].count().reset_index()
Co ja tu robię źle? Czy istnieje lepszy sposób zliczania wystąpień w dużej ramce danych?
df.word.describe()
działał całkiem nieźle, więc naprawdę nie spodziewałem się, że ta ramka danych Occurrences_of_Words potrwa bardzo długo.
ps: Jeśli odpowiedź jest oczywista i czujesz potrzebę ukarania mnie za zadanie tego pytania, dołącz również odpowiedź. Dziękuję Ci.
df.word.value_counts()['myword']
jest około dwa razy szybszy niżlen(df[df.word == 'myword'])
.Jeśli chcesz policzyć częstotliwość danych kategorycznych w kolumnie w pandas dataFrame use:
df['Column_Name'].value_counts()
- Źródło .
źródło
To tylko dodatek do poprzednich odpowiedzi. Nie zapominajmy, że w przypadku rzeczywistych danych mogą występować wartości null, więc warto je również uwzględnić w zliczaniu za pomocą opcji
dropna=False
( domyślnieTrue
)Przykład:
źródło