python-从excel数据提取问答字段⽣产词云python - 从excel 数据提取问答字段⽣产词云
准备⼯作:
1.数据表,这⾥需要截取的是数据表ceshi的提问内容这个列的数据
2.字体
windwos环境下可以从 C:\Windows\Fonts 获取
3.⽆背景的图
3.代码
v1.0
from PIL import Image
from RemoveWord.rword import rw as rws
import matplotlib.pyplot as plt
import wordcloud as wc
import numpy as np
import matplotlib.image as mpimg
import wordcloud
import pandas as pd
import jieba
wenjian = ''
object_list = []
# 通过键值对的形式存储词语及其出现的次数
counts = {}
# 从外部引⼊
# remove_words = [u'的', u',',u'和', u'是', u'随着', u'对于', u'对',u'等',u'能',u'都',u'。',u' ',u'、',u'中',u'在',u'了',
# u'通常',u'如果',u'我们',u'需要', u'⽆法', u'怎么',u'连接',u'设置',u'⽂件',u'进不去',u'怎么办',u'问题',
# u'申请',u'公司',u'加⼊',u'请问',u'查看',u'⽂件夹',u'不到',u'修改',u'哥哥',u'错误',u'什么',u'办公',u'哪⾥',u'不了',
# u'查询',u'多少',u'反应',u'哪⼉',u'没有',u'资料',u'御家',u'出现',u'不能',u'⼀直',u'报错',u'技术',
# u'⾃动',u'同时',u'收不到',u'如何','可以',u'使⽤指南',u'默认',u'原始',u'处理',u'这个',u'线条',u'成功',u'不是',u'10'
# ] # ⾃定义去除词库
# 读取⽂件,获取相应列的所有字符合集
df = pd.read_excel("ceshi.xls")
for i in range(df.__len__()):
wenjian += df['提问内容'].values[i]
# 分词
alist = jieba.lcut(wenjian)
# 分词过滤不需要的词
for word in alist: # 循环读出每个分词
if word not in rws: # 如果不在去除词库中
python怎么读取excel文件数据object_list.append(word) # 分词追加到列表
#计算分词的次数
for word in object_list:
if len(word) == 1: # 单个词语不计算在内
continue
else:
counts[word] = (word, 0) + 1 # 遍历所有词语,每出现⼀次其对应的值加 1
items = list(counts.items()) # 将键值对转换成列表
items.sort(key=lambda x: x[1], reverse=True) # 根据词语出现的次数进⾏从⼤到⼩排序
items2 = dict(items)
# 基本使⽤,将⽂字转换为图的形式显⽰
img = mpimg.imread("333.jpg")
c = wordcloud.WordCloud(
# prefer_horizontal=0.5, #词语⽔平⽅向排版出现的频率,默认 0.9 (所以词语垂直⽅向排版出现频率为 0.1 )
scale=4, #默认为1,按照⽐例进⾏放⼤画布,如设置为1.5,则长和宽都是原来画布的1.5倍
background_color='white', #背景颜⾊
# width=400, #⽣成的图⽚宽度
# height=300, #⽣成的图⽚⾼度
# min_font_size=10, #指定词云中字体的最⼩字号,默认4号
# max_font_size=20, #指定词云中字体的最⼤字号,根据⾼度⾃动调节
# font_step=2, #指定词云中字体字号的步进间隔,默认为1
font_path=r'D:\python_project\', #指定字体⽂件的路径,默认None
# max_words=5, #指定词云显⽰的最⼤单词数量,默认200
# stopwords=[], #指定词云的排除词列表,即不显⽰的单词列表
mask=img, #指定词云形状,默认为长⽅形,需要引⽤imread()函数
collocations=1, #bool, default=True 是否包括两个词的搭配
colormap='viridis', #string or matplotlib colormap, default=”viridis” #给每个单词随机分配颜⾊,若指定color_func,则忽略该⽅法
random_state=None #int or None #为每个单词返回⼀个PIL颜⾊
# regexp=None #string or None (optional)使⽤正则表达式分隔输⼊的⽂本
)
# c.generate(items2) #根据⽂本⽣成词云
# c.generate_from_text(text) #根据⽂本⽣成词云
# c.fit_words(frequencies) #根据词频⽣成词云
# c.process_text(text) #将长⽂本分词并去除屏蔽词(此处指英语,中⽂分词还是需要⾃⼰⽤别的库先⾏实现,使⽤上⾯的 fit_words(frequencies) )# c.recolor([random_state, color_func, colormap]) #对现有输出重新着⾊。重新上⾊会⽐重新⽣成整个词云快很多
# c.to_array() #转化为 numpy array
# c.to_file(filename) #输出到⽂件
# 保存为图⽚
<_file("ciyun.png")
# # # 打印显⽰图⽚
# plt.imshow(c)
# plt.axis("off")
# plt.show()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论