ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第一个微信小项目

2019-06-09 17:38:51  阅读:176  来源: 互联网

标签:city 第一个 项目 微信 get list raw import friend


微信,已经成为人们必不可少的社交工具。每个人的微信里都有形形色色的人,你了解他们吗?他们又来自哪呢?

今天我们就来编写一个关于好友分析的代码

下载依赖库

在此之前,我们需要下载七个库:Pillow、Pyecharts、Itchat、Jieba、Numpy、Pandas、wxpy

打开Anaconda Prompt,输入如下代码,分别安装不同库:(安装结果就不展示)

安装 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 install Numpy

安装地图数据包:pip install echarts-china-provinces-pypkgpip install echarts-countries-pypkg

运行

1.登陆微信

输入此代码,会自动弹出二维码

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

手机同意,便可获取微信好友的相关信息(登陆成功如图)

2.获取信息

输入:

print(friend_all[0].raw) #friend_all[0]是我的微信昵称,.raw 则是获取我的全部信息 

得到关于我的信息(如图)

如何获取好友信息,并做成表格,输入代码:

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("写入数据成功!")
#转换为表格文件
lis2e07('pyq',lis)

结果:

3.数据分析

有这么多好友,想清楚知道自己的好友分布、性别占比等数据,现在输入如下代码,立刻明了:

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('pyq.xlsx',sheet_name='list2excel07')
df.tail(5)
df.city.count()
df.city.describe() 

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame
word_list= df['city'].fillna('0').tolist()#将 dataframe 的列转化为 list,其中的 nan 用“0”替换
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()

滴~结果:

诶,可以做一个词云图哦~输入代码:

#利用 pyecharm 做词云 
import pandas as pd
#count = df.city.value_counts()
#对 dataframe 进行全频率统计,排除了 nan 
city_list = df['city'].fillna('NAN').tolist()#将 dataframe 的列转化为 list,其中的 nan 用“NAN” 替换 
count_city = pd.value_counts(city_list)#对 list 进行全频率统计 
 
import matplotlib.pyplot as plt
from pandas import DataFrame
from wordcloud 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(r'c:\Users\HJY\.spyder-py3\wc1.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(r'c:\Users\HJY\.spyder-py3\me\map1.html') 

滴滴

The end......(下次邀请微信小机器人,嘿嘿嘿)

标签:city,第一个,项目,微信,get,list,raw,import,friend
来源: https://www.cnblogs.com/hjy567jiayouya/p/10994121.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有