用着短短的30行代码,带你一起去看朋友们的人生态度!
微信是现在人们生活中不可或缺的一部分,通过微信的朋友圈,你能看到朋友们的生活动态,能看到他们激励自己或朋友的签名,你能看许许多多的正能量。
今天就用 Python 把你微信朋友的签名收集起来做成词云。从签名大致能看出一个人的人生态度,今天就来看看你的微信朋友态度。
项目环境
语言环境:Python 3.6
工具:Pycharm
如果大家在学习Python的路上,或者打算学习Python需要学习资料,可以加群571799375,群里学习资料免费赠送给大家!
导包
itchat:用来收集微信相关信息。
jieba:是一个强大的分词库,完美支持中文分词。
matplotlib:Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
wordcloud:Python 中的一个小词云生成器,支持 Python 2.7、3.4、3.5、3.6、3.7版本。
importitchatimportreimportjiebaimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudfromwordcloudimportImageColorGeneratorimportnumpyasnpimportPIL.ImageasImage
获取签名信息
用 itchat 库登录微信后用 get_friends 方法获取微信朋友全部信息,信息包括:昵称、备注名、性别、地区、个性签名等等。
之前分享的一篇文章讲的是把微信朋友进行性别统计做成柱形图,只需把需要的信息从全部信息中剥离出来。个性签名用的是 Signature 字段,剥离出来后,有很多我们不需要的字符,比如表情标签、空格、无用字符等。处理掉无用的字符生成我们需要的签名信息。
signlist = []itchat.auto_login()#登录微信friends = itchat.get_friends(update=True)[0:]foriinfriends: signature = i['Signature'].strip().replace('span','').replace('class','').replace('emoji','').replace('\n','').replace('\"','')#去除无用字符rep = re.compile("1f\d+\w*|[<>/=]") signature = rep.sub('',signature) signlist.append(signature)text="".join(signlist)
分词
我们对上面处理后的签名信息用 jieba 库进行分词,把一句话尽可能多的拆分成若干中文词或者词语。
#分词cut = jieba.cut(text,cut_all=True)word =",".join(cut)print(word)
比如我的签名是「努力成为最好的自己」,拆分后:「努力,成为,最好,的,自己」。
绘制词云
把上面所有的中文分词进行处理,做成词云,自选一张词云图片,可以选一张背景为纯色的图片,这样的词云就会显示为图片中的轮廓。定义词云的各种属性,包括背景颜色、最大单词数、画布图片、最大字体数、字体路径、画布比例等属性。其中字体路径是电脑自带的,我的是在 C:\Windows\Font 目录下,里面有常见的字体,你的词云是中文的话就选择任意一类中文字体就好。
然后用 smatplotlib 库把图的颜色、分词内容写人并显示出来。
coloring= np.array(Image.open("F:\\photo.jpg"))# 电脑中自定义词云的图片my_wordcloud= WordCloud(background_color="white",max_words=2000,mask=coloring,max_font_size=70,random_state=48,font_path='./font/msyh.ttf',scale=2).generate(word)# 定义词云背景图颜色、尺寸、字体大小、电脑中字体选择,random_state 为每个单词返回一个PIL颜色,字体路径,画布比例image_colors= ImageColorGenerator(coloring)plt.imshow(my_wordcloud.recolor(color_func=image_colors))# 绘图颜色plt.imshow(my_wordcloud)# 绘图内容plt.axis("off")plt.show()# 显示图片
最后,需要的话你也可以把词云图保存下来。保存到你的 project 的当前目录。
d = path.dirname(__file__)# project 当前目录my_wordcloud.to_file(path.join(d,'cloud.png'))
运行结果
这样就完成了微信朋友的签名的词云,看来我的朋友还都蛮正能量的。赶紧自己动手试试,发到朋友圈装装 B,快活一下,需要源码的加群571799375自取喔!
本文来自网络,如有侵权,请联系小编删除!