tslilove

V1

2022/09/05阅读:23主题:山吹

Python之自定义词云可视化

大家好,我是亮哥,今天我给大家介绍一下怎么利用python制作好看的词云图。网络上对于制作词云图的教程和制图网站有很多,那我为什么还要出一期制作词云图呢?第一,记录我的学习轨迹;第二,各大网站的制作不具灵活性,特别是对数据需要处理的时候,不够灵活,所以我需要掌握此方法。

温馨提示:此代码均在Anaconda3完成

本文利用京东某店铺的尿不湿品牌评论数据完成,需要数据的可添加联系亮哥获取

1 读取数据

#导入包
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings('ignore')
#读取数据
data = pd.read_excel('./review.xlsx')
data.head()
#去除重复值
data1 = data.copy()
data2 = data1.drop_duplicates(subset=['content'],inplace=False)
data2.head()

这里因为只显示前三个,所以和看不出差别

评论的预处理这里暂不做处理,有兴趣的小伙伴请根据实际情况处理即可

2 词云可视化

2.1导入制图所需包

#导入包
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
%matplotlib inline
from PIL import Image
from imageio import imread
import jieba.analyse

2.2 封装jieba分词方法

#jieba分词方法
def jieba_deal(data,k):
    content = data['content'].apply(jieba.lcut) #分词
    stopword = [line.strip() for line in open('哈工大停用词表.txt','r',encoding='utf-8').readlines()]  #读取停用词
    content_list = []
    #去除无用的词
    for text in content:
        for word in text:
            if word not in stopword:
                content_list.append(word)
    _content = ' '.join(content_list) #利用join方法用空格把他们拼接起来
    keywords = jieba.analyse.extract_tags(_content,topK=k,withWeight=True,allowPOS=()) #抽取权重最高的100词
    return keywords

2.3 自定义词云的字体颜色

#建立颜色数组,可更改颜色
color_list=['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',
            '#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']

#调用
colormap=colors.ListedColormap(color_list)

2.4 生成词云图

keywords = jieba_deal(data2,100)
keywords_dict = {keyword[0]:int(keyword[1]*10000) for keyword in keywords} #形成字典
graph = np.array(Image.open('baby.png'))  #读取要制作词云图的目标图片
wc = WordCloud(font_path = 'simhei.ttf',      # 设置字体格式,如不设置显示不了中文
              background_color="white",      # 设置背景颜色
              max_font_size=100,     # 设置字体最大值
              mask = graph,
              #random_state=100,  # 设置有多少种随机生成状态,即有多少种配色方案
              colormap=colormap,  # 设置文字颜色
              relative_scaling=.5
              ).fit_words(keywords_dict) #word为字典格式
# image_corlors = ImageColorGenerator(graph)
plt.figure(figsize = [24,15])  #图片大小
plt.imshow(wc)  
plt.axis('off')
plt.show() # 显示图像
#  wc.to_file('./baby_word.png')  #保存图像格式为png的图像

3 总结

在利用python制作词云图的时候,我们要注意from PIL import Image这个引入,有的同学可能会安装失败,尽可在网络资源上找到你的答案,自定义的图一定要为png格式的,不要和预想的不一样。

分类:

后端

标签:

Python

作者介绍

tslilove
V1