[python] 팬더에서 발생을 계산하는 가장 효율적인 방법은 무엇입니까?

다음과 같이 큰 (약 12M 행) 데이터 프레임 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 데이터 프레임을 빌드하는 데 시간이 오래 걸리지 않을 것입니다.

추신 : 답변이 분명하고이 질문을해서 저에게 불이익을 줄 필요가 있다고 생각되면 답변도 포함하십시오. 감사합니다.



답변

나는 df['word'].value_counts()봉사해야 한다고 생각 합니다. 그룹 별 기계를 건너 뛰면 시간이 절약됩니다. 왜 count보다 느려 야하는지 잘 모르겠습니다 max. 둘 다 누락 된 값을 피하기 위해 시간이 걸립니다. (와 비교하십시오 size.)

어쨌든 value_counts는 단어와 같이 객체 유형을 처리 하도록 특별히 최적화 되었으므로 그보다 훨씬 더 잘할 것입니다.


답변

pandas dataFrame의 열에서 범주 형 데이터의 빈도를 계산하려면 다음을 사용하십시오. df['Column_Name'].value_counts()

출처 .


답변

이전 답변에 추가 된 것입니다. 실제 데이터를 처리 할 때 null 값이있을 수 있으므로 옵션을 사용하여 계산에 값을 포함하는 것도 유용합니다 dropna=False( 기본값은True ).

예를 들면 :

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


답변