题记:本章主要介绍读取excel文件内容及词频直接生成词云的方式。这种方式在实际中更常见
(1024快到了,用《道德经》的词频 响应一下1024 节日)
“词云”--百度百科
词云--就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
业务场景
上一章介绍了统计文本里面的词频生成词云。比如统计西游记、红楼梦里哪些词用的多。但有些场景是提前知道频率的,比如数据库里统计好了,或者excel已经统计好的。
比如:小妖们去富士康打工,要统计他们的绩效。
数据如下:
根据权重生成效果如下:
dict字典
字典类型也是二级考试里面要求掌握的。
字典(dict)是一种无序的、可变的序列,它的元素以“键值对(key-value)”的形式存储。相对地,列表(list)和元组(tuple)都是有序的序列,它们的元素在底层是挨着存放的。
字典类型是 Python 中唯一的映射类型。“映射”是数学中的术语,简单理解,它指的是元素之间相互对应的关系,即通过一个元素,可以唯一找到另一个元素
字典中,习惯将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为:键值对
对应的键值表达: { '键1':值1, ''键2':值2, '键3':值3 }
meng = {'悟空':'72变', '八戒':'36变', '师父':'念经' }print(type(meng))print(meng)
输出效果:
获取对应的键值内容 str = dict[键值]
修改键值内容 dict[键值]= '新内容'
meng = {'悟空':'72变', '八戒':'36变', '师父':'念经' }print(type(meng))print(meng)#获取指定键值的内容print(meng['悟空'])#修改键值内容 meng['悟空']='筋斗云'print(meng['悟空'])
效果如下: 注意 悟空的值变成了 筋斗云
dict字典对象类似java里面的map对象。
key不能重复(字典中每个键值对的键是不可变的,只能使用数字、字符串或者元组,不能使用列表。)
说了这么多,是为了把excel里面的数据转换成dict字典类型,python才可识别处理成词云。
频率 词云
在梳理下思路:
全代码:
from wordcloud import WordCloud, ImageColorGeneratorfrom PIL import Imageimport numpy as npimport matplotlib.pyplot as pltimport jieba.analyseimport pandas as pdimport xlrd#字典初始化 大括号meng = {'悟空':'72变', '八戒':'36变', '师父':'念经' }print(type(meng))print(meng)print(meng['悟空'])meng['悟空']='筋斗云'print(meng['悟空'])#打开excel表,路径 相对路径book = xlrd.open_workbook('pinlv.xlsx')#找到sheet页table = book.sheet_by_name("Sheet2")#获取总行数总列数row_Num = table.nrowscol_Num = table.ncols# s =[]key =table.row_values(0)# 这是第一行数据,作为字典的key值#字典对象初始化 xh = {}if row_Num <= 1: print("没数据")else: j = 1 for i in range(row_Num-1): d ={} values = table.row_values(j) #关键代码 第一列的值作为key 第二列的值作为内容value xh[ values[0]]= values[1] j+=1#输出字典的内容 查看是否正确 print(xh)#加载图片信息maskph = np.array(Image.open('chinamap.png'))#join 函数 用斜杆拼接词组mask =maskph,# text_cut = '/'.join(chiyun)# frequencies 频率 wordcloud = WordCloud( mask =maskph, # 加载图片信息 background_color='white',#背景色 font_path = 'msyh.ttc', #中文字体 max_words =200,# 最大字体数 width=1000,#图片宽 height=860,# 图片高 margin=2 # 边距 ).generate_from_frequencies(xh)# 显示图片 plt.imshow(wordcloud)plt.axis('off')plt.show()
excel文件转成 dict字典类型 输出效果:
对应上面代码 第52行
用中国地图看下效果图:
效果图:
看下《三体》的效果:
推荐一下《三体》的动画版《章北海传》结束本章,
在B站已经有4千多万的播放量了,
都是爱好者协力制作的,没有人力修图,人物都是方形的,但场景设计、节奏把握、对白配音不输同类大制作
( 自然选择,前进4 )
2020-10-22 深圳 晴
看往期;
python可视化-词云
python-Excel操作(基础篇)
机器学习(算法篇)-蚁群算法
算法篇-莱维飞行
号外: