基于词频绘制词云图
(打工人小小记录)根据给定词和词频绘制
1)日常倒库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import re
2)防止乱码
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
3)绘图函数
font_path需要设置字体路径,可能会导致乱码,字体在c盘fonts文件夹。WordCloud()有很多参数,供更改图片样式。
def draw_wordcloud(fre,font,seed):
wc=WordCloud(font_path=font,background_color='white',scale=25)
wc.generate_from_frequencies(fre.to_dict(),max_font_size=None)
wc.recolor(random_state=seed,color_func=None,colormap=None)
plt.figure(figsize=(16,14))
plt.imshow(wc)
plt.axis("off")
plt.show()
file_path='fre.index.name+fre.name+'词云图.png'
wc.to_file(file_path)
4)数据规范
数据来自平台可视化数据,从开发者模式可以将文本数字复制下来,保存为txt文件。ps:WS模式
with open('品牌.txt','r',encoding='utf-8') as f:
content = f.read()
从字符串中提取需要的数据
ex1=r': {showName: "(.*?)",'
p1=re.findall(ex1,content) #名称
ex2=r'\d: "(\d\.\d+)"'
p2=re.findall(ex2,content) #占比
ex3=r'\d: "(\d+,\d+)"'
p3=re.findall(ex3,content) #TGI
ex4=r'\d: "(\d+\.\d)"'
p4=re.findall(ex4,content) #推荐指数
将列表合并为Dataframe格式
df = pd.DataFrame({'品牌':p1,'占比':p2,'TGI指数':p3,'推荐指数':p4})
df=df.loc[1:,] #剔除最大,防干扰
df['TGI指数上']=df['TGI指数'].map(lambda x:x.split(',')[1]).astype(int)
df['TGI指数下']=df['TGI指数'].map(lambda x:x.split(',')[0]).astype(int)
5)绘图
分别绘制根据占比、TGI、推荐指数产生的词云图
df['占比'] =df['占比'].astype(float)
frequencies1=df.set_index('品牌')['占比']
draw_wordcloud(frequencies1,'STKAITI.TTF',1)
df['TGI指数median'] =((df['TGI指数上']+df['TGI指数下'])/2).astype(int)
frequencies2=df.set_index('品牌')['TGI指数median']
draw_wordcloud(frequencies2,'STKAITI.TTF',2)
df['推荐指数'] =df['推荐指数'].astype(float)
frequencies3=df.set_index('品牌')['推荐指数']
draw_wordcloud(frequencies3,'STKAITI.TTF',3)
放一张图
6)小结
经过上半年的窘迫,太久没有用python了,还是要加练习和积累,漫漫python路~