
今天依然是跟着罗罗攀学习数据分析,原创:罗罗攀(公众号:luoluopan1)
Python有趣|数据可视化那些事(二)
今天主要是学习pyecharts(http://pyecharts.org/#/zh-cn/),深入学习可以看这个中文的使用文档。
PS:数据分析真的有点难,感觉学的只是工具,思维很难学,要多思考才行。
接上文:【Python有趣打卡】利用pandas完成数据分析项目(一)
数据准备
- 目的
分析下微信好友圈的情况,包括男女分布,地区分布,再简单制作个词云。
- itchat安装
体现python强大的地方来了——第三方库,python之所以强大一个重要的原因就是python提供了非常丰富的第三方库,意味着不需要你从橡胶、钢筋开始制作,直接给你提供轮子,脚踏板,你去组装就好了。
今天要用到的第三方库——itchat
itchat是一个开源的微信个人号接口,通过itchat可以实现消息的发送接受以及查看好友的信息等一些功能。一个库就可以方便的获取你微信的好友信息。是不是很厉害!
pip install itchat #安装itchat包
- 获取微信好友的基本信息,以及自己给好友的备注
import itchat
itchat.auto_login(hotReload=True) #会加载二维码,扫码登录即可
# itchat.send(u"Hello FileHelper", "filehelper") # 将“Hello FileHelper”发送给微信的文件助手
friends = itchat.get_friends(update=True)[0:] # 获取微信好友的信息,返回的是字典
print(friends)
- 存储微信好友信息
import itchat
import csv
import re
itchat.auto_login(hotReload=True) #会加载二维码,扫码登录即可
# itchat.send(u"Hello FileHelper", "filehelper") # 将“Hello FileHelper”发送给微信的文件助手
friends = itchat.get_friends(update=True)[0:] # 获取微信好友的信息,返回的是字典
fp = open(r'C:\Users\xuxiaojielucky_i\Desktop\wechat_friends.csv','w',newline='',encoding='utf-8')
writer = csv.writer(fp)
writer.writerow(['NickName','sex','Province','City','Signature'])
for i in friends:
NickName = i['NickName']
sex = i['Sex']
Province = i['Province']
City = i['City']
pattern = re.compile('<span.*?span>') #很多html的内容没啥意义去掉!
Signature= re.sub(pattern, '', i['Signature'])
print(Signature)
writer.writerow([NickName,sex,Province,City,Signature])
fp.close()
数据分析
- 性别分布
sex_count = data.groupby('sex')['sex'].count()
from pyecharts import Pie
pie = Pie('男女分布',title_pos = 'center')
pie.add("",['外星人','男','女'],
list(sex_count),
radius = [40,75],
label_text_color = None,
is_label_show = True,
legend_orient = "vertical",
legend_pos ="left")
pie
绘制词云图
str_data = ''
for i in range(data.shape[0]):
if type(data.iloc[i,4]) != str:
pass
else:
str_data = str_data + data.iloc[i,4]
import jieba.analyse
tags = jieba.analyse.extract_tags(str_data, topK=50, withWeight=True)
label=[]
attr = []
for item in tags:
print(item[0]+'\t'+str(int(item[1]*1000)))
label.append(item[0])
attr.append(int(item[1]*1000))
from pyecharts import WordCloud
wordcloud = WordCloud(width=800,height=620)
wordcloud.add("",label[6:],attr[6:],word_size_range=[20,100])
wordcloud
我是加了多少个代购。。。。emmmmmm。。。。。。可以清理清理微信好友了,尴尬
地图绘制
安装地图的相关包
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
汇聚下
province = data.groupby('province')['province'].count()
最后可视化地图
from pyecharts import Map
value = list(province)
attr = list(province.index)
map = Map('好友地区分布',width = 1200,height = 600)
map.add(
"",
attr,
value,
maptype = 'china',
is_visualmap = True,
visual_text_color = "#000",)