Подсчитайте различные слова из кадра данных 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'] 

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

Благодаря,

г

  • Только извлечение текста из этого элемента, а не его детей
  • Найти и заменить текст в файле .docx - Python
  • Работа с подготовкой данных о сумме слова для регрессии
  • Выдавать сглаженный текст на прозрачной поверхности в pygame
  • Вывод текста за пределы фигуры
  • Как добавить текст в прямоугольник pygame
  • Создайте Pandas DataFrame из txt-файла с определенным шаблоном
  • Как быстро получить сбор слов в корпусе (с nltk)?
  • 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
    Python - лучший язык программирования в мире.