【问题标题】:WordCloud from data frame with frequency python来自具有频率python的数据帧的WordCloud
【发布时间】:2020-01-17 19:52:43
【问题描述】:

我有一个如下的数据框

Int64Index: 14830 entries, 25791 to 10668
Data columns (total 2 columns):
word    14830 non-null object
coef    14830 non-null float64
dtypes: float64(1), object(1)

我尝试用 coef 作为频率来制作词云,而不是计数 充足

text = df['word']
WordCloud.generate_from_text(text)
TypeError: generate_from_text() missing 1 required positional argument: 'text'

text = np.array(df['word'])
WordCloud.generate_from_text(text)
TypeError: generate_from_text() missing 1 required positional argument: 'text'

如何改进此代码并制作像这样的词云

from wordcloud import WordCloud
wordcloud = WordCloud( ranks_only= frequency).generate(text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

谢谢

【问题讨论】:

  • 这不是在堆栈溢出时公开答案的方式。最好自己写一个答案,而不是将其作为问题的一部分。您甚至可以接受自己的答案,将问题标记为已解决。
  • @MERosethanx 我已经完成了
  • 太棒了!您也应该能够接受您的回答,可能需要等待很短的时间。
  • @Edward,你的问题解决了吗?
  • Edward 下面我的回答正确吗?对你有帮助吗?

标签: python word-cloud


【解决方案1】:

对我来说,它可以像这样创建字典:

d = {}
for a, x in bag.values:
    d[a] = x

import matplotlib.pyplot as plt
from wordcloud import WordCloud

wordcloud = WordCloud()
wordcloud.generate_from_frequencies(frequencies=d)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

bag 是一个 pandas DataFrame,其中包含 wordscounts

【讨论】:

  • 顶部的循环是关键。谢谢:)
【解决方案2】:

首先我们得到元组列表

tuples = [tuple(x) for x in df.values]

然后

wordcloud = WordCloud().generate_from_frequencies(dict(tuples))

就是这样

【讨论】:

  • 我试过了,我收到了AttributeError: 'list' object has no attribute 'items'。您对此有什么问题吗?
  • @zanahorias 使用 dict(tuples) 将元组转换为 dict 并传递它将起作用。 """ wordcloud = WordCloud().generate_from_frequencies(dict(tuples))
猜你喜欢
  • 2014-05-25
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-23
相关资源
最近更新 更多