Zeppelin是类似于Jupyter Notebook的Web数据分析工具,内置Spark引擎。这里结合TuShare、Requests、BS4的介绍其用法。这里以Docker中运行为例。
这里介绍Zeppelin源码编译、容器构建、安装TuShare和图表呈现的步骤与方法。
1、编译Zeppelin源码
获得源码:
git clone https://github.com/openthings/docker-zeppelin
编译源码:
docker build -t zeppelinx .
输出的Docker容器为zeppelinx,可以输入 docker images查看。
2、运行Zeppelin服务
下一步启动容器:
docker run --name zeppelinx -p 9090:8080 -it zeppelinx
因为很多服务都使用了8080端口,这里我改成9090以避免冲突。 启动成功后,打开浏览器进入 http://localhost:9090 即可访问。
2.1 设置Python3
因为上述的Docker容器安装的python3,我们将python和pyspark的python解释器都设为python3。 在右上角选择interpreter,找到python项,选择“editor”,然后将zeppelin.python修改为python3。 如下所示:
2.2 安装支持库
以几个常用的库安装为例。 首先新建一个note,选择默认的Interpreter为shell。 在Paragraph中输入以下内容,然后按shift+enter执行:
pip install lxml
pip install pandas
pip install TuShare
pip install Requests
pip install beautifulsoup4
3、使用TuShare
3.1 创建数据获取函数
首先通过TuShare获取数据,返回格式为pandas.DataFrame。 在Zappelin中表格可以直接通过%table标签的字符串输出,显示为表格或统计图。示例格式为:
%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)
3.2 创建图表
调用get_hist得到数据,并可视化。
%python
df,adata = get_hist(stock='300036',ktypex='5',startx='2017-02-20')
print(adata)
结果如下: