python数据可视化

采用开源项目微信机器人wxpy的api,wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展

pip install -U wxpy

登陆微信:

# 导入模块from wxpy import *
# 初始化机器人,扫码登陆bot = Bot()找到好友:
# 搜索名称含有 "游否" 的男性深圳好友my_friend = bot.friends().search('游否', sex=MALE, city="深圳")[0]

发送消息:

# 发送文本给好友my_friend.send('Hello WeChat!')
# 发送图片my_friend.send_image('my_picture.jpg')

自动响应各类消息:

# 打印来自其他好友、群聊和公众号的消息@bot.register()def print_others(msg):    print(msg)
# 回复 my_friend 的消息 (优先匹配后注册的函数!)@bot.register(my_friend)def reply_my_friend(msg):    return 'received: {} ({})'.format(msg.text, msg.type)
# 自动接受新的好友请求@bot.register(msg_types=FRIENDS)def auto_accept_friends(msg):    # 接受好友请求    new_friend = msg.card.accept()    # 向新的好友发送消息    new_friend.send('哈哈,我自动接受了你的好友请求')

保持登陆/运行:

# 进入 Python 命令行、让程序保持运行embed()# 或者仅仅堵塞线程# bot.join()
#encoding=utf-8from wxpy import *import numpy    def removeAll(the_list, val):    return [value for value in the_list if value != val]def stats_text(target_group, group_name):    print(group_name + "群共有:" + str(len(target_group)) + "人,其中:")    all_stats_text = []    all_dict = {}        # 乱序先整理一份省份 + 地点的列表    for user in target_group.members:        trimed_data = user.province.replace(' ', '') + user.city.replace(' ', '')        if trimed_data != '':            all_stats_text.append(trimed_data)    # 计数    for data in all_stats_text:        if all_stats_text.count(data) != 0:            all_dict[data] = all_stats_text.count(data)            all_stats_text = removeAll(all_stats_text, data)            final_dict = {}    for i in sorted(all_dict.keys()):        final_dict[i] = all_dict[i]    return final_dictdef stats_sex(target_group):    male = 0    female = 0    other = 0        for user in target_group.members:        if user.sex == 1:            male = male + 1        if user.sex == 2:            female = female + 1        else:            other = other + 1        print("男的有:" + str(male) + "人")    print("女的有:" + str(female) + "人")    msg = "男的有:" + str(male) + "人\n" + "女的有:" + str(female) + "人\n"    return msgbot = Bot()target_group = bot.groups(update=True, contact_only=False)for curr_group in target_group:    # 小于 10 人的群过滤掉    if len(curr_group) < 10:        continue    curr_group.update_group(members_details=True)    print(curr_group.name + "一共有:" + str(len(curr_group)) + "人\n")    msg = stats_sex(curr_group)    curr_group.send("Sorry, 刚才测试发现有 Bug,再发最后一次哈")    curr_group.send(curr_group.name + "群,一共有:" + str(len(curr_group)) + "人\n" + msg)

如上述代码,指的是微信群中男女比例分析图。

那么如何用可视化的角度来直观分析数据呢?

推荐 : 开源工具pyecharts,由Echarts 是一个由百度开源的数据可视化工具而来,Echarts凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。 特性: - 简洁的 API 设计,使用如丝滑般流畅,支持链式调用 - 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab - 可轻松集成至 Flask,Sanic,Django 等主流 Web 框架 - 多达 400+ 地图文件,并且支持原生百度地图,为地理数据可视化提供强有力的支持

下面以mac平台为例,安装步骤如下(默认python3):

你可以通过以下命令来判断是否已安装:

pip --version如果你还未安装,则可以使用以下方法来安装:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   # 下载安装脚本$ sudo python3 get-pip.py    # 运行安装脚本。   
# 安装 python3.6 以上版本$ pip install pyecharts -U

安装过的可以选择性升级pip

pip install -U pip

源码的安装:

# 安装 v1 以上版本$ git clone https://github.com/pyecharts/pyecharts.git# 如果需要安装 0.5.11 版本,请使用 git clone https://github.com/pyecharts/pyecharts.git -b v05x$ cd pyecharts$ pip install -r requirements.txt$ python setup.py install

生成HTML

from pyecharts.charts import Barfrom pyecharts import options as opts# V1 版本开始支持链式调用bar = (    Bar()    .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])    .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])    .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])    .set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况")))bar.render()# 不习惯链式调用的开发者依旧可以单独调用方法bar = Bar()bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])bar.set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况"))bar.render()

生成图片

from snapshot_selenium import snapshot as driverfrom pyecharts import options as optsfrom pyecharts.charts import Barfrom pyecharts.render import make_snapshotdef bar_chart() -> Bar:    c = (        Bar()        .add_xaxis(["a", "b", "c", "d"])        .add_yaxis("w", [23, 55, 23, 105])        .add_yaxis("m", [164, 34, 64, 498])        .reversal_axis()        .set_series_opts(label_opts=opts.LabelOpts(position="right"))        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片"))    )    return c# 需要安装 snapshot-selenium 或者 snapshot-phantomjsmake_snapshot(driver, bar_chart().render(), "bar.png")

之后,运行即可

注意:使用anocada或者pycharm都可以,但是注意版本的选择,否则报错。

爱女友,爱生活
0
0
发表留言

文章
python数据可视化
采用开源项目微信机器人wxpy的api,wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展pip...
扫描右侧二维码继续阅读
February 17, 2020
zlatanera
blogger
王誉睿
我是网站主理人Jackie·Wong,95后。热爱读书、电影和数码,喜欢旅游,对未知事物拥有无限的好奇心,脑洞随时大开。
我的其他网站:

Jackieの生活觀察(Notion主页)
逝去的武林
BBtime

此网站用RSSHub插件可以添加到RSS阅读器中方便查看哦

统计
文章:157 篇
分类:4 个
评论:26 条
运行时长:1年351天
by yoniu.
zlatanera