需要安装itchat、matplotlib、numpy、jieba等依赖。


注意事项:


为了使matplotlib支持中文,需要指定中文字体,本文设置的是ubuntu下的字体文件路径,在使用时需要换成当前环境下的字体路径。


效果如下:

看来还是男性最多

在北京待了这么长时间,当然是北京的好友多了,另外老家是湖北的,所以其次湖北多



废话不多说,代码如下,都是抄袭参考资料里的,请见谅

#coding: utf-8

import itchat
import re
import jieba
import matplotlib as mpl
from matplotlib import pyplot as plt
import numpy as np


zhfont = mpl.font_manager.FontProperties(fname='/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf')


def friend_analysis(friends):
    labels  = ['male', 'female', 'other']
    data   = [0, 0, 0]

    # friends[0] 是自己的信息
    for friend in friends[1:]:
        sex = friend["Sex"]
        if sex == 1:
            data[0] += 1
        elif sex == 2:
            data[1] += 1
        else:
            data[2] += 1

    fig = plt.figure()
    plt.pie(data, labels=labels, autopct="%.2f%%")
    plt.title("friend analysis")
    plt.show()

def province_analysis(friends):
    province_map = dict()

    for friend in friends[1:]:
        province = friend["Province"]
        province_map[province] = province_map.get(province, 0) + 1

    province_list = sorted(province_map.items(), key=lambda item:item[1], reverse=True)[:15]
    [provinces, heights] = zip(*province_list)

    lefts = np.arange(len(provinces)) + 0.5
    fig, ax = plt.subplots()
    bars = ax.bar(lefts, heights, 0.35)
    ax.set_ylabel('count')
    ax.set_title('province analysis')
    ax.set_xticks(lefts)
    ax.set_xticklabels(provinces, fontproperties=zhfont)

    for bar in bars:
        height = bar.get_height()
        ax.text(bar.get_x(), height + 3, '%d' % int(height))

    plt.show()

def signature_analysis(friends):
    signature_list = list()

    for friend in friends[1:]:
        signature = friend['Signature'].strip()
        signature_list.append(signature)
        print(friend['NickName']+"\t"+signature)

if __name__ == "__main__":
    itchat.auto_login()
    friends = itchat.get_friends(update=True)
    friend_analysis(friends)
    province_analysis(friends)
    signature_analysis(friends)


参考:

1. itchat github地址

https://github.com/littlecodersh/ItChat 

2. itchat 作者博客地址

http://itchat.readthedocs.io/zh/latest/

3. 其他参考

https://mp.weixin.qq.com/s/FQXsBLlukmAln1l6EYVftw

http://beanxyz.blog.51cto.com/5570417/1909865

http://blog.sina.com.cn/s/blog_8c5e4fc30102x3eq.html