以下的数据下载都是在我的gitee
中的:
主要目的:根据项目名称分析其中词频高的数据来制作词云
import pandas as pd skdfsorttjfilter =pd.read_csv("skdfsorttjfilter.csv",encoding='utf-8-sig')
from PIL import Image #需要下载安装PIL包 import numpy as np from wordcloud import WordCloud, ImageColorGenerator from matplotlib import pyplot as plt import pandas as pd
# 词频分析 sklist=[] skforcut=[] for i in skdfsorttjfilter['项目名称']: sklist.append(i) skls=','.join(sklist)
sklist
skls
通过解霸将句子分成字词:
import jieba # pkuseg words=jieba.lcut(skls) words counts={} # items mytextlist=[] for word in words: if len(word)==1: # 如果词语中只有一个字,比如‘的’,‘你’之类的就将其删除 continue else: counts[word]=counts.get(word,0)+1 mytextlist.append(word.replace(" ","")) cloud_text=','.join(mytextlist) items=list(counts.items()) itemsv2=counts.items()
可以看到后面的数字就是词语出现的次数。
对items进行排序:
items.sort(key=lambda x:x[1],reverse=True) # 排序 for i in range(len(items)): word,count=items[i]
找出词语中带有‘农’字的:
itemsv3={k:v for k,v in itemsv2 if '农' in k} itemsv3ls=list(itemsv3)
开始绘图!:
import os cloud_mask=np.array(Image.open('zgv2.jpg')) # 以中国地图为整体形状 bg_Image=np.array(Image.open("YMG.jpg")) # 调色盘,但由于这张图片整体是蓝色,所以数据大体也是蓝色 st=set(["FR","平方公里","成为","10","我们","可以","这个","这里","一个","就是"]) # 过滤 #生成wordcloud对象 wc = WordCloud(background_color="white", mask=cloud_mask, max_words=300, font_path="叶根友微刚体.TTF", # 字体,在我前面上传的数据当中 min_font_size=5, # 最小字体 max_font_size=200, # 最大字体 width=800, height=1200, stopwords=st) wc.generate(cloud_text) image_colors=ImageColorGenerator(bg_Image) plt.imshow(wc.recolor(color_func=image_colors)) plt.axis("off") plt.show() wc.to_file("skwc01.png") # 将图片进行保存 os.system('skwc01.png') # 会自动跳出来生成的图片
查看图片请点击:》skwc01.png
使用系统自带的调色盘,可以呈现如下效果: import os cloud_mask=np.array(Image.open('zgv2.jpg')) bg_Image=np.array(Image.open("YMG.jpg")) # 调色盘 st=set(["FR","平方公里","成为","10","我们","可以","这个","这里","一个","就是"]) # 过滤 #生成wordcloud对象 wc = WordCloud(background_color="white", mask=cloud_mask, max_words=300, font_path="叶根友微刚体.TTF", min_font_size=5, # 最小字体 max_font_size=200, # 最大字体 width=800, height=1200, stopwords=st) wc.generate(cloud_text) image_colors=ImageColorGenerator(bg_Image) # plt.imshow(wc.recolor(color_func=image_colors)) plt.axis("off") plt.show() wc.to_file("skwc02.png") os.system('skwc02.png')