Подсчитайте различные слова из кадра данных Pandas

У меня есть кадр данных Pandas, где один столбец содержит текст. Я хотел бы получить список уникальных слов, появляющихся во всем столбце (пространство является единственным разделом).

import pandas as pd r1=['My nickname is ft.jgt','Someone is going to my place'] df=pd.DataFrame(r1,columns=['text']) 

Результат должен выглядеть следующим образом:

 ['my','nickname','is','ft.jgt','someone','going','to','place'] 

Это не помешает получить счет, но это не требуется.

Благодаря,

г

6 Solutions collect form web for “Подсчитайте различные слова из кадра данных Pandas”

Используйте set чтобы создать последовательность уникальных элементов.

Сделайте некоторую очистку на df чтобы получить строки в нижнем регистре и разделить:

 df['text'].str.lower().str.split() Out[43]: 0 [my, nickname, is, ft.jgt] 1 [someone, is, going, to, my, place] 

Каждый список в этом столбце может быть передан функции set.update для получения уникальных значений. Используйте для этого:

 results = set() df['text'].str.lower().str.split().apply(results.update) print results set(['someone', 'ft.jgt', 'my', 'is', 'to', 'going', 'place', 'nickname']) 

Используйте collections.Counter :

 >>> from collections import Counter >>> r1=['My nickname is ft.jgt','Someone is going to my place'] >>> Counter(" ".join(r1).split(" ")).items() [('Someone', 1), ('ft.jgt', 1), ('My', 1), ('is', 2), ('to', 1), ('going', 1), ('place', 1), ('my', 1), ('nickname', 1)] 

Если вы хотите сделать это из конструкции DataFrame:

 import pandas as pd r1=['My nickname is ft.jgt','Someone is going to my place'] df=pd.DataFrame(r1,columns=['text']) df.text.apply(lambda x: pd.value_counts(x.split(" "))).sum(axis = 0) My 1 Someone 1 ft.jgt 1 going 1 is 2 my 1 nickname 1 place 1 to 1 dtype: float64 

Если вы хотите использовать более гибкую токенизацию, используйте nltk и ее tokenize

Основываясь на ответе @Ofir Israel, специфичном для Панд:

 from collections import Counter result = Counter(" ".join(df['text'].values.tolist()).split(" ")).items() result 

Дает вам то, что вы хотите, это преобразует значения столбца текстового столбца в список, разбивается на пробелы и подсчитывает экземпляры.

 uniqueWords = list(set(" ".join(r1).lower().split(" "))) count = len(uniqueWords) 

В документации v0.14.0 (версия стабильной версии на момент написания этой статьи) такие данные будут возвращены (в другом фрейме данных) DataFrame.describe() .

Обратите внимание, что количество уникальных значений не возвращается для столбцов с numeric типами данных, но должно быть возвращено для столбцов string , например, для соответствующего столбца.

  • Очистка текстовой строки после получения текстового текста с помощью Beautifulsoup
  • Как отобразить текст в pygame?
  • Динамически менять текст QLabel в PyQt4
  • Как удалить символы, отличные от ASCII, но оставить периоды и пробелы с помощью Python?
  • Аннотировать тепловую карту со значением из кадра данных Pandas
  • не может выполнить сокращение с помощью гибкого типа plt.hist
  • Как загрузить данные с помощью numpy без фиксированного размера столбца
  • Чтение нескольких номеров из текстового файла
  • Статистическая модель предложения предложений, например проверка орфографии
  • pandas заменяет (стирает) разные символы из строк
  • Есть ли способ найти самый появившийся / общий стиль span в python beautifulsoup?
  • Python - лучший язык программирования в мире.