小白入门python之数据可视化(词云图)

1.词云的生成需要确认已安装了wordcloud、matplotlib,下载库可以通过cmd或者直接在jupyter notebook上输入指令进行下载,也可以从网站https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud上手动下载,安装包放置在python的scripts文件里,并将自己需要的文本记录在文本文件(txt格式)上,也可以先准备好想要的图片样式;

2.可利用下方类似代码实现python定位问题,os.getcwd() 可以知道现在python在哪里(文件位置需根据自己的情况决定)

import os
os.chdir("C:\\Users\\读书人mn\\Desktop\\123123")

3.了解定位后,可以利用文件路径打开文件时,需要注意添加这一部分  encoding='utf-8',设置编码格式,encoding是编码的意思,在python中,Unicode类型是作为编码的基础类型。

text=open('123.txt','r',encoding='utf-8').read()

4.导入wordcloud matplotlib开始生成初版的词云图。如果想要显示出字体需要定义font并引用字体的路径,设置字体的大小

from wordcloud import WordCloud
import matplotlib.pyplot as plt
font=r'C:\\Windows\\Fonts\\simkai.ttf'
wc=WordCloud(font_path=font,width=800,height=600).generate(text)
plt.imshow(wc)
plt.axis('off')
plt.show()

5.在得到初版的词云图后,我们可以利用jieba库对文本进行分词处理,遍历整个文本并计算词语的数量,利用字典中键值对的对应关系,将词和其数量进行意义对应。

同时,建立另外一个词库,将无效、不需要的词从现有的词库中剔除。最后利用字典中的值进行词语的排序生成新的文本内容。

import jieba
import jieba.posseg as pseg
with open('C:\\Users\\读书人mn\\Desktop\\123123\\123.txt','r',encoding='utf-8')as f:
    renmin=f.read()
    
jieba.load_userdict('C:\\Users\\读书人mn\\Desktop\\123123\\123.txt')
seg_list=jieba.cut(renmin,cut_all=False)

tf={}
for seg in seg_list:
    if seg in tf:
        tf[seg]+=1
    else:
        tf[seg]=1
ci=list(tf.keys())
import os
os.chdir("C:\\Users\\读书人mn\\Desktop\\123123")
with open('234.txt','r',encoding='utf-8') as ft:
    stopword=ft.read()
    
for seg in ci:
    if tf[seg]<5 or len(seg)<2 or seg in stopword or "一" in seg:
        tf.pop(seg)
print(tf)

ci, num, data = list(tf.keys()), list(tf.values()),[]
for i in range(len(tf)):
    data.append((num[i],ci[i])) 
data.sort()
data.reverse()#升序排序后逆序,得到所需的降序排列

tf_sorted={}
print(len(data),data[0],data[0][0],data[0][1])

for i in range(len(data)):  
    tf_sorted[data[i][1]]=data[i][0]

print(tf_sorted)

6.最后提取原图信息并从原图提取色彩

import os
os.chdir("C:\\Users\\读书人mn\\Desktop\\123123")
text=open('123.txt','r',encoding='utf-8').read()
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
mask=np.array(Image.open("C:\\Users\\读书人mn\\Desktop\\123123\\rainbow.png"))

font=r'C:\\Windows\\Fonts\\simkai.ttf'
wc=WordCloud(background_color="white",mask=mask,font_path=font,width=800,height=600).generate_from_frequencies(tf_sorted)

image_colors=ImageColorGenerator(mask)
plt.imshow(wc.recolor(color_func=image_colors))
plt.imshow(wc)
plt.axis('off')
plt.show()

最后的效果展示~

 

心得:

1.文件定位问题:无论使用绝对路径还是相对路径,且路径没有错误的情况下,程序依旧显示“文件不存在”,找不到文件。

解决方法:通过更改文件名称和文件所在位置,文件不要保存得太“深”,同时可以尝试简单的数字123等进行文件命名;

2.自己手动输入程序代码时,最容易犯的错误就是输入错字母,不分大小写。

 

 3.如果文本内容是中文,字体选择时也需要注意选择中文样式,英文显示时依然会出现问题

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值