词云
读取文本或表格
- 表格:读取表格–>统计频率–>词云绘制
- 文本:读取文本–>分词整理成空格相隔的字符串/统计分词频率–>词云绘制
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
from wordcloud import WordCloud
import jieba
#
1.频率绘图
def getExcelData(path_url):
"""读取表格数据,统计为字典"""
data = pd.read_csv(path_url)
result = {}
for x in data["职位名称"]:
if x in result.keys():
result[x] += 1
else:
result[x] = 1
return result
def makeWordCloud(txt):
"""绘制词云"""
import PIL.Image as image
mask = np.array(image.open(r"C:\Users\dell\Desktop\ting.jpg"))
## 这个你背景想什么形状就网上下个什么形状的图片,C:\Users\dellDesktop\ting.jpg 是图片路径
## 生成词云图,WordCloud默认不支持中文,需已下载好的中文字库
wc = WordCloud(background_color="white",# 设置背景色
max_words=100,
mask=mask,
repeat=True,
width=1000,
height=1000,
# 最大字体、最小字体
max_font_size=50,
min_font_size=10,
scale=4,
# 定义字体,一般在电脑的C:\Windows\Fonts\路径下
font_path="C:\Windows\Fonts\STXINGKA.TTF")
wc.generate_from_frequencies(txt)
wc.to_file('cy.png')
plt.axis("off") ## 关闭坐标系
plt.imshow(wc, interpolation="bilinear") ## 显示图像(图片方式)
plt.show()
makeWordCloud(getExcelData(r"E:\daima\pythonexpert\algorithm\aa.csv"))
2 字符串绘图
text = open(r"E:\daima\pythonexpert\algorithm\aa.txt", "r",encoding='utf-8').read()
cut_text = jieba.cut(text)
# 必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
result = " ".join(cut_text)
print(result)
wc = WordCloud(
# 设置字体,不指定就会出现乱码
background_color='white',
width=1000,
height=1000,
mode='RGBA',
colormap='pink',
font_path = "C:\Windows\Fonts\STXINGKA.TTF")
wc.generate(result)
wc.to_file(r"wordcloud.png")
plt.imshow(wc)
plt.axis("off")
plt.show()