Подсчитайте различные слова из кадра данных 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 , например, для соответствующего столбца.

Interesting Posts

Доступ к битовым полям при чтении / записи двоичных структур данных

Вождение Excel из Python в Windows

Индивидуальное назначение портлета для контента Plone

поверхностные графики в matplotlib

Python – TypeError: float object не вызываемая ошибка

Возможно ли иметь реальную утечку памяти в Python из-за вашего кода?

Как я могу использовать python-запрос для захвата ссылки на странице?

На самом деле слишком много установок Python на OSX Mountain Lion

Построение матрицы «свернутых» строк эффективно в Numpy

Есть ли промежуточное программное обеспечение Django / плагин, который регистрирует все мои запросы организованным образом?

Эффективное вычисление согласованного по границе среднего значения окрестности

Python – Как я могу получать электронные письма через POP или IMAP через прокси?

Несколько штук в numpy.piecewise

Python: вернуть кортеж или список?

Подклассирование «свойства» Python

Python - лучший язык программирования в мире.