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

本次我们利用python来分析一下我们微信的好友数据

首先安装7个依赖库

  • 1、Pillow

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。

由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3.x,又加入了许多新特性,因此,我们可以直接安装使用Pillow,如果有annaconda,则直接使用即可,如无,须在命令行中安装:

pip install pillow

如果遇到Permission denied安装失败,请加上sudo重试。

  • 2、Pyecharts

是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。

可在命令行通过pip安装:

pip install pyecharts 
  • 3、Itchat

itchat 是一个开源的微信个人号接口,使用 python 调用微信从未如此简单。

可在在命令行通过pip安装:

pip install itchat
  • 4、Jieba

Jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,下面是三种模式的特点。

精确模式:试图将语句最精确的切分,不存在冗余数据,适合做文本分析

全模式:将语句中所有可能是词的词语都切分出来,速度很快,但是存在冗余数据

搜索引擎模式:在精确模式的基础上,对长词再次进行切分

可在在命令行通过pip安装:

pip install jieba
  • 5、Numpy

NumPy 是一个 Python 的第三方库,代表 “Numeric Python”,主要用于数学/科学计算。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。

使用 Numpy 我们可以轻松进行如下等计算:

  • 数组的算数和逻辑运算。
  • 傅立叶变换和用于图形操作的例程。
  • 与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。

可在在命令行通过pip安装:

pip install Numpy
  • 6、Pandas

Pandas 是基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas 提

供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使 Python 成为强大而高效的数据分析环境的重要因素之一。

可在在命令行通过pip安装:

pip install Pandas
  • 7、wxpy

wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展。

可在在命令行通过pip安装:

pip install wxpy
  • 8、安装地图数据包:
pip install echarts-china-provinces-pypkg
pip install echarts-countries-pypkg

在安装成功这几个库后,我们正式开始微信好友分析

步骤如下:

1.登陆微信网页版

from wxpy import *
bot = Bot(cache_path=True)#初始化机器人,选择缓存模式(扫码)登录
friend_all = bot.friends()#获取我的所有微信好友信息

如图,运行后可得到一个二维码,用手机微信扫一扫登陆即可

2.为了获取好友信息中需要的部分,我们对信息需要进行处理。从上面的获取信息全字段来看,我们获取的每位好友的信息都是一个字典,字典里只有‘City‘、‘Province‘、‘Signature‘、
‘NickName‘、‘HeadImgUrl‘、‘Sex‘是我们需要的。下面我们就对这几个 key 进行提取。

lis=[] #创建一个空列表
for a_friend in friend_all:
    NickName = a_friend.raw.get(‘NickName‘,None)
    #Sex = a_friend.raw.get(‘Sex‘,None)
    Sex ={1:"男",2:"女",0:"其它"}.get(a_friend.raw.get(‘Sex‘,None),None)
    City = a_friend.raw.get(‘City‘,None)
    Province = a_friend.raw.get(‘Province‘,None)
    Signature = a_friend.raw.get(‘Signature‘,None)
    HeadImgUrl = a_friend.raw.get(‘HeadImgUrl‘,None)
    HeadImgFlag = a_friend.raw.get(‘HeadImgFlag‘,None)
    list_0=[NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]
    lis.append(list_0)

将其导入excel

def lis2e07(filename,lis):
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = ‘list2excel07‘
    file_name = filename +‘.xlsx‘
    title = []
    title_2 = [NickName,Sex,City,Province,Signature,HeadImgUrl,HeadImgFlag]

    title.append(title_2)
    for i in range(len(lis)):
        for j in range(len(lis[i])):
            sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))
    wb.save(file_name)
    print("写入数据成功")
