微信好友数据分析及可视化

背景及研究现状

在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展。数据显示,截止2013年底,中国手机网民超过5亿,占比达81%。伴随着移动终端价格的下降及wifi的广泛铺设,移动网民呈现爆发趋势。

微信已经成为连接线上与线下、虚拟与现实、消费与产业的重要工具,它提高了O2O类营销用户的转化率。过去开发软件,程序员常要考虑不同开发环境的语言、设备的适配性和成本。现在,开发者可以在一个“类操作底层”去开发应用,打破了过去受限的开发环境。

二、研究意义及目的

随着宽带无线接入技术和移动终端技术的飞速发展,人们迫切希望能够随时随地乃至在移动过程中都能方便地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。然而,移动互联网在移动终端、接入网络、应用服务、安全与隐私保护等方面还面临着一系列的挑战。其基础理论与关键技术的研究,对于国家信息产业整体发展具有重要的现实意义。

三、研究内容及数据获取

普通用户使用手机扫描二维码并在手机上确认后,wxpy自动从用户的网页版微信获取好友列表,包括好友昵称、所在地区、个性签名、性别等信息。

python程序设计

#微信好友特征数据分析及可视化

# 1.导包操作

from wxpy import *

import re

import jieba

import numpy as np

from scipy.misc import imread

from wordcloud import WordCloud

import matplotlib.pyplot as plt

from pylab import mpl

import pandas as pd

mpl.rcParams[‘font.sans-serif‘] = [‘SimHei‘]

from pyecharts.charts import Map

from pyecharts import options as opts

# 2.登录操作

bot = Bot()

# 列举登录账号的所有好友

all_friends = bot.friends()

print(all_friends)

# 获取登录账号所关注的所有的公众号

all_maps = bot.mps()

print("所有好友列表", all_maps)

# 获取当前登录账号的群聊列表

all_groups = bot.groups()

print("所有群聊列表", all_groups)

# 根据好友的备注名称搜索好友

#myfriend = bot.friends().search(‘许宽‘)[0]

#print("搜索好友:", myfriend)

# 搜索好友并发送信息

# bot.friends().search(‘许宽‘)[0].send(‘你好呀‘)

# 向文件传输助手发送信息

bot.file_helper.send("hello")

# 3.显示男女比例

sex_dict = {‘male‘: 0, ‘female‘: 0, "no_set": 0}

for friend in all_friends:

print(friend, friend.sex)

if friend.sex == 1:

sex_dict[‘male‘] += 1

elif friend.sex == 2:

sex_dict[‘female‘] += 1

elif friend.sex == 0:

sex_dict[‘no_set‘] += 1

print(sex_dict)

# 4使用matplotlib可视化

slices = [sex_dict["male"], sex_dict["female"], sex_dict["no_set"]]

activities = ["male", "female", "no_set"]

cols = ["r", "m", "g"]

# startangle:开始绘图的角度,逆时针旋转

# shadow:阴影

# %1.1f%%:格式化字符串,整数部分最小1位,小数点后保留一位,%%:转义字符

plt.pie(slices, labels=activities, colors=cols, startangle=90, shadow=True, autopct=‘%1.1f%%‘)

plt.title("微信好友比例图")

plt.savefig("WeChat_sex.png")

# 统计登录账号好友的各省人数

province_dict = {‘河北‘: 0, ‘山东‘: 0, ‘辽宁‘: 0, ‘广西‘: 0, ‘吉林‘: 0,

‘甘肃‘: 0, ‘青海‘: 0, ‘河南‘: 0, ‘江苏‘: 0, ‘湖北‘: 0,

‘湖南‘: 0, ‘江西‘: 0, ‘浙江‘: 0, ‘广东‘: 0, ‘云南‘: 0,

‘福建‘: 0, ‘台湾‘: 0, ‘海南‘: 0, ‘山西‘: 0, ‘四川‘: 0,

‘陕西‘: 0, ‘贵州‘: 0, ‘安徽‘: 0, ‘北京‘: 0, ‘天津‘: 0,

‘重庆‘: 0, ‘上海‘: 0, ‘香港‘: 0, ‘澳门‘: 0, ‘新疆‘: 0,

‘内蒙古‘: 0, ‘西藏‘: 0, ‘黑龙江‘: 0, ‘宁夏‘: 0}

