我正在嘗試使用 Pandas 列中單詞的頻率創建一個 wordcloud。我有一個像這樣的資料框:
PageNumber Top_words_only
1 people trees like instagram ...
2 people yellow like flickrioapp people level water...
...
78 teatree instagram water leith circuits...
我已經計算了top_words_only列中單詞的頻率并將其放入一個元組中,以便 wordcloud 可以將資料處理為如下所示的可視化:
tuples = tuple([tuple(x) for x in df.top_words_only.str.split(expand=True).stack().value_counts().reset_index().values])
print(tuples)
<OUT>
(('instagram', 3), ('plant', 3), ('shadow', 3), ('rise', 3), .... ('hibs', 1), ('bud', 1), ('insect', 1),
('warriston', 1), ('garage', 1))
wordcloud = WordCloud()
wordcloud.generate_from_frequencies(tuples)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
但是,它出現了一個屬性錯誤說:
AttributeError: 'tuple' object has no attribute 'items'
有誰知道我的代碼有什么問題?
uj5u.com熱心網友回復:
使用字典:
d = dict([tuple(x) for x in df.Top_words_only.str.split(expand=True).stack().value_counts().reset_index().values])
from wordcloud import WordCloud
wordcloud = WordCloud()
wordcloud.generate_from_frequencies(d)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
輸出:

生成字典的替代方法:
from collections import Counter
d = Counter(w for x in df['Top_words_only'] for w in x.split())
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/479701.html
