the*_*nze 4 python dataframe word-cloud pandas
我有一个Pandas数据框,有一列:犯罪类型.该列包含16种不同的"犯罪类别",我希望将其视为文字云,其中的单词根据数据框中的频率进行调整.
我尝试使用以下代码执行此操作:
将数据带入:
fields = ['Crime type']
text2 = pd.read_csv('allCrime.csv', usecols=fields)
Run Code Online (Sandbox Code Playgroud)
要生成单词云:
wordcloud2 = WordCloud().generate(text2)
# Generate plot
plt.imshow(wordcloud2)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
TypeError: expected string or bytes-like object
Run Code Online (Sandbox Code Playgroud)
我能够使用以下代码从完整数据集创建一个早期的词云,但我希望单词cloud只生成特定列中的单词"犯罪类型"('allCrime.csv'包含大约13列) :
text = open('allCrime.csv').read()
wordcloud = WordCloud().generate(text)
# Generate plot
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我是Python和Pandas的新手(并且通常编码!)所以感谢所有的帮助.
lan*_*tar 15
问题是WordCloud.generate你正在使用的方法需要一个字符串,它将计算单词实例,但你提供a pd.Series.
根据您想要生成的单词云,您可以执行以下操作:
wordcloud2 = WordCloud().generate(' '.join(text2['Crime Type'])),它将连接数据帧列中的所有单词,然后计算所有实例.
使用WordCloud.generate_from_frequencies手动传字的计算的频率.
dro*_*hun 11
df = pd.read_csv('allCrime.csv', usecols=fields)
text = df['Crime type'].values
wordcloud = WordCloud().generate(str(text))
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
您需要创建一个串联的输入文本。这可以通过函数来完成join。
fields = ['Crime type']
text2 = pd.read_csv('allCrime.csv', usecols=fields)
text3 = ' '.join(text2['Crime Type'])
wordcloud2 = WordCloud().generate(text3)
# Generate plot
plt.imshow(wordcloud2)
plt.axis("off")
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10756 次 |
| 最近记录: |