# 统计省份

for friend in all_friends:

# print(friend.province)

if friend.province in province_dict.keys():

province_dict[friend.province] += 1

print("province_dict")

print(province_dict)

# 为了方便数据呈现,生成JSON Array格式数据

data = []

for key, value in province_dict.items():

data.append({‘name‘: key, ‘value‘: value})  # 在data列表末尾添加一个字典元素

print(data)

data_process = pd.DataFrame(data)  # 创建数据框

data_process.columns = [‘city‘, ‘popu‘]

print(data_process)

map = Map().add("微信好友城市分布图", [list(z) for z in zip(data_process[‘city‘], data_process[‘popu‘])],

"china").set_global_opts(

title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"), visualmap_opts=opts.VisualMapOpts(max_=10))

map.render(‘map.html‘)

# with...as...语句结束时,自动调用f.close()

# a表示:在文件末尾追加

def write_txt_file(path, txt):  # 写文件

with open(path, ‘a‘, encoding=‘gbk‘) as f:

return f.write(txt)

# 每次运行程序前,需要删除上一次的文件

# 默认字符编码为GBK

def read_txt_file(path):

with open(path, ‘r‘, encoding=‘gbk‘) as f:

return f.read()

# 统计登录账号好友个性签名

for friend in all_friends:

print(friend, friend.signature)

# 对数据进行清洗,将标点符号等对词频率统计造成影响的因素剔除

# [...]:匹配中括号任意一个字符

# r:防止转义

pattern = re.compile(r‘[一-龥]+‘)  # 将正则字符串编译成正则表达式对象,以后在后期的匹配中复用

# 对某一个签名进行匹配,只匹配中文汉字,结果是列表

filterdata = re.findall(pattern, friend.signature)

print(filterdata)

write_txt_file(‘signatures.txt‘, ‘‘.join(filterdata))

# 读取文件并输出。

content = read_txt_file(‘signatures.txt‘)

print(content)  # 输出内容,仅汉字

# 输出分词结果,结果为列表

segment = jieba.lcut(content)  # 精确模式:不存在冗余数据,适合文本分析

print(segment)

# 生成数据框且有一列元素

word_df = pd.DataFrame({‘segment‘: segment})  # 字典类型

print(word_df)

# index_col=False:第一行不做为索引

# seq=" ":分隔符

# names=[‘stopword‘]:列名

# "stopwords.txt":停止词库

stopwords = pd.read_csv("stopwords.txt", index_col=False, sep=" ", names=[‘stopword‘], encoding=‘gbk‘)

print(stopwords)

# 查看过滤停止词后的数据框

word_df = word_df[~word_df.segment.isin(stopwords.stopword)]

print("过滤后:")

print(word_df)

# 查看分词的词频

# python中的groupby可以看作是基于行或者是基于index的聚合操作

# agg函数提供基于列的聚合操作,一般与groupby连用

# np.size:numpy库中统计一列中不同值的个数

words_stat = word_df.groupby(by=[‘segment‘])[‘segment‘].agg({"计数": np.size})  # 警告信息

print(words_stat)

# 根据计数这一列降序排列

words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False)

print(words_stat)

# 读入背景图片

color_mask = imread("black_mask.png")

# 设置词云属性

wordcloud = WordCloud(font_path="Hiragino.ttf",  # 设置字体

background_color="pink",  # 设置颜色

max_words=100,  # 词云显示的最大词数

mask=color_mask,  # 设置背景图片

max_font_size=100  # 字体最大值

)

# 生成外汇返佣,获取词云最高的前一百词

word_frequence = {x[0]: x[1] for x in words_stat.head(100).values}

print(word_frequence)

# 绘制词云图

wordcloud.generate_from_frequencies(word_frequence)

wordcloud.to_file("wordcloud.png")

# 对图像进行处理

plt.imshow(wordcloud)

plt.axis("off")  # 隐藏坐标轴

