46

1 つの列にテキストが含まれる 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']

カウントを取得しても問題はありませんが、必須ではありません。

4

8 に答える 8

24

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

于 2013-09-21T20:42:17.223 に答える
11

パンダに固有の@Ofir Israelの答えに基づいています:

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

必要なものが得られます。これにより、テキスト列のシリーズ値がリストに変換され、スペースで分割され、インスタンスがカウントされます。

于 2013-09-21T20:12:13.340 に答える
5
uniqueWords = list(set(" ".join(r1).lower().split(" ")))
count = len(uniqueWords)
于 2013-09-21T19:59:29.610 に答える
0

TL;DR

collections.Counterデータフレームの列の一意の単語の数を取得するために使用します (ストップワードなし)

与えられた:

$ cat test.csv 
Description
crazy mind california medical service data base...
california licensed producer recreational & medic...
silicon valley data clients live beyond status...
mycrazynotes inc. announces $144.6 million expans...
leading provider sustainable energy company prod ...
livefreecompany founded 2005, listed new york stock...

コード:

from collections import Counter
from string import punctuation

import pandas as pd

from nltk.corpus import stopwords
from nltk import word_tokenize

stoplist = set(stopwords.words('english') + list(punctuation))

df = pd.read_csv("test.csv", sep='\t')

texts = df['Description'].str.lower()

word_counts = Counter(word_tokenize('\n'.join(texts)))

word_count.most_common()

[アウト]:

[('...', 6), ('california', 2), ('data', 2), ('crazy', 1), ('mind', 1), ('medical', 1), ('service', 1), ('base', 1), ('licensed', 1), ('producer', 1), ('recreational', 1), ('&', 1), ('medic', 1), ('silicon', 1), ('valley', 1), ('clients', 1), ('live', 1), ('beyond', 1), ('status', 1), ('mycrazynotes', 1), ('inc.', 1), ('announces', 1), ('$', 1), ('144.6', 1), ('million', 1), ('expans', 1), ('leading', 1), ('provider', 1), ('sustainable', 1), ('energy', 1), ('company', 1), ('prod', 1), ('livefreecompany', 1), ('founded', 1), ('2005', 1), (',', 1), ('listed', 1), ('new', 1), ('york', 1), ('stock', 1)]
于 2019-05-15T01:58:30.483 に答える