# pip install itchat
import itchat
# pip install pandas
import pandas as pd
# 以下为pyecharts安装方法
"""
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install pyecharts==0.5.11
pip install pyecharts_snapshot
"""
from pyecharts import Pie, Map, Style, Page, Bar
# 根据key值得到对应的信息
def get_key_info(friends_info, key):
return list(map(lambda friend_info: friend_info.get(key), friends_info))
# 获得微信好友信息
def get_friends_info():
itchat.auto_login(hotReload=True)
friends = itchat.get_friends()
friends_info = dict(
# 省份
province=get_key_info(friends, "Province"),
# 城市
city=get_key_info(friends, "City"),
# 昵称
nickname=get_key_info(friends, "Nickname"),
# 性别
sex=get_key_info(friends, "Sex"),
# 签名
signature=get_key_info(friends, "Signature"),
# 备注
remarkname=get_key_info(friends, "RemarkName"),
# 用户名拼音全拼
pyquanpin=get_key_info(friends, "PYQuanPin")
)
return friends_info
# 性别分析
def analysis_sex():
friends_info = get_friends_info()
df = pd.DataFrame(friends_info)
sex_count = df.groupby(['sex'], as_index=True)['sex'].count()
temp = dict(zip(list(sex_count.index), list(sex_count)))
data = {}
data['保密'] = temp.pop(0)
data['男'] = temp.pop(1)
data['女'] = temp.pop(2)
# 画图
page = Page()
attr, value = data.keys(), data.values()
chart = Pie('微信好友性别比')
chart.add('', attr, value, center=[50, 50],
redius=[30, 70], is_label_show=True, legend_orient='horizontal', legend_pos='center',
legend_top='bottom', is_area_show=True)
page.add(chart)
page.render('analysisSex.html')
# 全国省份分析
def analysis_province():
friends_info = get_friends_info()
df = pd.DataFrame(friends_info)
province_count = df.groupby('province', as_index=True)['province'].count().sort_values()
temp = list(map(lambda x: x if x != '' else '未知', list(province_count.index)))
# 画图
page = Page()
style = Style(width=1100, height=600)
style_middle = Style(width=900, height=500)
attr, value = temp, list(province_count)
chart1 = Map('好友分布(中国地图)', **style.init_style)
chart1.add('', attr, value, is_label_show=True, is_visualmap=True, visual_text_color='#000')
page.add(chart1)
chart2 = Bar('好友分布柱状图', **style_middle.init_style)
chart2.add('', attr, value, is_stack=True, is_convert=True,
label_pos='inside', is_legend_show=True, is_label_show=True)
page.add(chart2)
page.render('analysisProvince.html')
# 精确省份分析
def analysis_city(province):
friends_info = get_friends_info()
df = pd.DataFrame(friends_info)
temp1 = df.query('province == "%s"' % province)
city_count = temp1.groupby('city', as_index=True)['city'].count().sort_values()
attr = list(map(lambda x: '%s市' % x if x != '' else '未知', list(city_count.index)))
value = list(city_count)
# 画图
page = Page()
style = Style(width=1100, height=600)
style_middle = Style(width=900, height=500)
chart1 = Map('%s好友分布' % province, **style.init_style)
chart1.add('', attr, value, maptype='%s' % province, is_label_show=True,
is_visualmap=True, visual_text_color='#000')
page.add(chart1)
chart2 = Bar('%s好友分布柱状图' % province, **style_middle.init_style)
chart2.add('', attr, value, is_stack=True, is_convert=True, label_pos='inside', is_label_show=True)
page.add(chart2)
page.render('analysisCity.html')
if __name__ == '__main__':
analysis_sex()
analysis_province()
# 填入省份名称,例“江苏”,并且不可与市名称相同,例“吉林”
analysis_city("浙江")

douluo998
- 粉丝: 2335
最新资源
- midas建模连续刚构.ppt
- 创优项目安装工程施工组织设计.doc
- 水处理设备技术参数大全(专业标准-丰富多图).doc
- 广州某隧道土建工程旋喷桩施工方案.doc
- 县城供水工程1标段施工组织设计.doc
- 工程概预算与管理.ppt
- 县城市政工程监理规划.doc
- 某石油集团公司关于深化劳动用工制度改革实话办法.doc
- 钢筋分项工程的成本控制.doc
- 碧桂园工程质量评分办法(013版).doc
- 南京财经大学2006-2007学年微积分期末试卷b及答案.doc
- 总务主任(食堂管理员)岗位职责.doc
- 公司专项资金管理使用制度篇一.docx
- 招投标管理法规讲解.ppt
- 电子巡更系统技术方案g.doc
- 水电改造施工技术窍门指导(现场图文解析).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