plt.show()

原文链接:https://blog.csdn.net/qq_40507857/article/details/103835711

原文地址:https://www.cnblogs.com/benming/p/12155968.html

时间: 2024-08-16 04:23:56

微信好友数据分析及可视化的相关文章

我的第一个微信好友数据分析

本次我们利用python来分析一下我们微信的好友数据 首先安装7个依赖库 1.Pillow PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow,如果有annaconda,则直接使用即可,如无,

利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将其进行可视化,具体的教程如下. 爬取微信好友信息,不得不提及这个itchat库,简直太神奇了,通过它访问微信好友基本信息可谓如鱼得水.下面的代码是获取微信好友的省位信息: 程序运行之后,需要扫描进行授权登录,之后在Pycharm的控制台上会出现如下图的红色提示,这些红色的字体并不是我们通常遇到的Py

利用Python网络爬虫抓取微信好友的签名及其可视化展示

前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化,感兴趣的小伙伴可以点击进去看看详情,内容方面不是很难,即使你是小白,也可以通过代码进行实现抓取.今天,小编继续给大家分享如何利用Python网络爬虫抓取微信好友的签名及其可视化展示,具体的教程如下所示. 1.代码实现还是基于itchat库,关于这个神奇的库,在之前的文章中

练习:微信好友分析

来源:http://www.cnblogs.com/jiaoyu121/p/6944398.html 1.好友性别分布 import itchat itchat.login() #itchat.send(u'你好','filehelper') friends = itchat.get_friends(update=True)[0:] #print len(friends) male = female = other = 0 for i in friends[1:]: sex = i['Sex']

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态--附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化. 今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信的数据

微信好友大揭秘,使用Python抓取朋友圈数据,通过人脸识别全面分析好友,一起看透你的“朋友圈”

微信:一个提供即时通讯服务的应用程序,更是一种生活方式,超过数十亿的使用者,越来越多的人选择使用它来沟通交流. 不知从何时起,我们的生活离不开微信,每天睁开眼的第一件事就是打开微信,关注着朋友圈里好友的动态,而朋友圈中或虚或实的状态更新,似乎都在证明自己的"有趣",寻找那份或有或无的存在感. 有人选择在朋友圈记录生活的点滴,有人选择在朋友圈展示自己的观点.有时我们想去展示自己,有时又想去窥探着别人的生活,而有时又不想别人过多的了解自己的生活,或是屏蔽对方,或是不给对方看朋友圈,又或是不

使用 python 进行微信好友分析

使用 python 进行微信好友分析 1. 使用到的库 ① wxpy:初始化微信机器人 ② openpyxl:保存微信好友数据为Excel表格 ③ pyecharts:生成可视化的地图 ④ wordcloud.matplotlib.jieba:生成词云图 [特别提醒]:pyecharts 库用的是0.5.x版本,而在 pip 中安装的为1.x.x版本,因此需要自行到[官网]中下载. 2. 基本功能 ① 分析微信好友数据 ② 生成词云图 ③ 生成地图展示 3. 代码实现 此处使用类来实现 (1)

微信好友分布分析

一.环境要求 Windows 10:python 3.7: 第三方库 wxpy 0.3.9.8——登录微信openpyxl 2.6.2——可对 excel 表格进行操作 pyecharts 0.5.11——百度的开源可视化库, wordcloud 1.5.0——词云制作库 matplotlib 3.1.0——生成词云图 pandas 0.24.2——读取 excel 表格的数据 pyecharts-snapshot 0.2.0——是 pyecharts 的依赖库之一 echarts-countr

实现微信好友列表

 ListView列表控件 Android中的列表控件非常灵活,可以自定义每一个 列表项,实际上每一个列表项就是一个View,在Android定义 了3个列表控件:ListView.ExpandableListView和Spinner, 其中Spinner就是在Windows中常见的下拉列表框. 列表的显示需要三个元素: 1.View 用来展示数据的view 2.适配器 用来把数据映射到view上的中介. 3.数据  具体的将被映射的字符串,图片,或者基本组件. 实战案例 实现微信好友列表