寒暄的话不多说,直接进入主题。

运行效果图:

【准备环境】

  Python版本:v3.5及其以上

  开发工具:随意,此处使用Pycharm

【依赖包】

  1、itchat (CMD运行:pip install itchat   进行安装)

  2、pycharts (CMD运行:pip install pyecharts   进行安装)

  itchat包是对网页版微信相关接口封装的一个第三方包,目前来说比较好用,一会代码里面会用到相关接口(注释说明);

  pycharts包进行图表的创建,只是用到了其初级功能,大家有时间可以将代码改改,生成更全面直观的图表,代码中使用的柱状图,稍显low,可以升级为全国热点图,这样人员的地区分布就更加直观了。

代码:

 import itchat
from collections import Counter
from pyecharts import Bar dict_sex = {}
count_city = None # itchat微信登录,hotReload表示热登录,如果是True,下一次就不用扫码了(时间不能过长),会在根目录生成一个 itchat.pkl 的文件
itchat.auto_login(hotReload=True)
# itchat 的get_friends接口,获取微信好友列表,返回的列表第一位是你自己,如果想过滤掉自己,改为:itchat.get_friends()[1:]
member_list = itchat.get_friends()[0:] def calc_all_sex():
"""
微信联系人总男女信息
:return:
"""
man = woman = others = 0
city = []
for index, name in enumerate(member_list):
print("\t{}、{}({})".format(index, name["RemarkName"] if name["RemarkName"] is not "" else name["NickName"], name["UserName"]))
sex = name["Sex"]
if sex == 1:
man += 1
elif sex == 2:
woman += 1
else:
others += 1
if name["City"] == "":
city.append("未知城市")
else:
city.append(name["City"]) global count_city
count_city = Counter(city)
total = len(member_list)
man_percent = (float(man) / total * 100)
woman_percent = (float(woman) / total * 100)
others_percent = (float(others) / total * 100) print("\n>>>>>>>>>>>>>微信联系人总男女信息:")
print("男性好友:%.2f%%" % man_percent)
print("女性好友:%.2f%%" % woman_percent)
print("其 它:%.2f%%" % others_percent) class PeopleInfo:
def __init__(self, man_, woman_, _others, total_):
self.man = man_
self.woman = woman_
self.others = _others
self.total = total_ def count(dict_={}):
"""
计算各个地区的男女人数
:param dict_:
:return:
"""
print("\n>>>>>>>>>>>>>各地区男女分布信息:")
for val in dict_:
city_tmp = "" if val == "未知城市" else val
man = woman = others = 0
for member in member_list:
if member["City"] == city_tmp:
sex = member["Sex"]
if sex == 1:
man += 1
elif sex == 2:
woman += 1
else:
others += 1
people_info = PeopleInfo(man, woman, others, dict_[val])
dict_sex[val] = people_info
print("【{}】男性:{},女性:{},其它:{}".format(city_tmp, man, woman, others)) def count_sex_area():
"""
统计联系人性别、地区
:return:
"""
calc_all_sex()
attr = ["{}".format(i) for i in count_city]
count(count_city)
v1 = []
man_count = []
woman_count = []
others_count = []
for i in attr:
v1.append(count_city[i])
man_count.append(dict_sex[i].man)
woman_count.append(dict_sex[i].woman)
others_count.append(dict_sex[i].others) bar = Bar(title="{}的微信联系人分布".format(member_list[0]["NickName"]), subtitle="微信联系人分布情况", width=2024, height=768)
bar.add("地区人数", attr, v1, mark_line=["average"], mark_point=["max", "min"])
bar.add("男性", attr, man_count, mark_line=["average"], mark_point=["max", "min"])
bar.add("女性", attr, woman_count, mark_line=["average"], mark_point=["max", "min"])
bar.render(path="地区统计.html") def get_signatare():
"""
获取微信联系人的签名信息
:return:
"""
for member in member_list:
signatare = str(member["Signature"])
print("\n{}:\n\t>>>>>:{}".format(member["RemarkName"], signatare)) if __name__ == '__main__':
count_sex_area()
# get_signatare()

