从单列Pandas数据框生成词云

发布于 2021-01-29 15:58:33

我有一个带有一栏的Pandas数据框:犯罪类型。该列包含16种不同的犯罪“类别”,我想将其形象化为一个词云,并根据数据帧内词频的大小确定词的大小。

在此处输入图片说明

我尝试使用以下代码执行此操作:

导入数据:

fields = ['Crime type']

text2 = pd.read_csv('allCrime.csv', usecols=fields)

生成词云:

wordcloud2 = WordCloud().generate(text2)
# Generate plot
plt.imshow(wordcloud2)
plt.axis("off")
plt.show()

但是,我收到此错误:

TypeError: expected string or bytes-like object

我可以使用下面的代码从完整的数据集中创建一个较早的词云,但我希望该词云仅从特定列“ crime type”(“
allCrime.csv”包含大约13列)中生成词。 :

text = open('allCrime.csv').read()
wordcloud = WordCloud().generate(text)
# Generate plot
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

我是Python和Pandas的新手(并且通常是编码!),所以将不胜感激地收到所有帮助。

关注者
0
被浏览
145
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    问题在于,WordCloud.generate您使用的方法需要一个字符串,该字符串将在其上计算单词实例,但您提供了一个字符串pd.Series

    根据您希望词云生成的内容,您可以执行以下操作:

    1. wordcloud2 = WordCloud().generate(' '.join(text2['Crime Type'])),它将连接数据框列中的所有单词,然后计算所有实例。

    2. 使用WordCloud.generate_from_frequencies手动传字的计算的频率。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看