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)
結果以下: