【Python例】利用 python 进行用户画像词云图的生成 — wordcloud
本文主要用于记录,并使用 python 脚本进行用户画像的词云图的生成。
前言
对于词云图来说,是一个用户画像数据可视化的工具,可以较为形象的表示用户的特征信息,可以为一些场景做一个数据的定性观察,下面介绍基于python的wordcloud工具进行词云的数据可视化。
基本文件
- 词云图基本描述文本
- 词云图背景基本图片
- 词语分割库 jieba
- 科学计算库 nump
- 数据可视化分析库 matplotlib
- 词云库 wordcloud
使用以下代码进行安装:
pip install numpy
pip install matplotlib
pip install jieba
pip install wordcloud
Python 脚本源码
#!/usr/bin/env python3# 词云图
# pip install numpy
# pip install matplotlib
# pip install jieba
# pip install wordcloudfrom wordcloud import WordCloud, ImageColorGenerator, STOPWORDS # 词云,颜色生成器,停止词
import jieba # 词语切割
import matplotlib.pyplot as plt # 数据可视化
from PIL import Image # 处理图片
import numpy as np # 科学计算
import os# print(os.getcwd())
current_path = os.path.dirname(__file__) # 设置相对路径
# print(current_path)path_txt = '' # 文本路径
path_bg = '' # 词云背景模板路径
font_path = "/System/Library/Fonts/PingFang.ttc" # 设置字体,可以显示中文
file = open(current_path+'/source/text_word.txt', 'r', encoding='utf-8')
text = file.read() # 读入一个中文txt文件,gbk -> utf-8
words = jieba.lcut(text) # 使用jieba库分词,生成字符串
string = ' '.join(words) # 使用join()方法,将分词生成的字符串以空格进行分割,生成词云时,字符串之间需要为空格
print(len(string)) # 输出词量img = Image.open(current_path+'/source/super_sayaren.png') # 打开图片
img_array = np.array(img) # 将图片装换为数组# 设置停止词
stopwords = set()
content = [line.strip() for line in open(current_path+'/source/stopwords.txt', 'r').readlines()]
stopwords.update(content)
stopwords.add("不行")# 配置词云的背景,图片,字体大小等参数
wc = WordCloud(background_color= (0,0,0,0), # 设置显示内容在什么颜色内width=1000, # 设置图片宽,默认为400height=500, # 设置图片高,默认为200mask=img_array, # 设置词云背景模板font_path=font_path, # 设置字体路径stopwords=stopwords, # 设置需要屏蔽的词,如果为空,则使用内置的STOPWORDSscale=1.0, # 图照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍max_words=1000, # max_words图片上显示的最大词语的个数max_font_size=65, # max_font_size为最大字体的大小min_font_size=4, # min_font_size为最小字体大小,默认为4mode='RGBA', # ,默认值RGB,当参数为“RGBA”并且background_color不为空时,背景为透明relative_scaling=1, # 词频和字体大小的关联性,默认值collocations=True # 是否包括两个词的搭配
)wc.generate_from_text(string) # 根据文本生成词云image_colors = ImageColorGenerator(img_array) # 获取color
# 按照给定的图片颜色布局生成字体颜色,当wordcloud尺寸比image大时,返回默认的颜色
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")plt.axis('off') # 关闭坐标轴
plt.show() # 显示图片
wc.to_file(current_path+'/source/word_cloud_super_sayaren.png') # 保存图片
运行 Python 脚本
在图片文本的目录下,使用终端工具运行 python 脚本
./user_wordcloud.py
结果如下
参考文档
- python-wordcloud生成词云图