我在清理此数据集时遇到问题:
我需要Text
在此数据集中绘制列:
Date Account Text
0 [28/07/2018] 412 [MAN]
1 [28/07/2018] 21403 ['photo', 'photo']
2 [28/07/2018] 3193 [Describe, Links']
3 [28/07/2018] 4239 ['photo']
4 [03/08/2018] 051 []
5 [03/08/2018] 21 []
6 [16/08/2018] 4124 ['XCUUE', 'HB']
7 [16/08/2018] 412 [program]
8 [16/08/2018] 410 []
9 [16/08/2018] 9543 [Links]
具体来说,我需要处理“文本”列。该列中的行是标记化的结果,因此将它们包含在方括号中。我想做的是将这些单词绘制在单词云或简单的条形图中以研究它们的频率。我遇到的问题是同一个单词的重复,例如当我尝试绘制频率时出现“照片”“照片”。
我的代码用于为wordcloud准备数据集。
comment_words = ''
stopwords = remove_stop() # you can use a default one
for val in df['Text']:
tokens = val.split()
for i in range(len(tokens)):
tokens[i] = tokens[i].str.lower()
comment_words += " ".join(tokens)+" "
wordcloud = WordCloud(width = 800, height = 800,
background_color ='white',
stopwords = stopwords,
min_font_size = 10).generate(comment_words)
如果您可以查看或尝试使用其他方法来解决此问题,我将不胜感激,即使用重复的单词(频率很重要,因此我不能删除任何重复的行),最后使用引号'来解决此问题。谢谢
如果要删除记录中的重复项(通过删除记录中的重复项来绘制wordcloud没有意义):
import pandas as pd
from wordcloud import WordCloud
from nltk.corpus import stopwords
import matplotlib.pyplot as plt
def plot(words):
wordcloud = WordCloud(width = 800, height = 800,
background_color ='white',
stopwords = stopwords.words('english'),
min_font_size = 10).generate(" ".join(words))
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# Data
df = pd.DataFrame({'Text':
[
['MAN'],
['photo', 'photo'],
['Describe', 'Links'],
['photo'], [], [],
['XCUUE', 'HB'],
['program'], [],
['Links']
]})
# Remove duplicates within records
words = df['Text'].apply(lambda x: list(set(x))).tolist()
words = [item for sublist in words for item in sublist]
plot(words)
使单词不区分大小写
plot([w.lower() for w in words])
最后,如果您的数据框记录是未标记的文本,如下所示
df = pd.DataFrame({'Text': ['MAN', 'photo photo', 'Describe Links', 'photo', ' ', ' ', 'XCUUE HB', 'program', 'Links']})
那么你也能
words = df['Text'].apply(lambda x: list(set(x.split()))).tolist()
words = [item for sublist in words for item in sublist]
plot([w.lower() for w in words])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句