WordCloud из фрейма данных с частотой python

у меня есть кадр данных, как показано ниже

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)

я пытаюсь создать облако слов с коэффициентом частоты вместо того, чтобы считать достаточно

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

or

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()

Благодарность


person Edward    schedule 19.07.2016    source источник
comment
Это не то, как ответ должен быть обнародован при переполнении стека. Лучше написать свой собственный ответ, а не включать его в свой вопрос. Вы даже можете принять свой собственный ответ, чтобы отметить вопрос как решенный.   -  person MERose    schedule 16.04.2018
comment
@MERose, спасибо, я сделал это   -  person Edward    schedule 16.04.2018
comment
Большой! Вы также должны быть в состоянии принять свой ответ, возможно, после короткого времени ожидания.   -  person MERose    schedule 17.04.2018
comment
@ Эдвард, ты решил свою проблему?   -  person Ricardo M S    schedule 04.06.2018
comment
Эдвард правильный ли мой ответ ниже? это помогло вам?   -  person Ricardo M S    schedule 19.09.2018


Ответы (2)


Для меня это сработало, создав словарь, например:

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 — это DataFrame pandas со столбцами words и counts.

person Ricardo M S    schedule 30.03.2017
comment
Петля сверху является ключом к этому. Спасибо :) - person Chop Labalagun; 19.01.2020

сначала мы получаем список кортежей

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

тогда

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

это все

person Edward    schedule 16.04.2018
comment
Я попробовал это, и я получаю AttributeError: 'list' object has no attribute 'items'. Были ли у вас проблемы с этим? - person zanahorias; 01.12.2018
comment
@zanahorias Преобразуйте кортежи в dict с помощью dict(tuples) и передайте, это сработает. wordcloud = WordCloud().generate_from_frequencies(dict(кортежи)) - person kali prasad deverasetti; 19.10.2019