第二天
昨天我们学了第一个和微信相关的内容,咱们今天就来看看今天咱们学习的一个微信好友分布,这个好友分布是我在写出了微信好友比例之后写的
微信好友分布介绍
我为什么会做这个,是因为我比较喜欢旅游,我这个人旅游不喜欢抱团,太约束了在加上我不定时的会出差,就想把我走过的地方小吃都尝一遍,要吃当地的名吃就要咨询当地土著我就直接写了一个程序,快速把每个城市的好友列出来,然后拍张照片咨询的时候直接问这写好友就行了.省去了想那个好友是哪的.我需要的功能实现了就稍微添加了几行代码当成一个完成的小项目分享出去了,我们来看看一个完整的好友分布的效果图吧.
这是我微信好友的分布情况,我带着大家先把这个小项目写一下
项目准备工作
pip3 install echarts-countries-pypkg
pip3 install echarts-china-provinces-pypkg
pip3 install echarts-china-cities-pypkg
pip3 install echarts-china-counties-pypkg
pip3 install echarts-china-misc-pypkg
安装我们需要的地图模块
都安装成功后,我们按照昨天写的微信好友比例的小项目,推测一下今天这个好友分布要做的事都有哪些?咱们就先分析一下昨天的好友比例都有哪些
- 登录微信
- 获取所有好友
- 统计好友的性别
- 生成饼状图
- 通过浏览器打开我们生成的页面
那好友分布要做的有哪些呢?
- 登陆微信
- 获取所有好友
- 统计好友的城市
- 生成地图
- 通过浏览器打开我们生成的页面
我们就围绕着这5步来实现
第一步
from wxpy import *
from pyecharts import Map
import webbrowser
bot = Bot()
生成二维码登陆微信
第二步
friends = bot.friends()
# 获取微信好友
第三步
area_dic = {}
for friend in friends:
if friend.province not in area_dic:
area_dic[friend.province]=1
else:
area_dic[friend.province]+=1
第四步
attr = area_dic.keys()
value = area_dic.values()
map = Map("好朋友们的地域分布", width=1200, height=600)
map.add(
"好友地域分布",
attr,
value,
maptype=\'china\',
is_visualmap=True,
)
map.render(\'area.html\')
第五步
webbrowser.open("area.html")
我们把我们分析都写完了,现在来测试一下你们的微信好友都遍布在全国各地的那个部分
大家都测试完了后,咱们来看看一看今天的代码和昨天代码中不一样的部分是什么意思
知识点讲解
area_dic = {} #这是定义一个字典
什么是字典?为什么用字典?
字典是一种键值数据也是用来存储数据的,它存储的数据键只能有一个,一个键对应一个值,键是唯一的我们可以测试一下
我们就可以利用字典键的特性来统计好友的城市,就类似于有一个本,这本只记录北京的好友,是北京的就在这个本上加一个数
for friend in friends:
if friend.province not in area_dic:
area_dic[friend.province]=1
else:
area_dic[friend.province]+=1
获取所有的好友后循环好友的列表拿出每一个好友,获取每个好友的城市添加到字典中,
这里出现一个not in是不存在的意思我们来试一试这个not in
dic = {\'meet\':180,\'yaya\':160}
if \'meet\' in dic:
print(\'在字典中\') #能够打印出来就说明键在字典中
if 180 in dic:
print(\'在字典中\') #不能够打印出来就说明判断的不是值是键
if \'baoyuan\' not in dic:
print(\'不在字典中\') #能够打印就说明baoyuan不是字典的键
这个在和不在我们知道后,继续向下看
dic[\'金角大王\'] = \'银角大王\'
这样是在干啥??
print(dic)
dic[\'金角大王\'] = \'银角大王\'
print(dic) #再次看的时候发现多了一组 这是字典的添加
在向下看发现有个else,这是什么东西还和if同级
if 3>2:
print(\'是正确的\')
else:
print(\'不正确\')
if和else是二选一只能走一个,if走了就不走else了,else走了就不走if了
area_dic[friend.province] += 1
这是在干嘛,我们一步步的分析,先看看area_dic[friend.province]是在干嘛
print(dic[\'meet\']) # 查看到的是meet对应的180
dic[\'meet\'] += 1
print(dic[\'meet\']) #结果就是181,在180的基础上加了一个1
area_dic[friend.province] += 1是通过好友的城市去字典中取值然后在将值加1然后重放进去
attr = area_dic.keys()
value = area_dic.values()
这两个是因为我们要制成地图的时候需要两个列表数据,就像咱们昨天写的男朋友那个
map = Map("好朋友们的地域分布", width=1200, height=600)
# 生成一个地图模板,地图的名字是好朋友们的地域分布,宽度是1200 高是600
map.add(
"好友地域分布",
attr,
value,
maptype=\'china\', #选择中国
is_visualmap=True, #地图带颜色
)
# 向地图模板添加数据
map.render(\'area.html\')
# 生成地图页面
webbrowser.open("area.html")
# 通过浏览器打开地图