微信好友分析

                    微信好友分析

一、用到的库

pillow、pyecharts、itchat、jieba、numpy、pandas、wxpy

 

运行环境:python3

 

二、功能实现

1、登录微信

  首先让程序登录微信,并获取我的好友相关信息。运行登录代码会自动弹出一个二维码页面(如下图所示),用手机扫码同意后,进入微信 并获取微信好友的相关信息。 

代码如下:

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

 

 运行结果如下:

  微信好友分析            微信好友分析

 

 

 

2、将好友信息存为一个文件

代码如下:

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)

def lis2e07(filename,lis):
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = list2excel07
    file_name = filename +.xlsx
    for i in range(0, len(lis)):
        for j in range(0, len(lis[i])):
            sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))
    wb.save(file_name)
print("写入数据成功!")
print(lis2e07(SLFWXin1,lis))

 

 

运行结果如下:

  微信好友分析

 

 

3、将好友所在城市做成词云

代码如下:

#利用 pyecharm 做词云
import pandas as pd
#count = df.city.value_counts() #对 dataframe 进行全频率统计,排除了 nan
from pandas import read_excel
df = read_excel(SLFWXin1.xlsx,sheetname=list2excel07)
#df.tail(10)
city_list = df[city].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_city = pd.value_counts(city_list)#对 list 进行全频率统计
from pyecharts import WordCloud
name = count_city.index.tolist()
value = count_city.tolist()
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(rD:/我的文件/Python作业/wc0.html)

 

 

运行结果如下:

  微信好友分析

4、将好友所在城市标志在地图上

代码如下:

#将这些个好友在全国地图上做分布
province_list = df[province].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_province = pd.value_counts(province_list)#对 list 进行全频率统计
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_visualmap=True,
 visual_text_color=#000,
is_label_show = True) #显示地图上的省份
map.show_config()
map.render(rD:/我的文件/Python作业/map0.html)
#做成的地图保存在 D:/我的文件/Python作业/map0.html

 

 

运行结果如下:

  微信好友分析

 

 

5、将好友的个性签名做成词云

代码如下:

#用pyecharts做个性签名的词云
import pandas as pd
#count = df.city.value_counts() #对 dataframe 进行全频率统计,排除了 nan
from pandas import read_excel
df = read_excel(SLFWXin1.xlsx,sheetname=list2excel07)
#df.tail(10)
city_list = df[signature].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_city = pd.value_counts(city_list)#对 list 进行全频率统计
from pyecharts import WordCloud
name = count_city.index.tolist()
value = count_city.tolist()
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(rD:/我的文件/Python作业/wc00.html)

 

 

运行结果如下:

  

微信好友分析

 

完整代码如下:(先生成SLFWXin1文件,再调用)

# -*- coding: utf-8 -*-
"""
Created on Tue Jun  4 21:43:54 2019

@author: 一枚小可爱--08
"""

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

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)
‘‘‘
def lis2e07(filename,lis):
    import openpyxl
    wb = openpyxl.Workbook()
    sheet = wb.active
    sheet.title = ‘list2excel07‘
    file_name = filename +‘.xlsx‘
    for i in range(0, len(lis)):
        for j in range(0, len(lis[i])):
            sheet.cell(row=i+1, column=j+1, value=str(lis[i][j]))
    wb.save(file_name)
print("写入数据成功!")
print(lis2e07(‘SLFWXin1‘,lis))
‘‘‘
#利用 pyecharm 做词云
import pandas as pd
#count = df.city.value_counts() #对 dataframe 进行全频率统计,排除了 nan
from pandas import read_excel
df = read_excel(SLFWXin1.xlsx,sheetname=list2excel07)
#df.tail(10)
city_list = df[city].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_city = pd.value_counts(city_list)#对 list 进行全频率统计
from pyecharts import WordCloud
name = count_city.index.tolist()
value = count_city.tolist()
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(rD:/我的文件/Python作业/wc0.html)

#用pyecharts做个性签名的词云
import pandas as pd
#count = df.city.value_counts() #对 dataframe 进行全频率统计,排除了 nan
from pandas import read_excel
df = read_excel(SLFWXin1.xlsx,sheetname=list2excel07)
#df.tail(10)
city_list = df[signature].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_city = pd.value_counts(city_list)#对 list 进行全频率统计
from pyecharts import WordCloud
name = count_city.index.tolist()
value = count_city.tolist()
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud.show_config()
wordcloud.render(rD:/我的文件/Python作业/wc00.html)

#将这些个好友在全国地图上做分布
province_list = df[province].fillna(NAN).tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN”替换
count_province = pd.value_counts(province_list)#对 list 进行全频率统计
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_visualmap=True,
 visual_text_color=#000,
is_label_show = True) #显示地图上的省份
map.show_config()
map.render(rD:/我的文件/Python作业/map0.html)
#做成的地图保存在 D:/我的文件/Python作业/map0.html

 

 

dengdengdengdeng完成啦哈哈哈哈~~~~~

 

 

三、微信聊天机器人

 

微信好友分析

上一篇:微信消息接收事件-将微信接收消息转发到指定服务器的servlet处理


下一篇:Django实战开发微信小程序项目教程