2017-04-25 91 views
0

我有一列熊猫数据框:犯罪类型。该栏包含16种不同的“犯罪类别”,我希望将其视为词云,并根据其数据框内的频率确定字数。从单列熊猫数据框中生成单词云

enter image description here

我试图用下面的代码来做到这一点:

为了使数据:

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 

我能够使用以下代码从完整数据集中创建早期词云,但我希望词云只能从特定列'犯罪类型'('allCrime.csv')生成单词,包含约。 13列):

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

我是新来的Python和大熊猫(和编码一般!),所有的帮助是感激地收到。

+1

你可能要检查[这](http://stackoverflow.com/questions/42193013/wordcloud-for-a-csv-file-in-python)... – MaxU

回答

4

问题是您使用的WordCloud.generate方法需要一个字符串,它将计算字词实例,但您提供了pd.Series

根据您想要的单词云生成你可以做什么:

  1. wordcloud2 = WordCloud().generate(' '.join(text2['Crime Type'])),这将串连所有的话在你的数据框柱再算上所有实例。

  2. 使用WordCloud.generate_from_frequencies手动传递计算出的单词频率。

+0

感谢languitar和@MaxU - 您的帖子的组合为我工作。 –