如何用Python和PubNub做实时数据可视化
数据可视化早已不足为奇,现在大家的关注点都集中在“实 时”两个字。工作中,月报周报的排版再漂亮,内容再充实,在消费快餐的读图年代,总比不上随叫随到的实时dashboard。就好像每秒更新的几个数字,可以让公司和客户多挣几百万似的,但愿是这样吧。但不管怎样,和时间赛跑总是正确的。
数据可视化工具
实时可视化方案
- 第三方app,最有名的就是Tableau,贵(学生免费),功能多,支持很多数据库,有个漂亮的UI,适合大多数人。
- PowerBI: 微软的,相对便宜,但需要公司邮箱注册,功能在不断增加中,基本不支持AWS。
- QuickSight: AWS 新出的,免费,但太新了,第三方插件还不多,不过支持AWS的资源。
如果不喜欢千篇一律,而且想原创爱折腾,那必须自己动手丰衣足食。会开发网页,又搞得定D3.js的大神们可以自信地踏上这条康庄大道,假装无视旁人羡慕嫉妒的眼神。
PubNub + PowerBI
https://www.pubnub.com/blog/2016-08-31-realtime-charts-and-graphs-with-microsoft-power-bi/
通过上面这个例子,可以了解如何设置PowerBI来subscribe并正确解析数据流,从而实时展示。但没有涉及发送数据的部分,而且官网的Python代码是上一代PubNub SDK的用法。下面我们就讲如何用python和PubNub发送我们自定义的数据,并呈现在PowerBI里。
1) 注册一个PubNub应用
2) Python程序
pip install pubnub
然后在编译器内输入如下代码:
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub
import time, random
from datetime import datetime
pnconfig = PNConfiguration()
pnconfig.subscribe_key = “sub-c-a7e153ae-ac30-11e6-b37b-02ee2ddab7fe”
pnconfig.publish_key = “pub-c-4185f85e-676a-48a6-9f8e-1f45ab5a0ed7”
pubnub = PubNub(pnconfig)
发送的数据会包括时间和随机数字,所以相关的packages也一并import进来。
首先要config我们的PubNub,subscriber key是mandatory的,由于这又是一个发送数据的publisher,所以publish key也必不可少。
for i in range(1000):
json_data = {
‘datetime’ : datetime.now().isoformat(),
‘number_one’ : random.randint(1,50),
‘number_two’ : random.randint(10,35),
‘letter_one’ : random.choice(‘ABCD’),
‘letter_two’ : random.choice(‘XY’),
}
pubnub.publish().channel(‘pubnub_demo’).message(json_data).sync()
time.sleep(1)
3) 设置PowerBI
PowerBI是visualization工具,所以第一步必须是连接database。Datasets >> Streaming datasets >> 点页面右上方 “+” >> PubNub
dataset创建完,就是最后创建图表的部分了。
Dashboards >> “+” >> 给dashboard起个名称 >> 页面右上方”+” >> Custom Streaming Data >> 选择刚才创建的pubnub data >> 选择想要的图表形式并设置x,y轴就可以了。