【发布时间】:2021-04-09 00:28:36
【问题描述】:
我有一个包含许多行和列的 excel 文件。我想做以下事情。首先,我想根据文本匹配过滤行。其次,我想选择一个特定的列并为该列中的所有单词生成词频。第三,我要绘制单词和频率。
我已经弄清楚了第一部分。我的问题是如何在数据框上应用 Counter() 。如果我只使用 Counter(df),它会返回一个错误。因此,我使用以下代码将每一行转换为一个列表,然后应用 Counter。当我这样做时,我会分别获得每一行的词频(如果我在 for 循环中使用计数器,否则我只会得到一行的词频)。但是,我想要将所有行放在一起的字数。感谢任何输入。谢谢! 以下是示例数据。
product review
a Great Product
a Delivery was fast
a Product received in good condition
a Fast delivery but useless product
b Dont recommend
b I love it
b Please dont buy
b Second purchase
我想要的输出是这样的:对于产品 a - (product,3),(delivery,2)(fast,2) etc..我当前的输出就像 (great,1), (product,1) for第一行。
这是我使用的代码。
strdata = column.values.tolist()
tokens = [tokenizer.tokenize(str(i)) for i in strdata]
cleaned_list = []
for m in tokens:
stopped = [i for i in m if str(i).lower() not in stop_words]
stemmed = [stemmer.stem(i) for i in stopped]
cleaned_list.append(stopped) #append stemmed words to list
count = Counter(stemmed)
print(count.most_common(10))
【问题讨论】:
-
样本数据和预期输出?
-
不确定如何在此处发布表格。这正是我的问题,但解决方案似乎不起作用。 stackoverflow.com/questions/46786211/…
-
您可以编辑您的问题并将表格放入代码围栏中。