利用Python统计微信联系人男女比例以及简单的地区分布的更多相关文章

  1. 利用python进行微信好友分析

    欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...

  2. 利用python实现微信小程序游戏跳一跳详细教程

    利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...

  3. 利用python在微信群中签到、抢沙发(适用于任何账号)

    利用python在微信群中签到.抢沙发 注意 程序仅能在电脑上运行,运行时需要保证群界面在最前端且不被移动. 背景 我是一名高中生(2020年),疫情期间,在家上网课,有的老师让我们在班群里签到. 其 ...

  4. 如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  5. 利用Python查看微信共同好友

    思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...

  6. 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

    一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...

  7. Python+ITchart实现微信中男女比例,城市分布统计并可视化显示

    直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...

  8. 利用python统计代码行

    参加光荣之路测试开发班已三月有余,吴总上课也总问“ 咱们的课上了这么多次了大家实践了多少行代码了?”.这里是一个一脸懵逼的表情.该怎么统计呢?一个个文件数当然不可取,能用代码解决的事咱们坚决不动手.最 ...

  9. Python分析微信好友性别比例和省份城市分布比例

    如需转发请注明:小婷儿的博客:https://www.cnblogs.com/xxtalhr/p/10642241.html 一.安装模块 pip install itchat pip install ...

随机推荐

  1. [Ubuntu] 14.04 外接显示器分辨率调整

    最近按照提示更新了一下系统,安装了100多M的更新包,结果系统又读不出外接显示器的信息了,开机显示vga-1:probed a monitor but no|invalid edid,我也不懂. 后来 ...

  2. HTML中meta标签作用及属性总结

    在前端开发中编写html静态网页模板时,head标签内总是会带上许多meta标签,大多数时候并不十分了解这些标签的具体作用,只是别人写了我们也写上吧! 今天小编特意查询了一下关于网页中meta标签的作 ...

  3. LeetCode题解之Binary Tree Postorder Traversal

    1.题目描述 2.问题分析 递归 3.代码 vector<int> postorderTraversal(TreeNode* root) { vector<int> v; po ...

  4. Oracle EBS AP 应付核销到确定一行预付款

    -- purpose: 应付标准发票核销预付款发票中的一行 -- 12.2.6 环境 -- author:jenrry create_date: 2017-06-08 declare l_error_ ...

  5. Safari中的Date

    在js中处理Date时,发现Safari和其他浏览器的支持方式不一致 1.例如:2017-01-01 12:00:00 在其他浏览器中,使用这个格式的字符串进行new Date操作没有问题,但是在Sa ...

  6. UNIX高级环境编程(13)信号 - 概念、signal函数、可重入函数

    信号就是软中断. 信号提供了异步处理事件的一种方式.例如,用户在终端按下结束进程键,使一个进程提前终止.   1 信号的概念 每一个信号都有一个名字,它们的名字都以SIG打头.例如,每当进程调用了ab ...

  7. [Python] 启动 uiautomatorviewer2之后,连接成功后重新 reload画面时提示 ('Connection aborted.', error(10054, ''))

    [问题] 出现该问题不管是重启手机还是启动手机里面 uiautomator的服务,都无济于事,只有通过下面方法进行重新初使化方能解决问题 [解决方法] 在命令窗口执行如下命令 python -m ui ...

  8. 晚上打开eclipse时碰到这个问题 :Workspace in use or cannot be created, choose a different one.

    晚上打开eclipse时碰到这个问题 :Workspace in use or cannot be created, choose a different one. 网上看到这方面的解决方式: 原因: ...

  9. Apache服务器的安装与配置

    文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...

  10. post-message-stream的学习-metamask

    kumavis/post-message-stream post-message-stream Sets up a duplex object stream over window.postMessa ...