Я пытаюсь создать WordCloud в Python из файла .csv
.
Вот как выглядит мой файл .csv
:
title,views
universe,45678
earth,34366
smtp,4567987
Вот что я сделал для создания WordCloud:
import csv
import matplotlib.pyplot as pPlot
from wordcloud import WordCloud, STOPWORDS
reader = csv.reader(open('C:/Users/Sushma/Downloads/wordcloud.csv', 'r', newline = '\n', encoding = 'utf-8'))
for k, v in reader:
d[k] = float(v)
wordcloud = WordCloud().generate_from_frequencies(d)
Если я печатаю WordCloud, я получаю идентификатор объекта.
Может ли кто-нибудь предложить, как сохранить это как изображение и как просмотреть его на Python?
Во-первых, в вашем коде есть некоторые ошибки:
1. .csv
файл необходимо поместить в list
для чтения:
with open('C:/Users/Sushma/Downloads/wordcloud.csv', 'r', encoding = 'utf8', newline = '\r\n') as file:
reader = csv.reader(file, skipinitialspace = False, delimiter = ',', quoting = csv.QUOTE_NONE)
data = list(reader)
2. После этого необходимо создать dictionary
, который содержит ключ и значение в формате int
, чтобы позже мы могли создать WordCloud:
word_freq = {}
for k, v in data[1:]:
word_freq[k] = int(v)
Теперь вам нужно создать variable
, который будет получать произведение между текстом и его частотой:
text = ' '.join([(k + ' ') * v for k, v in word_freq.items()])
Затем вы создадите WordCloud, который получит эту переменную text
:
wordcloud = WordCloud(width = 1600,
height = 800,
background_color = 'white',
collocations = False,
repeat = True).generate_from_text(text)
plt.figure(figsize=(10,5))
plt.imshow(wordcloud, interpolation = "bilinear")
plt.axis('off')
И теперь вы можете просто сохранить сгенерированный WordCloud:
plt.savefig(f'wordcloud.png',
dpi = 300)
Для построения (визуализации) просто используйте:
plt.show()
Конечный результат:
Если ответ решит вашу проблему, пожалуйста, проголосуйте и отметьте этот ответ как принятый! Спасибо!