利用Python统计微信联系人男女比例以及简单的地区分布
寒暄的话不多说,直接进入主题。
运行效果图:
【准备环境】
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统计微信联系人男女比例以及简单的地区分布的更多相关文章
- 利用python进行微信好友分析
欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...
- 利用python实现微信小程序游戏跳一跳详细教程
利用python实现微信小程序游戏跳一跳详细教程 1 先安装python 然后再安装pip <a href="http://newmiracle.cn/wp-content/uploa ...
- 利用python在微信群中签到、抢沙发(适用于任何账号)
利用python在微信群中签到.抢沙发 注意 程序仅能在电脑上运行,运行时需要保证群界面在最前端且不被移动. 背景 我是一名高中生(2020年),疫情期间,在家上网课,有的老师让我们在班群里签到. 其 ...
- 如何利用python制作微信好友头像照片墙?
这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...
- 利用Python查看微信共同好友
思路 首先通过itchat这个微信个人号接口扫码登录个人微信网页版,获取可以识别好友身份的数据.这里是需要分别登录两人微信的,拿到两人各自的好友信息存到列表中. 这样一来,查共同好友就转化成了查两个列 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- Python+ITchart实现微信中男女比例,城市分布统计并可视化显示
直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...
- 利用python统计代码行
参加光荣之路测试开发班已三月有余,吴总上课也总问“ 咱们的课上了这么多次了大家实践了多少行代码了?”.这里是一个一脸懵逼的表情.该怎么统计呢?一个个文件数当然不可取,能用代码解决的事咱们坚决不动手.最 ...
- Python分析微信好友性别比例和省份城市分布比例
如需转发请注明:小婷儿的博客:https://www.cnblogs.com/xxtalhr/p/10642241.html 一.安装模块 pip install itchat pip install ...
随机推荐
- cuda和gcc版本不兼容
gcc8.1和cuda9.0版本不兼容,比较坑. 下面是各版本cuda支持的gcc: 从CUDA 4.1版本开始,现在支持gcc 4.5.gcc 4.6和4.7不受支持. 从CUDA 5.0版本开始, ...
- 【three.js练习程序】鼠标滚轮缩放
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- python编写脚本
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys import os from subprocess import Popen,PIPE c ...
- Oracle EBS INV创建保留
CREATE or REPPLACE PROCEDURE CreateReservation AS -- Common Declarations l_api_version NUMBER := 1.0 ...
- android打开存储卡(TF卡\SD卡)中的sqlite文件
android的SDK直接支持sqlite3的API. 打开SD卡上面的sqlite数据库,不需要SQLiteOpenHelper的继承类.只需要,SQLiteDatabase中的一些静态方法.如 ...
- SQL server权限管理和备份实例
权限设置: 1.创建用户zhangsan,并赋予zhangsan有dbcreator的服务器权限. 2.使用zhangsan登录,测试能否创建数据库. 3.使用sa用户附加myschool数据库,设置 ...
- October 21st 2017 Week 42nd Saturday
Only I can change my life. No one can do it for me. 只有我可以改变我的命运,没有人可以帮我做. Stop complaining about the ...
- How to display values with in piechart using Jfreechart(values in sector )
I am using Jfreechart to create pie charts. Values are displayed outside pie chart as labels. I want ...
- Swift 并行编程现状和展望 - async/await 和参与者模式
这篇文章不是针对当前版本 Swift 3 的,而是对预计于 2018 年发布的 Swift 5 的一些特性的猜想.如果两年后我还记得这篇文章,可能会回来更新一波.在此之前,请当作一篇对现代语言并行编程 ...
- jenkins发版脚本更新
jenkins 项目名中明确了 是jar tar.gz war包研发需要提供 项目名-地点-环境(研发.测试.生产)-应用项目名称(admin)-包格式(jar\war\gz) deployment ...