好玩Python--分析你的微信好友签名

497 阅读2分钟

最近看到许多词云的数据分析效果,通过词云可以方便地看出哪些词汇出现的频率,于是想着通过Python弄了一个分析自己微信好友的个性签名。 先来看效果:

可以很直观地看出来还是'努力'出现的频率比较多啊,九零后确实不容易啊!

如何实现呢,直接上python代码:

import itchat
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
from scipy.misc import imread  # 这是一个处理图像的函数
sign_list=[]
itchat.auto_login(hotReload=True)
itchat.send(u'Hello,world','filehelper')
friends = itchat.get_friends(update=True)[0:]
print('开始获取微信好友个性签名.....')
for i in friends:
    signature = i["Signature"].strip().replace("span", "").replace("class", "").replace("emoji", "") #过滤掉表情
    #rep = re.compile("< =.+/>")
    rep = re.compile("[^\u4e00-\u9fa5^]")
    nickName=i["NickName"]
    signature = rep.sub("", signature)
    sign_list.append(signature)

text=''.join(sign_list)
wordlist_jieba = jieba.cut(text, cut_all=True)
wl_space_split = ' '.join(wordlist_jieba)

back_color = imread('./mao.jpg')

# 词云
my_wordcloud = WordCloud(
    background_color='white',  # 背景颜色
    max_words=2000,  # 最大词数
    mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略
    max_font_size=100,  # 显示字体的最大值
    font_path='C:/Windows/Fonts/simfang.ttf',  # 指定字体文件 解决显示口字型乱码问题,
    random_state=42,  # 为每个词返回一个PIL颜色
    )

# 用wl_space_split生成词云
my_wordcloud.generate(wl_space_split)

# 基于彩色图像 生成响应的色彩
image_colors = ImageColorGenerator(back_color)
# 显示图片
# plt.imshow(my_wordcloud)
# 关闭坐标轴
# plt.axis('off')
# 绘制词云
plt.figure()
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.axis('off')
# 保存图片
my_wordcloud.to_file('ciyun.png')

代码主要使用了itchat,matplotlib,ImageColorGenerator模块等,这几个模块都需要自己pip install 一下。主要是分为两步骤,第一步登入微信,获取微信好友信息,提炼签名并过滤掉一些非主流签名,例如带有表情,第二步则是利用ImageColorGenerator模块来生成图片。
如果你仔细观察图片,会发现其轮廓像一只猫,怎么实现呢?准备一张猫的背景图片就可以啦

是不是觉得很有趣呢,自己也去实现一个吧,例如分析一下今年两会政府工作报告出现频率高的词汇!