python 金融可视化_用 Python 进行金融数据可视化
Python量化的關鍵是金融數據可視化,不管是傳統的K線圖,仍是如今的策略分析,都須要大量的可視化圖表。具體到編程代碼,就是使用Python繪圖模塊庫繪圖,好比傳統的Python繪圖模塊庫有Matplotlib,Seaborn等。
html
對于股票和財經的金融數據源,能夠使用Tushare庫來獲取和分析股票財經數據,咱們得到財經數據源后,就能夠使用Pandas對金融數據的各類指標進行定制化的分析了,最后讓數據可視化,能夠使用Matplotlib來繪制出美觀大方的金融圖形,為企業的決策提供便利。金融繪圖的主要步驟以下:nginx
得到股票數據源編程
Tushare是一個免費、開源的Python財經數據接口包。主要實現對股票等金融數據從數據采集、清洗加工到數據存儲的過程,可以為金融分析人員提供快速、整潔、和多樣的便于分析的數據,為他們在數據獲取方面極大地減輕工做量,使他們更加專一于策略和模型的研究與實現上。考慮到Python 的Pandas包在金融量化分析中體現出的優點,Tushare返回的絕大部分的數據格式都是Pandas的 DataFrame類型,很是便于用Pandas,NumPy和Matplotlib進行數據分析和可視化。微信
Tushare的官網地址網絡
http://tushare.org
在Tushare中使用的股票代碼,能夠參考東方財富網提供的股票代碼查詢頁面,如圖7-63所示app
http://quote.eastmoney.com/stocklist.html
圖763股票代碼查詢頁面機器學習
使用pip安裝Tushare。安裝Tushare以前,須要使用pip命令先安裝好lxml,requests和bs4模塊。函數
pip?install?tushare
顯示股票歷史數據學習
TuShare里的 get_hist_data()函數用于獲取到目前為止3年的歷史數據。獲取個股歷史交易數據(包括均線數據),能夠經過參數設置獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線數據。本接口只能獲取近3年的日線數據,適合搭配均線數據進行選股和分析。ui
參數說明:
code:股票代碼,即6位數字代碼,或者指數代碼(sh=上證指數 sz=深圳成指 hs300=滬深300指數 sz50=上證50 zxb=中小板 cyb=創業板)
start:開始日期,格式YYYY-MM-DD
end:結束日期,格式YYYY-MM-DD
ktype:數據類型,D=日k線 W=周 M=月 5=5分鐘 15=15分鐘 30=30分鐘 60=60分鐘,默認為D
retry_count:當網絡異常后重試次數,默認為3
pause:重試時停頓秒數,默認為0
返回值說明:
date:日期
open:開盤價
high:最高價
close:收盤價
low:最低價
volume:成交量
price_change:價格變更
p_change:漲跌幅
ma5:5日均價
ma10:10日均價
ma20:20日均價
v_ma5:5日均量
v_ma10:10日均量
v_ma20:20日均量
turnover:換手率[注:指數無此項]
查看編號為600848的股票代碼在2018年3月的歷史數據,使用Tushare的get_hist_data()返回的是Pandas的DataFrame對象,這個DataFrame對象的columns比較多,在控制臺顯示不全,因此使用Pandas的to_csv()函數保存到hist_data.csv文件中。
import?tushare?as?tsdata?=?ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')data.to_csv('hist_data.csv'?)
運行腳本,已記事本打開hist_data.csv文件。
咱們查看hist_data.csv文件會發現,編號為600848的股票代碼在2018年3月的歷史交易數據是按照交易日期降序排列的。但展現在折線圖上的的日期通常要按升序排列。因此還要對DataFrame對象的index屬性進行排序。使用Pandas的DataFrame對象的sort_index()函數,使交易日期按照從小到到大的升序排列。這樣畫出的折線圖就符合人們查看歷史交易數據的正常習慣了,完整代碼以下。
import?tushare?as?tsdata?=?ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')#?對交易時間進行降序排列data?=?data.sort_index()data.to_csv('hist_data.csv'?)
得到編號為600848的股票代碼在2018年3月的歷史交易數據后,就能夠使用Maplotlib畫出股票歷史數據的折線圖,折線圖的橫坐標是股票歷史數據的交易日期,縱坐標是股票交易數據的開盤價(open)。
import?tushare?as?tsimport?matplotlib.pyplot?as?pltfrom?datetime?import?datetimedata?=?ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')#?對時間進行降序排列data?=?data.sort_index()xs?=?[datetime.strptime(d,?'%Y-%m-%d').toordinal()?for?d?in?data.index?]plt.plot_date(?xs?,?data['open']?,?'b-')plt.gcf().autofmt_xdate()??#?自動旋轉日期標記plt.show()
運行腳本輸出如下圖形。
以上代碼的核心代碼以下,使用Tushare的get_hist_data()函數返回股票交易代碼的股票歷史數據,也就是Pandas的DataFrame對象data,data.index索引值是日期型字符串,使用Matplotlib的plot_date()畫圖函數,須要轉換成函數能夠識別的Gregoian Calendar類型數據。
xs?=?[datetime.strptime(d,?'%Y-%m-%d').toordinal()?for?d?in?data.index?]
以上表達式語句等同于如下語句。
xs?=?[]for?date?in?data.index:????print(?date?)????transDate?=?datetime.strptime(?date?,?'%Y-%m-%d')????xs.append(?transDate.toordinal())
繪制折線圖的X 軸的日期也能夠使用matplotlib.dates.strpdate2num()函數進行轉換,完整代碼以下。
import?tushare?as?tsimport?matplotlib.pyplot?as?pltimport?matplotlib.dates?as?mdatesdata?=?ts.get_hist_data('600848',start='2018-03-01',end='2018-03-31')#?對時間進行降序排列data?=?data.sort_index()xs?=?[mdates.strpdate2num('%Y-%m-%d')(d?)?for?d?in?data.index?]plt.plot_date(?xs?,?data['open']?,?'b-')plt.gcf().autofmt_xdate()??#?自動旋轉日期標記plt.show()
運行腳本輸出如下圖形。
獲取60分鐘k線數據。
import?tushare?as?tsimport?matplotlib.pyplot?as?pltimport?matplotlib.dates?as?mdatesdata?=?ts.get_hist_data('600848',?ktype='60')xs?=?[mdates.strpdate2num('%Y-%m-%d?%H:%M:%S')(d?)?for?d?in?data.index?]#設置時間標簽顯示格式ax?=?plt.gca()ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d?%H:%M:%S'))plt.plot_date(xs,?data['open'],'-'?,?label='open')plt.legend(loc=0??)plt.gcf().autofmt_xdate()plt.show()
運行腳本輸出如下圖形。
圖768編號為600848的股票代碼的60分鐘內的k線圖
留言回復你用Python作過哪些有趣的應用,咱們會在留言中隨機抽取一位讀者免費送出北京大學出版社出版的《Python 3 數據分析與機器學習實戰》圖書一本。
熱 門 推 薦
用Python建立微信機器人
用Python機器人監聽微信群聊
用Python獲取攝像頭并實時控制人臉
開源項目 | 用Python美化LeetCode倉庫
推薦Python中文社區旗下的幾個服務類公眾號
征稿啟事 | Python中文社區有獎征文
文章節選自北京大學出版社出版的《Python 3 數據分析與機器學習實戰》,本書如今5折優惠,點擊閱讀原文購書~
總結
以上是生活随笔為你收集整理的python 金融可视化_用 Python 进行金融数据可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql hma 分布式_mysql基
- 下一篇: python读取文件中的内容_pytho