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

运行效果图:

【准备环境】

  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. [WPF 容易忽视的细节] —— x:Name与Name属性

    一.前言 WPF使用XAML来对界面进行编写,界面与后台逻辑分离.我们也可以写Style.Trigger来实现一些界面效果, 这些都是通过Name来定位控件的,例如Setter.TargetName. ...

  2. 【three.js练习程序】创建太阳系

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. 如何使用 Swift 开发简单的条形码检测器?

    [编者按]本文作者为 Matthew Maher,主要手把手地介绍如何用 Swift 构建简单的条形码检测器.文章系 OneAPM 工程师编译整理. 超市收银员对货物进行扫码,机场内录入行李或检查乘客 ...

  4. Azure 元数据服务:适用于 Windows VM 的计划事件(预览)

    计划事件是 Azure 元数据服务中的其中一个子服务. 它负责显示有关即将发生的事件(例如,重新启动)的信息,使应用程序可以为其做准备并限制中断. 它可用于所有 Azure 虚拟机类型(包括 PaaS ...

  5. 使用环信开发项目遇到错误提示 configure your build for VectorDrawableCompat

    问题描述:在使用AndroidStudio开发项目时,使用环信重写了聊天界面后,运行时app就崩掉了,查看日志报告,提示报错如下: java.lang.RuntimeException: Unable ...

  6. 加载驱动三种execute

    executeQuery executeUpdate executeQueryBatch

  7. 抓取js动态生成的数据分析案例

    需求:爬取https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html页面中的 ...

  8. python第四十二课——__str__(self)函数

    4.__str__(self): 作用: 创建完对象,直接打印对象名/引用名我们得到的是对象的内存信息(十六进制的地址信息), 这串数据我们程序员并不关心,我们更希望看到的是属性赋值以后的内容(属性赋 ...

  9. python第二十八课——编码小常识

    2.内存和硬盘: 内存:计算机硬件组成部分之一,它是一个容器,用来存储数据:处理数据速度快, 存储数据量小:断电死机数据会丢失,短暂性存储数据 硬盘:计算机硬件组成部分之一,它是一个容器,用来存储数据 ...

  10. Nowcoder 提高组练习赛-R7

    Nowcoder 提高组练习赛-R7 https://www.nowcoder.com/acm/contest/179#question 中间空了两场,因为实在是太难了... 第五场的第二题好像还比较 ...