Как найти большинство слов frequnet в корпусе в Pandas dataframe (Python) - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть Pandas dataframe, который выглядит следующим образом. Я токенизировал свои текстовые файлы и использовал NLTK Countvectorizer для преобразования в pandas dataframe. Кроме того, я уже удалил из моего купуса стоп-слова и знаки препинания. Я пытаюсь найти наиболее часто встречающиеся слова в моем корпусе в pandas кадре данных. В приведенном ниже кадре данных такие слова, как «aaron» и «отказаться», создавались> 10 раз, поэтому эти слова должны быть в новом кадре данных.

Примечание: я новичок в python, и я не уверен, как это реализовать. Предоставить объяснение с кодом.

Подмножество кадра данных

Я уже очистил свой корпус, и мой dataframe выглядит следующим образом

{'aaaahhhs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aahs': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aamir': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 1}, 'aardman': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 2}, 'aaron': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 4, 997: 0, 998: 0, 999: 0, 1000: 14}, 'abandon': {990: 0, 991: 0, 992: 0, 993: 0, 994: 0, 995: 0, 996: 0, 997: 0, 998: 0, 999: 0, 1000: 16}}

enter image description here

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Попробуйте:

dftop2 = pd.DataFrame(df.sum().sort_values(ascending=False).head(2))

и вы получите:

         0
aaron   18
abandon 16
1 голос
/ 20 апреля 2019

Если нужны первые N слов:

N = 2 
print (df.sum().nlargest(N).index)
Index(['aaron', 'abandon'], dtype='object')

Другое решение:

print (df.sum().sort_values(ascending=False).index[:N])
Index(['aaron', 'abandon'], dtype='object')

При необходимости также учитывается в одном столбце DataFrame или Series (удалить to_frame):

N = 2
print (df.sum().nlargest(N).to_frame('count'))
         count
aaron       18
abandon     16
print (df.sum().sort_values(ascending=False).iloc[:N].to_frame('count'))
         count
aaron       18
abandon     16

При необходимости 2 столбца DataFrame:

print (df.sum().nlargest(N).rename_axis('word').reset_index(name='count'))
      word  count
0    aaron     18
1  abandon     16

print (df.sum()
         .sort_values(ascending=False).iloc[:N]
         .rename_axis('word')
         .reset_index(name='count'))
      word  count
0    aaron     18
1  abandon     16
...