文章目录
Question
模块与包练习题: 微信好友数据分析与展示
-
已知 itchat 可以获取好友的信息, 此处统计好友的省份分布;
-
获取分布好友最多的 5 个省份;
-
将省份分布的数量基于 pyecharts 模块以条形图的方式展示;
附加需求: 将每个省份的好友备注名(RemarkName)存入依次存入对应省份的文
件中;
e.g.
文件: 陕西省.txt
文件: 山东省.txt -
将上述 编写的代码封装为模块, 并实现模块的制作与发布;
import itchat from pyecharts import Bar def getProvincialInfoAboutWechatFriend(): topNum = 5 # 各城市名及好友人数 friendCityInfo = {} # 前五城市名及好友人数 cityTop5 = [] # 前五城市名及好友备注名 cityTop5NameInfo = {} # 条形图x轴各城市名 cityTop5List = [] # 条形图y轴各城市人数 cityTop5FriendNumList = [] # 登陆,热加载 itchat.auto_login(hotReload=True) # 获取所有好友信息 friendInfo = itchat.get_friends() for i in friendInfo: iCity = i.get('City') # 各城市好友人数统计 friendCityInfo[iCity] = friendCityInfo.get(iCity, 0) + 1 # 排序统计结果 friengCityInfoSorted = sorted(friendCityInfo.items(), key=lambda x: x[1], reverse=True) # 获取前五的城市和人数 for i in range(1, topNum + 1): # 未设置地区的人数最多,去掉 cityTop5.append(friengCityInfoSorted[i]) # 储存前五城市好友备注的字典初始化(value为列表) for i in cityTop5: cityTop5NameInfo[i[0]] = [] # 添加前五城市的好友备注 for i in friendInfo: if i.get('City') in cityTop5NameInfo: cityTop5NameInfo[i.get('City')].append(i.get('RemarkName')) # 分城市存入文件 for i in cityTop5NameInfo: fileName = i + '.txt' with open(fileName, 'w') as f: for j in cityTop5NameInfo[i]: # 以空格分隔好友备注名 f.write(j + ' ') # 绘制条形图 # 获取x,y轴信息列表 for i in cityTop5: cityTop5List.append(i[0]) cityTop5FriendNumList.append(i[1]) bar = Bar('微信好友城市分布条形图') bar.add(name='人数', x_axis=cityTop5List, y_axis=cityTop5FriendNumList) bar.render('bar.html') if __name__ == '__main__': getProvincialInfoAboutWechatFriend()