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

运行效果图:

【准备环境】

  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. 【Python】生成词云

    import matplotlib.pyplot as plt from wordcloud import WordCloud import jieba text_from_file_with_apa ...

  2. python执行sql语句

    dbname = 'db.sqlite3' dbpath = 'D:\\pyweb\\sf\\db.sqlite3' csvpath = pspath #custom thread number tn ...

  3. Jmeter用于接口测试中【接口耦合关联的实现】

    Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,应该如何获取前一次请求的结果值,应用于后一个接口呢,拿一个登录的例子来说明如何获取. 1.打开jmeter, 使用的3.3的版本 ...

  4. C# 泛型约束 xxx<T> Where T:约束(一)

    泛型约束 代码举例 发现我们游戏的代码中,主程写了很多类似这样的代码: public static T CreateObject<T>(out int objectId) where T ...

  5. wc 统计文件的行数,字数,字符

    格式:wc 参数 文件  默认统计文件的行数,字数,字符. -l   统计有多少行数 -c   统计有多少个字节 -m  统计有多少个字符 -w 统计有多少个字数

  6. 【SQL SERVER】语法复习

    一.数据类型  截图来源:http://www.w3school.com.cn/sql/sql_datatypes.asp 二.数据表操作 1.创建数据表 USE [Test] GO /****** ...

  7. Xmind在win10更改用户设置后出现Invalid Configuration Location 错误的解决办法

    错误原因: 因为一开始新建win10用户时,使用的是中文用户名,导致了部分软件比如IDEA读取C盘中配置文件时报错.我用管理员权限修改用户姓名为英文后,IDEA的问题虽然已经解决,但Xmind却报出了 ...

  8. Python接口自动化--SSL 3

    官方文档参考地址: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings 针对SSL Warnings,u ...

  9. win10系统上Python和pycharm的安装及配置

    1.https://www.python.org/downloads/windows/进入官网下载需要的Python安装包(以2.7版本为例) 2.http://www.jetbrains.com/p ...

  10. 流式套接字:基于TCP协议的Socket网络编程(案例3)

    案例:在案例1的基础上将传输的字符串换成具体的对象. 客户端代码: package com.yh.SocketObject; import java.io.IOException; import ja ...