Zeppelin是相似于Jupyter Notebook的Web数据分析工具,内置Spark引擎。这里结合TuShare、Requests、BS4的介绍其用法。这里以Docker中运行为例。python
这里介绍Zeppelin源码编译、容器构建、安装TuShare和图表呈现的步骤与方法。git
得到源码:github
git clone https://github.com/openthings/docker-zeppelin
编译源码:docker
docker build -t zeppelinx .
输出的Docker容器为zeppelinx,能够输入 docker images查看。shell
下一步启动容器:浏览器
docker run --name zeppelinx -p 9090:8080 -it zeppelinx
由于不少服务都使用了8080端口,这里我改为9090以免冲突。 启动成功后,打开浏览器进入 http://localhost:9090 便可访问。app
由于上述的Docker容器安装的python3,咱们将python和pyspark的python解释器都设为python3。 在右上角选择interpreter,找到python项,选择“editor”,而后将zeppelin.python修改成python3。 以下所示:函数
以几个经常使用的库安装为例。 首先新建一个note,选择默认的Interpreter为shell。 在Paragraph中输入如下内容,而后按shift+enter执行:工具
pip install lxml pip install pandas pip install TuShare pip install Requests pip install beautifulsoup4
首先经过TuShare获取数据,返回格式为pandas.DataFrame。 在Zappelin中表格能够直接经过%table标签的字符串输出,显示为表格或统计图。示例格式为:ui
%table name\tvalue\r cell01\t10\r cell02\t20
为了直接显示数据和趋势,能够将pandas转为table格式,转换函数以下:
%python import tushare as ts import pandas as pd def get_hist(stock,ktypex,startx): df = ts.get_hist_data(code=stock,ktype=ktypex,start=startx) df = df.sort_index(ascending=True) a ="""%table\r date\t high\t low\r""" for idx in df.index: a = a + str(idx) + "\t" + str(df.ix[idx]['high']) + "\t" + str(df.ix[idx]['low']) + "\r" return (df,a)
返回的数据为元组,第一个参数为Pandas.DataFrame,第二个参数为转换后的%table字符串。
**注意:在最新的Zeppelin 0.8-snapshot版本中,%table的分行符改成了"\n","\r"无论用了。使用下面的函数: **
%python import tushare as ts import pandas as pd def get_hist(stock,ktypex,startx): df = ts.get_hist_data(code=stock,ktype=ktypex,start=startx) df = df.sort_index(ascending=True) a ="""%table\n date\t high\t low\n""" for idx in df.index: a = a + str(idx) + "\t" + str(df.ix[idx]['high']) + "\t" + str(df.ix[idx]['low']) + "\n" return (df,a)
调用get_hist获得数据,并可视化。
%python df,adata = get_hist(stock='300036',ktypex='5',startx='2017-02-20') print(adata)
结果以下: