寫出你的第一個web app,幾行代碼就夠了
無論數據科學家還是機器學習工程師,部署數據科學項目都是他們所需要的一項至關重要的能力。傳統部署機器學習模型的方法是利用Django、Flask等已經建立好的框架,然而這種方法非常耗時,常常令人望而卻步。有沒有簡單一點的方法呢?
股票web app概述
現在我們要構建一個顯示股價與股票成交量的簡單web app,會用到Python中的streamlit和yfinance兩個庫。這個app理論上是要利用yfinance庫從雅虎財經調取市場歷史數據,然后把數據保存在數據框架中,最后作為streamlit 的輸入參數顯示出線形圖表。
安裝必備庫
在這篇教程中,我們將用到兩個需要安裝的Python庫,streamlit 和yfinance。通過下面的pip install命令可以輕松地安裝streamlit:
- pip install streamlit
同理按照以下命令完成 yfinance的安裝:
- pip install yfinance
web app代碼
這次構建web app的代碼一共不到20行,如果不算注釋的話代碼只有14行。
- import yfinance as yf
- import streamlit as st
- st.write("""
- # Simple StockPrice App
- Shown are the stockclosing price and volume of Google!
- """)
- # https://towardsdatascience.com/how-to-get-stock-data-using-python-c0de1df17e75
- #define the tickersymbol
- tickerSymbol ='GOOGL'
- #get data on thisticker
- tickerData = yf.Ticker(tickerSymbol)
- #get the historicalprices for this ticker
- tickerDf = tickerData.history(period='1d', start='2010-5-31', end='2020-5-31')
- # Open HighLowClose Volume Dividends StockSplits
- st.line_chart(tickerDf.Close)
- st.line_chart(tickerDf.Volume)
代碼逐行解釋
現在,我們來詳細看看上面這些代碼:
- 第一行和第二行——輸入yfinance,命名為yf同時輸入streamlit,命名為st。
- 四至七行——用 st.write() 函數輸出文本內容,輸出文本為markdown格式。
- 九至十六行——用yfinance庫從雅虎財經中調取市場歷史數據。
- 十一行——定義股票代碼為 GOOGL。
- 十三行——用yf.Ticker()函數創建tickerData變量,顧名思義該變量為股票代碼數據。需要注意的是tickerData是一個股票代碼對象,如果把tickerData當作命令運行可以得到這樣的輸出 yfinance.Ticker object
。 - 十五行——創建tickerDf 數據框架,定義日期范圍(從2010年5月31日到2020年5月31日)以及時段(1天)。
- 十八行到十九行——用st.line_chart()函數畫出線性圖表(收盤價格數據來自十五行代碼中定義的tickerDf數據框架中的收盤與成交量數據)。
運行web app
代碼保存在名為myapp.py的文件之后,啟動命令提示符(或者是微軟Windows系統里的Power Shell),運行下面的命令:
- streamlit run myapp.py
然后可以看到以下信息:
- > streamlit run myapp.pyYou can now view your Streamlit app in yourbrowser.Local URL: http://localhost:8501
- Network URL: http://10.0.0.11:8501
不久一個網頁窗口就會彈出,直接跳去如下所示的http://localhost:8501這個創建好的web app。
股價web app截屏
Bingo!你已經成功用Python創建了自己的第一個web app!
自定義web app
以上是最基本的,如果你想讓自定義web app變得更有趣一點呢?
- import yfinance as yf
- import streamlit as st
- st.write("""
- # Simple StockPrice App
- Shown are the stock**closing price** and ***volume*** of Google!
- """)
- #https://towardsdatascience.com/how-to-get-stock-data-using-python-c0de1df17e75
- #define the tickersymbol
- tickerSymbol ='GOOGL'
- #get data on thisticker
- tickerData = yf.Ticker(tickerSymbol)
- #get the historicalprices for this ticker
- tickerDf = tickerData.history(period='1d', start='2010-5-31', end='2020-5-31')
- # Open HighLowClose Volume Dividends StockSplits
- st.write("""
- ## Closing Price
- """)
- st.line_chart(tickerDf.Close)
- st.write("""
- ## Volume
- """)
- st.line_chart(tickerDf.Volume)
讓我們花點時間來理解上面的代碼:
- 第六行——注意這里需在“closing price” 前后各用兩個星號來加粗“closing price” ,如下所示:**closingprice**。還要注意“volume”斜體加粗,前后各用三個星號,如下所示:***volume***。
- 十八至二十行和二十二至二十五行——在收盤價格和成交量圖表上方加入一個markdown格式的標題。
更新后的web app截屏
成功了!現在這個web app可以自動更新了。構建你的第一個web app,就是這么簡單,快去上手操作一下吧!