词云编写
先导入数据,之前爬取的全国疫情数据表包含各省确诊、死亡、治愈人数。导入数据之后可以打印查看是否成功。
import openpyxl #导入模块,方便读取xlsx
from wordcloud import WordCloud
#读取数据
wb = openpyxl.load_workbook('data.xlsx')
#获取工作表
ws = wb['data']
for row in ws.values: #对名为“data”的工作表进行遍历
print(row)
打印成功,数据以元组形式打印出来。但是我只想要地区和对应数据,第一行是多余的,可以通过代码来去除第一行。这里将打印语句删除,创建一个空字典
import openpyxl #导入模块,方便读取xlsx
from wordcloud import WordCloud
#读取数据
wb = openpyxl.load_workbook('data.xlsx')
#获取工作表
ws = wb['data']
frequency = {} #创建空字典
for row in ws.values: #对名为“data”的工作表进行遍历
if row[0] == 'province': #元组第一个是省份
pass #pass,不做处理
else:
frequency[row[0]] = row[1] #元组下标为1的值,是我创建字典的第一项(下标0)
print(frequency) #打印测试
打印成功,得到我们想要的数据,
进入c盘,winds下的Fonts文件夹下选择自己喜欢的字体,右键然后点击“属性”,复制文件名及路径,这里我选的是华文楷体。
最后保存,运行,多出一个wordcloud图片,点击即可获得基于全国确诊病例的词云图。
完整代码:
import openpyxl #导入模块,方便读取xlsx
from wordcloud import WordCloud
#读取数据
wb = openpyxl.load_workbook('data.xlsx')
#获取工作表
ws = wb['data']
frequency = {} #创建空字典
for row in ws.values: #对名为“data”的工作表进行遍历
#print(row) #数据以元组形式打印出来。但是我只想要地区和对应数据,第一行是多余的
if row[0] == 'province': #元组第一个是省份
pass #pass,不做处理
else:
frequency[row[0]] = row[1] #元组下标为1的值,是我创建字典的第一项(下标0)
#print(frequency) #打印测试
#实例化wordcloud这个类,并且赋值给wordcloud,
#括号里是我想要的参数,因为词云都是中文,所以必须传入字体,否则无法正常输出
wordcloud= WordCloud(font_path="C:/Windows/Fonts/STKAITI.TTF", #指定字体
background_color="black", #指定背景色
width=1920,height=1080) #词云宽高
#根据表格确诊病例数据生成词云
wordcloud.generate_from_frequencies(frequency)
#保存词云
wordcloud.to_file('wordcloud.png')