微信好友个性签名词云

最近学习了词云wordcloud,然后想练练手,就把主意打到了我的微信好友上。想在即将到来的2019年之前,看看我的微信好友2018年的个性签名是怎样的。

安装itchat

首先,要获取微信好友信息。这里需要用到一个可以调用微信接口的第三方库itchat
itchat的安装:在终端运行pip install itchat

itchat安装

itchat简单示例

在获取好友个性签名制作词云之前,先写个itchat的简单例子获取好友性别并做简单可视化分析。
主要用到的方法:

  • itchat.login():生成二维码给用户扫码登陆
  • itchat.get_friends(update=True):返回更新的完整好友列表,其中第一项为本人微信号
import itchat
# 登陆并获取好友列表
itchat.login()
friends = itchat.get_friends(update=True)

# 打印第一个好友信息,即本人信息
print(friends[0])

从打印的结果可以看出每一个账号信息应该是一个JSON对象。以下为部分信息:

<User: {'MemberList': <ContactList: []>, 'Province': 'Paris',  'Signature': '吾心所愿:一生两人三餐四季', 'Sex': 1}>

上面的结果包含了我要获取的信息。性别Sex,个性签名Signature
先看一下性别分布。

import matplotlib.pyplot as plt

sex = dict()
for friend in friends:
    if friend['Sex'] == 1:# 男
        sex['male'] = sex.get('male', 0) + 1
    elif friend['Sex'] == 2:# 女
        sex['female'] = sex.get('female', 0) + 1
    else:  # 未知
        sex['unknown'] = sex.get('unknown', 0) + 1
# 用柱状图显示性别分布
for key, value in sex.items():
    plt.bar(key, value)
plt.show()

结果如下:

微信好友性别分布

从展示图可以看出我的微信好友,男女比例接近2:1,这对一个理工男来说算是不错的比例了哈哈哈。还有接近25个左右是没有设置性别的,这些应该都是男的哈哈(来自一个理工直男的直觉)。
除了用直方图展示分布外,还可以用饼图来展示。

# 用饼图显示性别分布
explode = [0, 0.1, 0]  # 将第二块凸显出来
plt.pie(list(sex.values()), explode=explode, labels=list(sex.keys()), autopct='%1.1f%%', startangle=90)
plt.axis('equal')
plt.show()

效果如下:


微信好友性别饼图

个性签名词云

接下来就进入主题了。绘制好友签名词云。
这里主要需要两个库:制作词云的wordcloud和进行中文分词的jieba
首先是获取好友个性签名,由于部分好友签名会带有表情,会带有一些特殊字符和emojiclass等。所以需要在获取时进行过滤。这里用到了正则表达式。

# 获取好友签名
sList = []
for friend in friends:
    # 部分签名带有表情,去除span, emoji, class。还有特殊字符
    signature = friend['Signature'].strip().replace('emoji','').replace('class','').replace('span','')
    pattern = re.compile("1f\d+\w*|[<>/=]")
    signature = pattern.sub('', signature)
    sList.append(signature)
# 拼接字符串
text = " ".join(sList)

在获取到经过过滤清洗的好友签名之后,用jieba进行中文分词,然后统计每个词语的出现频率。最后按词频进行排序。

# 使用jieba进行分词
word_list = jieba.cut(text)

# 统计词频
total = {}
for word in word_list:
    total[word] = total.get(word, 0) + 1

# 按词频进行排序,只选取包含两个或两个字以上的词
word_sorted = dict(sorted({k: v for k, v in total.items() if len(k) >= 2}.items(), key=lambda x: x[1], reverse=True))

最后的重头戏就是生成词云了。在这里需要重点说一下font_path的设置,如果没有设置的话,对于英文词云来说没有影响,但是中文词云会乱码,所以需要指定一个中文字体的font_path,我这里是在本地系统找的字体文件,然后放在了代码根目录,所以参数值直接就是文件名,如果不是在代码根目录的,需要完整的路径名。

# 词云属性设置
wordCloud = WordCloud(font_path='simhei.ttf', background_color='white', max_font_size=40, random_state=42, max_words=2000, mask=alice_mask)
# 生成词云
wordCloud.generate_from_frequencies(word_sorted)

alice_mask = np.array(Image.open('timg.jpg'))
image_color = ImageColorGenerator(alice_mask)
plt.imshow(wordCloud.recolor(color_func=image_color))
plt.axis('off')
plt.show()

最后词云图如下:


好友签名词云

从图可以看出我的微信好友的个性签名用的词语比较多的有:自己、努力、人生、成为、自律、未来、幸运等。感觉还是正能量满满的哈哈。


都看到最后了,要不~点个赞?加波关注?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容