Jupyter 服务开发指南
1. 取kylin 数据
import requests
import pandas as pd def getDtu(dtuid,addr):
sqlData = '{ "sql":"select * from dtu where dtuid=\'%s\' and addr=\'%s\' order by DTUTIME desc", "project":"yongli" , "offset":0, "limit":100}' %(dtuid, addr)
response = requests.post(url = 'http://kylin1.wdp:7070/kylin/api/query',
data = sqlData,
auth = ('admin', 'admin'),
headers = {"Content-Type":"application/json"})
dfCols = pd.DataFrame(response.json()["columnMetas"])
df = pd.DataFrame(response.json()["results"], columns=dfCols["label"].values) values = pd.DataFrame({ 'dtutime': df["DTUTIME"].map(pd.Timestamp),
addr: df["DTUVALUE"]}) return values getDtu('8627427973', '1800')
2. 合并行
from pandas import Series, DataFrame
import pandas as pd def getDtuStd(dtuid, addrs):
addrList = addrs.strip().split(',')
result = pd.DataFrame({'addr':[],
'std':[]}) for i in addrList:
std = getStd(dtuid, i)
result = result.append(std, ignore_index=True) return result getDtuStd('8627427973', '1820,1810,0004')
3. 合并列
import pandas as pd def getStdJson(dtuid,addr='0002,0004,1019,101A,101B,101C,101D,1023,1024,1025,1800,1802,1804,1806,1808,180A,180C,180E,1810,1812,1814,1816,1818,181A,181C,181E,1820,1822,1824,1826,1828,182A,182C,182E,1830,2000,2002,2004,2006,2008,200A,200C,200E,2100,2102,2104,2106,2108,210A,210C,210E'):
data = getDtuStd(dtuid,addr)
comments = pd.DataFrame({'addr':['0002','0004','1019','101A','101B','101C','101D','1023','1024','1025','1800','1802','1804','1806','1808','180A','180C','180E','1810','1812','1814','1816','1818','181A','181C','181E','1820','1822','1824','1826','1828','182A','182C','182E','1830','2000','2002','2004','2006','2008','200A','200C','200E','2100','2102','2104','2106','2108','210A','210C','210E'],
'comment':['电压变比','电流变比','A相功率因数','B相功率因数','C相功率因数','总功率因数','频率','A相相角','B相相角','C相相角','A相电压','B相电压','C相电压','平均相电压','AB线电压','BC线电压','CA线电压','平均线电压','A相电流','B相电流','C相电流','平均电流','零线电流','A相有功功率','B相有功功率','C相有功功率','总有功功率','A相无功功率','B相无功功率','C相无功功率','总无功功率','A相视在功率','B相视在功率','C相视在功率','总视在功率','A相正向有功电能','B相正向有功电能','C相正向有功电能','总正向有功电能','A相正向无功电能','B相正向无功电能','C相正向无功电能','总正向无功电能','A相反向有功电能','B相反向有功电能','C相反向有功电能','总反向有功电能','A相反向无功电能','B相反向无功电能','C相反向无功电能','总反向无功电能']}) result = pd.merge(data, comments, on='addr')
#print result
return "{\"code\":200,\"message\":\"SUCCESS\",\"data\":" + result.to_json(orient='records',force_ascii=False) + "}" #getStdJson('8627427973', '1820,1810,0004')
4. 画图
%matplotlib inline
import matplotlib.pyplot as plt, mpld3
from matplotlib.ticker import MultipleLocator, FuncFormatter
import matplotlib.dates as mdate def drawDTU(dtuid,addr):
#print "------- ENTER drawDTU (%s)-------" %dtuid data = getDTU(dtuid,addr)
fig, ax = plt.subplots(figsize=(5,3))
ax.plot(data[0], data[1], '-',label="%s" %addr, color = 'blue') majorLocator = MultipleLocator(5)
majorFormatter = mdate.DateFormatter('%H')
minorLocator = MultipleLocator(1)
ax.xaxis.set_major_locator(majorLocator)
ax.xaxis.set_major_formatter(majorFormatter) # for the minor ticks, use no labels; default NullFormatter
ax.xaxis.set_minor_locator(minorLocator) #plt.xlabel("Date")
#plt.ylabel("Value")
#plt.title("DTU Monitor")
plt.legend(loc='upper center', bbox_to_anchor=(0.5,0.98),ncol=3,fancybox=True,shadow=True)
ax.grid(color="lightgray", alpha=0.7)
#fig.set_size_inches(4, 4)
#plt.show()
fig.clear()
plt.close()
html = mpld3.fig_to_html(fig)
return html #drawDTU('8627427973', '0004')
5. 发布服务
from flask import Flask, make_response, request
app = Flask(__name__) @app.route("/dtustd/", methods=["GET","OPTIONS"])
def dtuStd(dtuid):
#o = drawDtuStd(dtuid)
o = getStdJson(dtuid)
resp = make_response(o)
resp.headers["Access-Control-Allow-Origin"] = "*"
resp.headers["Access-Control-Request-Method"] = "POST,GET,PUT,DELETE,OPTIONS"
resp.headers["Access-Control-Allow-Methods"] = "POST,GET,PUT,DELETE,OPTIONS"
resp.headers["Access-Control-Allow-Headers"] = "X-Requested-With,Content-Type" if request.method == 'OPTIONS':
print "it's OPTIONS"
return resp app.run(host="0.0.0.0", port=5007)
Jupyter 服务开发指南的更多相关文章
- 使用 ASP.NET Core 3.1 的微服务开发指南
使用 ASP.NET Core 3.1 的微服务 – 终极详细指南 https://procodeguide.com/programming/microservices-asp-net-core/ A ...
- 基于soap 的 python web services 服务开发指南
文章大纲 序言 相关概念 SOA web services SOAP WSDL UDDI 环境搭建 我们使用 python 3.6 这个较新python 版本 服务端开发 客户端开发 suds-jur ...
- Android SDK 开发指南
Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习. 更多视频教程如下: CSDN 融云 Android SDK ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
- AngularJS开发指南16:AngularJS构建大型Web应用详解
AngularJS是由Google创建的一种JS框架,使用它可以扩展应用程序中的HTML功能,从而在web应用程序中使用HTML声明动态内容.在该团队工作的软件工程师Brian Ford近日撰写了一篇 ...
- 《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见
智捷iOS课堂-关东升老师最新作品:<iOS开发指南-从0基础到AppStore上线>正式出版了 iOS架构设计.iOS性能优化.iOS测试驱动.iOS调试.iOS团队协作版本控制.... ...
- OAuth2.0开发指南
OAuth2.0开发指南 1.认证与登录 来往开放平台支持3种不同的OAuth 2.0验证与授权流程: 服务端流程(协议中Authorization Code Flow): 此流程适用于在Web服务端 ...
随机推荐
- 关于delphi 中 Sender的学习
sender是 事件的触发者,我发现所有的组件的事件 基本上都是 传Sender. 示例效果图: 代码: 接着来,既然TButton是个类,且publish哪里有事件,我们也可以看看这个事件的原型.
- List集合转换为数组形式
通过List集合对象的转类型函数 .ToArray() 如List<decimal> → deciaml[] 代码如下: var ComIdList = ComList.Select(p ...
- fis3安装
主要安装过程参考官网:http://fis.baidu.com/fis3/docs/beginning/install.html 这里记录安装fis3时遇到的一些问题: 1.npm install - ...
- NOI 2001 食物链(eat)
1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description ...
- asp.net mvc 模型验证-最舒服的验证方式
在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法 1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法 ...
- ZTSD_008_1表没有某订单数据,无法回写交期
ZTSD_008_1表没有某订单数据,无法回写交期, 取系SAP组检查执行此RFC:ZFM_FP_025_1 为什么没有将数据导进来 select * from SAPSR3.ZTSD_008_1@S ...
- 将CSDN和WordPress上的旧文章迁移过来
我最早用的博客是CSDN,但是不喜欢CSDN的博客,发文章还要审核,界面做的也很模糊,发个文章还必须选个分类.总之不像是用心在做博客这个功能. 后来,我自己搭建了一个网站(www.wangyufeng ...
- css3实现边框圆角样式
基本语法: border-radius: 5px; 兼容大多数浏览器: /*兼容Mozilla(Firefox, Flock等浏览器)*/ -moz-border-radius-topleft: ...
- java1.7集合源码阅读: Vector
Vector是List接口的另一实现,有非常长的历史了,从jdk1.0开始就有Vector了,先于ArrayList出现,与ArrayList的最大区别是:Vector 是线程安全的,简单浏览一下Ve ...
- android笔记:DatePickerDialog日期设置对话框
在开发中,可以通过DatePickerDialog来设置日期,TimePickerDialog来设置时间. 实例化DatePickerDialog对象之后,再调用show方法就可以显示对话框了. 具体 ...