【python】【notebook】小细跟口红评论内容——词云图
工具:jupyter notebook
现有excel表格数据,如下图:
现在我们需要绘制词云图——评论内容rateContent数据。
步骤:
先导入pandas包,获取到rateContent评论内容一整列的数据
import pandas as pd
import re
读取数据:
#读取perfectdiary_data的excel表格
df=pd.read_excel('perfectdiary_data.xlsx')
#计算rateContent列的长度,确保数据正确
print(len(df['rateContent']))
#打印该列的值
df['rateContent'].values
结果如下图(代码小错误,rateDate改为rateContent ):
列表转字符串:
content = ''
for i in df['rateContent'].values:
content += i
print(content)
结果如图。可以看出,目前还没有做数据清洗,评论内容中有很多表情包符号,不利于后面计算词云。
数据清洗。
进行文本预处理,去除一些无用的字符,只提取出中文出来;用“/”进行字符串之间的连接,以便后面以此为标记计算词云;由下面的截图可知,“整体评价”、“保湿效果”、“唇膏质地”、“上嘴效果”、“实物颜色”四字是淘宝客户端引导用户评价的词语,并不是我们想要的计算的词云,所以用replace()方法去掉。
(该图片在淘宝手机端获取到)new_data = re.findall('[\u4e00-\u9fa5]+',content, re.S)
new_data = "/".join(new_data).replace('整体评价','').replace('保湿效果','').replace('唇膏质地','').replace('上嘴效果','').replace('实物颜色','')
print(new_data)
结果如下图:
导入绘制词云所需要的包:
import os
import sys
import json
import numpy as np
from PIL import Image
from scipy.misc import imread
from matplotlib import colors
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
单独导入:
from __future__ import division
其中wordcloud如果出现“no mol...”,可以采用:!pip install wordcloud。(其中 “!”为英文输入法下的叹号)
写绘制的函数代码:
def simpleWC1(sep=' ',back='white',freDictpath='data_fre.json',savepath='res.png'):
'''
词云可视化Demo
'''
try:
with open(freDictpath) as f:
data=f.readlines()
data_list=[one.strip().split(sep) for one in data if one]
fre_dict={}
for one_list in data_list:
fre_dict[unicode(one_list[0])]=int(one_list[1])
except:
fre_dict=freDictpath
wc=WordCloud(font_path='font/simhei.ttf',#设置字体 #simhei
background_color=back, #背景颜色
max_words=1300,#词云显示的最大词数
max_font_size=120, #字体最大值
margin=3, #词云图边距
width=1800, #词云图宽度
height=800, #词云图高度
random_state=42)
wc.generate_from_frequencies(fre_dict) #从词频字典生成词云
plt.figure()
plt.imshow(wc)
plt.axis("off")
wc.to_file(savepath)
执行函数:
if __name__ == "__main__":
word_list=new_data.split('/')
fre_dict={}
for one in word_list:
if one in fre_dict:
fre_dict[one]+=1
else:
fre_dict[one]=1
simpleWC1(sep=' ',back='white',freDictpath=fre_dict,savepath='simpleWC1.png')
得到的simpleWC1.png图片如下图:
、完结,撒花花。
(正在加急更新中.....)