我想对包含Twitter消息的数据集进行一些文本处理。到目前为止,我能够将数据(.CSV)加载到Pandas数据帧中,并通过(自定义)列“timestamp”对其进行索引。在
df = pandas.read_csv(f)
df.index = pandas.to_datetime(df.pop('timestamp'))
看起来有点像这样:
^{pr2}$我可以创建一个只包含文本的新对象(系列):
texts = pandas.Series(df['text'])
这就产生了:
2015-06-02 14:50:54 Business Update Meer cruiseschepen dan ooit in... 2015-06-02 14:50:53 RT @ProvincieNH: Provincie maakt Markermeerdij... 2015-06-02 14:50:53 Amsterdam - Nieuwe flitspaal Wibautstraat: In ... 2015-06-02 14:50:53 Amsterdam - Nieuwe flitspaal Wibautstraat http... 2015-06-02 14:50:53 Lugar secreto em Amsterdam: Begijnhof // Hidde... Name: text, Length: 49570
1。这个新对象是否与我的初始df
变量的类型(dataframe)相同,只是列/行不同?
现在,与nltktookit一起,我可以使用这个tokenize
字符串:
for w in words:
print(nltk.word_tokenize(w))
这将迭代数组,而不是将“text”列映射到多列“words”数组。2。我该怎么做,而且我又如何计算每个单词的出现次数?
我知道有一个unique()
方法可以用来创建一个不同的单词列表。但是,我需要一个额外的列,它是数组的计数,我一开始就无法产生。:)3。或者,下一步“计算”这些单词的出现次数是grouping
?
编辑。3: 我需要“CountVectorizer”,谢谢EdChum
documents = df['text'].values
vectorizer = CountVectorizer(min_df=0, stop_words=[])
X = vectorizer.fit_transform(documents)
print(X.toarray())
我的主要目标是统计每个单词的出现次数并选择前X结果。我觉得我在正确的轨道上,但我不能得到最后的正确步骤。。在
基于EdChums的评论,这里有一种从CountVectorizer获取(我假设是全局)字数的方法:
将
^{pr2}$CountVectoriser
返回的稀疏矩阵转换为密集矩阵,并将其和特性名称传递给dataframe
构造函数。然后将帧转置并沿着axis=1
求和得到每个单词的总和:如果您只关心单词的频率分布,请考虑使用}:
Freq Dist
from{相关问题 更多 >
编程相关推荐