lis2e07(‘C:\\Users\\moyulin\\Desktop\\aini‘,lis

运行excel可得这样一个列表

接下来我们对好友数据进行简单分析

Friends = bot.friends()
data = Friends.stats_text(total=True, sex=True,top_provinces=30, top_cities=500)
print(data)

运行后,如图

然后将好友所在的城市用词云图显示:

from pandas import read_excel
df = read_excel(‘C:\\Users\\moyulin\\Desktop\\aini.xlsx‘,sheet_name=‘list2excel07‘)
df[‘City‘].count()
df[‘City‘].describe()
from wordcloud import WordCloud
import matplotlib.pyplot as plt
word_list= df[‘City‘].fillna(‘‘).tolist()
new_text = ‘ ‘.join(word_list)
wordcloud = WordCloud(font_path=‘simhei.ttf‘, background_color="black").generate(new_text)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()

得出如下结果

最后生成微信好友在地图上的分布图

import pandas as pd
province_list = df[‘Province‘].fillna(‘‘).tolist()
count_province = pd.value_counts(province_list)
for i in range(len(province_list)):
    province_list[i]+=‘省‘
from pyecharts import Map
value = count_province.tolist()
attr = count_province.index.tolist()
map = Map("分布",width=1200,height=600)
map.add("",attr,value,maptype=‘china‘,is_bisualmap=True,visual_test_color=‘#000‘,is_label_show=True)
map.show_config()
map.render(‘map2.html‘)

运行html文件可得

鼠标点过去即可得到所在区域的人数~

今天的分享到此为止,下次再见啦~

原文地址:https://www.cnblogs.com/moyulin/p/Moyulin_pig4.html

时间: 2024-11-06 18:18:22

我的第一个微信好友数据分析的相关文章

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

背景及研究现状 在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展.数据显示,截止2013年底,中国手机网民超过5亿,占比达81%.伴随着移动终端价格的下降及wifi的广泛铺设,移动网民呈现爆发趋势. 微信已经成为连接线上与线下.虚拟与现实.消费与产业的重要工具,它提高了O2O类营销用户的转化率.过去开发软件,程序员常要考虑不同开发环境的语言.设备的适配性和成本.现在,开发者可以在一个“类操作底层”去开发应用,打破了过去受限的开发环境. 二.研究意义及目的 随着宽带无线接

我的第一个微信好友分析

1.Pillow PIL:Python Imaging Library,已经是 Python 平台事实上的图像处理标准库.PIL功能非常强大,但API却非常简单易用. 如果安装了Anaconda,Pillow就已经可用了.否则,需要在命令行下通过pip安装: pip install pillow 如果遇到Permission denied安装失败,请加上sudo重试. 2.Pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 E

第一个微信小项目

一 微信好友数据分析 (一)要实现对微信好友数据分析这神奇的操作,首先得准备好工具,那就是安装以下几种库数据 安装 wxpy库 : pip install wxpy 安装 PIL库:pip install pillow安装 pyecharts库:pip install pyecharts安装 Itchat库:pip install itchat安装 Jieba库: pip install jieba安装 Pandas库:pip install Pandas安装 Numpy库:pip instal

【Python】第一个微信小项目

一.微信好友数据分析功能介绍 1.爬取好友列表,显示好友昵称.性别和地域和签名, 文件保存为 xlsx 格式2.统计好友的地域分布,并且做成词云和可视化展示在地图上3.获取所有好友的头像,合并成一张大图 二.需要的库 1.Pyecharts:一个用于生成echarts图表的类库,echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒,使用pyechart库可以在python中生成echarts数据图. 2.Itchat:一个开源的微信个人号接口,使用python调用

andriod 实现新浪、QQ空间、微信朋友圈、微信好友分享功能

前言:自己在学习的过程中的一些操作过程,对分享的一些理解.下面就讲解一下: 下载地址:http://download.csdn.net/detail/u014608640/7490357 首先,我们需要去ShareSdk官方网站http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件: 根据我自己在学习的过程中只用到了第一个文件夹的 libs目录的2个项目,这2个是必须要的,是ShareSdk提供的,然后需要将这2个放入到自己做的项目当中去,在Res目录下有一个 S

如何让你的网页链接潇洒地在微信好友和朋友圈中传播

嗨,大家好,我是大花猫! 想必大家都在自己的微信朋友圈看到过别人分享的一些网页链接消息,但是你注意了吗?有些链接的图标是用的微信一张蓝色的默认图片,但是有些链接的图标却有着各自专门的图标(注:公众号的图文消息不在本文讨论行列中.),而且标题也和链接里面网站的标题不一样!(想想前段时间那个风靡朋友圈的贱贱的神经猫吧!)好啦!今天要跟大家分享的就是如何让自己的网页在微信分享朋友圈中拥有一个自己个性的图标以及自定义分享中的描述文字.(开始想着加这个功能是在学习了慕课网的<2048私人定制>以后做了第

Android学习--------实现增删改查数据库操作以及实现类似微信好友对话管理操作

最近的一个实验用到东西挺多,特地总结一下. 要求功能: 1.第一个页面添加歌曲名和歌手,跳到第二个页面列表显示所有记录,使用sqlite数据库 2.对于第二个页面显示的信息可以进行删除和修改操作,并自动刷新 最后我做的效果: 长按列表项弹出单个管理的菜单,像微信好友对话管理一样. 删除时可以直接删除这一条并在列表中直接显示,更新时弹出对话框更新内容提交后在列表中重新显示. 做此例遇到的困难: 1.菜单获取上下文 2.获取对话框中的内容 3.对话框按钮添加监听事件-----注意包不要导错:impo

几千微信好友是这样来的

这几天别人看了我上一篇日志  <几千微信好友是怎么来的> 的以后,经常有人私聊我,问我这篇日志主要仅仅是告诉我方法,还没告诉我细节很多细节没告诉我让我重新写篇日志告诉他们的细节和一些别的方法,下面的部分好友的聊天记录截图, 好吧,既然那么多人找我,我都不好意思不告诉大家了,今天刚去听几位大牛分享的微信分享的课来,有点累  今天就废话少说,直接干货方法. 第一 坚持加QQ群 为什么说坚持加QQ群呢,至少添加上100个群,并且每个群里面必须包括你的两个QQ,为什么是2个QQ呢,因为必须一个配合一个

分享到微信好友或朋友圈

这周末学习了如何将图片,文本,分享到微信好友或者是朋友圈,自己亲手敲了一把.结果一个bug让我很不爽.待会来谈谈bug是什么. 好了,写代码之前必须做这几件事情.在微信开发者网站上注册账号,填写app名称,包名,应用签名.第三个应用签名本以为自己随便写一个,其实不然,需要下载签名生成工具,然后安装到手机上(此为我的愚蠢Bug,后来看微信官网才解决了),还需要下载Android开发工具包,里面有个jar包需要导入到Android Studio中.注意,申请ok后会展示: 下面演示下Demo: 先来