You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于含社区出现频次的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:42:27