前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用 Python 制作微信好友个性签名词云图

用 Python 制作微信好友个性签名词云图

作者头像
伪君子
发布2018-04-04 15:30:50
1.5K0
发布2018-04-04 15:30:50
举报
文章被收录于专栏:伪君子的梦呓伪君子的梦呓

0.前言

上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来。

1.环境说明

Win10 系统下 Python3,编译器是 Pycharm,需要安装 itchat、matplotlib、pandas、jieba、wordcloud、numpy、pillow 这几个包

介绍 Pycharm 安装第三方包的方法。

由于某些包不能直接用 Pycharm 安装,所以这里说一下安装的方法。

安装wordcloud

worcloud需要numpy> = 1.5.1,pillow和matplotlib,所以要先安装numpy,pillow和matplotlib。

在下面这个链接找到合适的whl文件,http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

如果是电脑是64位,python是3.6就下载下面这个。

下载回来就放到Python的目录下,就比如我是把 Python 安装在E:\Python36这个目录,就把下载回来的 wordcloud-1.3.3-cp36-cp36m-win_amd64.whl 放在这。

然后按win键+R ,输入cmd,回车

然后cd 到 Python 目录那

接下来就是安装了,pip install wordcloud-1.3.3-cp36-cp36m-win_amd64.whl

除了这个以外,某一个包需要访问外国网站才能安装,具体是哪个就不记得了,好像是 pandas。

2.相关代码

先把需要的东西导入,安装这些包可不简单

代码语言:javascript
复制
import itchat
import matplotlib.pyplot as plt
import re, jieba
import pandas as pd
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image

登录微信

代码语言:javascript
复制
itchat.auto_login(hotReload=True)
friends = itchat.get_friends(update=True)

获取数据

代码语言:javascript
复制
data = pd.DataFrame()  # 提出好友的昵称、性别、省份、城市、个性签名,生成一个数据框
columns=['NickName', 'Sex', 'Province', 'City', 'Signature']
for col in columns:
    val = []
    for i in friends[1:]:  # friends[0]是自己的信息,因此我们要从[1:]开始
        val.append(i[col])
    data[col] = pd.Series(val)

把个性签名中的 emoji 和别的东西过滤一下

代码语言:javascript
复制
siglist = []
for i in data['Signature']:
    signature = i.strip().replace('emoji','').replace('span','').replace('class','')
    rep = re.compile('1f\d+\w*|[<>/=]')  # 具体含义另行查看
    signature = rep.sub('', signature)
    siglist.append(signature)
text = ''.join(siglist)

使用结巴分词进行分词,用 matplotlib 把图画出来

代码语言:javascript
复制
word_list = jieba.cut(text, cut_all=True)
word_space_split = ' '.join(word_list)
coloring = np.array(Image.open("E:/Python/wechat/toux.jpg"))  #这个路径可以改,最好还是不要改
my_wordcloud = WordCloud(background_color="white", max_words=2000,
                         mask=coloring, max_font_size=100, random_state=42, scale=2,
                         font_path="C:/Windows/Fonts/simkai.ttf").generate(word_space_split)
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

3.运行

先说明一下,如果能看懂代码,知道该怎么把必要的文件弄好,那就不怎么需要看下面这个。

如果看得不太理解,运行前一定要在 E 盘建立一个文件夹。路径是 E:\Python\Wechat ,然后在文件夹中放入一张命名为 toux.jpg 的照片,具体图片看个人喜好。

最好就是下图这样的照片

这样生成的词云就会很好看

意思就是图片要有白色的背景,人物颜色较鲜艳,人物突出(图片分辨率要高)

把代码安装顺序复制到 Pycharm,然后鼠标右键,选择 Run,扫描弹出来的二维码,登录微信网页版,确认后等待一下,看到下图就说明代码运行得很完美,成功运行,没有报错

然后稍微等一下就可以看到词云图了。

4.相关说明

参考链接:http://blog.csdn.net/Lee20093905/article/details/79052795

wordcloud的项目主页兼说明:https://github.com/amueller/word_cloud

wordcloud的whl文件:https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

itchat 的项目主页:https://github.com/littlecodersh/itchat

itchat 的说明文档:http://itchat.readthedocs.io/zh/latest/

pandas的项目主页:https://github.com/pandas-dev/pandas

pandas 的说明文档:http://pandas.pydata.org/pandas-docs/stable/

matplotlib的主页:https://matplotlib.org/

题图:Photo by Lauren Peng on Unsplash

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萧北月 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.前言
  • 1.环境说明
  • 2.相关代码
  • 3.运行
  • 4.相关说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档