如何基于含社区出现频次的DataFrame生成不拆分多词社区的词云?
解决多词社区名在词云中被拆分的问题
嘿,你的问题出在把整个DataFrame转成字符串传给WordCloud的generate()方法上——这个方法会默认按空格、标点等拆分所有文本,自然就把"Neos Kosmos"这类多词名称拆成独立单词统计了。
要让多词社区名作为整体出现在词云里,我们需要直接给WordCloud传入**{社区名: 频次}的字典**,用generate_from_frequencies()方法来生成词云,具体步骤如下:
修正后的完整代码
from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt # 假设你的DataFrame是df,先把它转换成{社区名: 频次}的字典 neighbourhood_freq = df.set_index('neighbourhood')['value'].to_dict() # 用generate_from_frequencies替代generate,传入字典 wordcloud = WordCloud( width=3000, height=2000, background_color='white', stopwords=STOPWORDS ).generate_from_frequencies(neighbourhood_freq) fig = plt.figure(figsize=(10, 30), facecolor='k', edgecolor='k') plt.imshow(wordcloud, interpolation='nearest') plt.axis('off') plt.tight_layout(pad=0) plt.show()
关键说明
df.set_index('neighbourhood')['value'].to_dict():这一步把你的DataFrame转换成了符合要求的字典结构,比如你的示例数据会变成:{ 'Plaka': 1216, 'Neos Kosmos': 952, 'Koukaki': 883, 'Pangrati': 683, 'Kolonaki': 650, 'Akadimia Platonos': 555 }generate_from_frequencies():这个方法会直接使用字典里的键值对,把每个键(完整社区名)作为一个独立的“词”,按对应的值(频次)来决定词云里的字号大小,完美解决拆分问题。
这样生成的词云里,"Neos Kosmos"、"Akadimia Platonos"就会作为完整的名称显示,不会被拆分开啦~
内容的提问来源于stack exchange,提问作者TuMama
相关产品推荐
相关产品推荐

