亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

用 Python 進行金融數據可視化

系統 1977 0

Python量化的關鍵是金融數據可視化,無論是傳統的K線圖,還是現在的策略分析,都需要大量的可視化圖表。具體到編程代碼,就是使用Python繪圖模塊庫繪圖,比如傳統的Python繪圖模塊庫有Matplotlib,Seaborn等。

對于股票和財經的金融數據源,可以使用Tushare庫來獲取和分析股票財經數據,我們獲得財經數據源后,就可以使用Pandas對金融數據的各種指標進行定制化的分析了,最后讓數據可視化,可以使用Matplotlib來繪制出美觀大方的金融圖形,為企業的決策提供便利。金融繪圖的主要步驟如下:

用 Python 進行金融數據可視化_第1張圖片

獲得股票數據源

Tushare是一個免費、開源的Python財經數據接口包。主要實現對股票等金融數據從數據采集、清洗加工到數據存儲的過程,能夠為金融分析人員提供快速、整潔、和多樣的便于分析的數據,為他們在數據獲取方面極大地減輕工作量,使他們更加專注于策略和模型的研究與實現上??紤]到Python 的Pandas包在金融量化分析中體現出的優勢,Tushare返回的絕大部分的數據格式都是Pandas的 DataFrame類型,非常便于用Pandas,NumPy和Matplotlib進行數據分析和可視化。

Tushare的官網地址

              
                http:
                
                  //tushare.org
                
                

在Tushare中使用的股票代碼,可以參考東方財富網提供的股票代碼查詢頁面,如圖7-63所示

              
                http:
                
                  //quote.eastmoney.com/stocklist.html
                
                

用 Python 進行金融數據可視化_第2張圖片

圖763股票代碼查詢頁面

使用pip安裝Tushare。安裝Tushare之前,需要使用pip命令先安裝好lxml,requests和bs4模塊。

              
                
                  pip
                
                ?install?tushare
                


640?wx_fmt=jpeg

顯示股票歷史數據

TuShare里的 get_hist_data()函數用于獲取到目前為止3年的歷史數據。獲取個股歷史交易數據(包括均線數據),可以通過參數設置獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線數據。本接口只能獲取近3年的日線數據,適合搭配均線數據進行選股和分析。

參數說明:

  • 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
                
                ?ts
                
data ?=?ts.get_hist_data( '600848' ,start= '2018-03-01' ,end= '2018-03-31' )
data .to_csv( 'hist_data.csv' ?)

運行腳本,已記事本打開hist_data.csv文件。

用 Python 進行金融數據可視化_第3張圖片

我們查看hist_data.csv文件會發現,編號為600848的股票代碼在2018年3月的歷史交易數據是按照交易日期降序排列的。但展示在折線圖上的的日期一般要按升序排列。所以還要對DataFrame對象的index屬性進行排序。使用Pandas的DataFrame對象的sort_index()函數,使交易日期按照從小到到大的升序排列。這樣畫出的折線圖就符合人們查看歷史交易數據的正常習慣了,完整代碼如下。

              
                
                  import
                
                ?tushare?
                
                  as
                
                ?ts
                

data ?=?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
                
                ?ts
                
import ?matplotlib.pyplot? as ?plt
from?datetime? import ?datetime

data ?=?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()

運行腳本輸出以下圖形。

用 Python 進行金融數據可視化_第4張圖片

以上代碼的核心代碼如下,使用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
                
                ?ts
                
import ?matplotlib.pyplot? as ?plt
import ?matplotlib.dates? as ?mdates

data ?=?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()

運行腳本輸出以下圖形。

用 Python 進行金融數據可視化_第5張圖片

獲取60分鐘k線數據。

              
                
                  import
                
                ?tushare?
                
                  as
                
                ?ts
                
import ?matplotlib.pyplot? as ?plt
import ?matplotlib.dates? as ?mdates

data ?=?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()

運行腳本輸出以下圖形。

用 Python 進行金融數據可視化_第6張圖片

圖768編號為600848的股票代碼的60分鐘內的k線圖

留言回復你用Python做過哪些有趣的應用 ,我們會在留言中隨機抽取一位讀者免費送出北京大學出版社出版的《Python 3 數據分析與機器學習實戰》圖書一本。


熱 門 推 薦
用Python創建微信機器人

用Python機器人監聽微信群聊

用Python獲取攝像頭并實時控制人臉

開源項目 | 用Python美化LeetCode倉庫

推薦Python中文社區旗下的幾個服務類公眾號
征稿啟事 | Python中文社區有獎征文

用 Python 進行金融數據可視化_第7張圖片 文章節選自北京大學出版社出版的《Python 3 數據分析與機器學習實戰》,本書現在5折優惠,點擊閱讀原文 購書~


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 三级西施 | 四虎影院永久网址 | 超级乱淫视频aⅴ播放视频 超级乱淫视频播放日韩 | 国产精品亚欧美一区二区三区 | 国产免费成人在线视频 | 久久精品国产影库免费看 | 91情国产l精品国产亚洲区 | 国产精品伊人 | 久久www免费人成看国产片 | 天堂精品高清1区2区3区 | a级高清观看视频在线看 | 深夜影院在线观看 | 天天操天天干天天透 | 九色视频极品论坛区 | 日本伊人网 | 美女羞羞视频 | 日本视频a | 四虎影院com | 一类毛片 | 狼人香蕉香蕉在线视频播放 | 国产l精品国产亚洲区在线观看 | 中文国产成人精品久久水 | 国产欧美日韩精品第三区 | 毛茸茸性毛茸茸大b | 中文字幕国产日韩 | 成人免费视频在 | 日韩 欧美 自拍 在线 视频 | 国产精品成人观看视频网站 | 国产一级黄色毛片 | 伊人热人久久中文字幕 | 一级a性色生活片毛片 | 亚洲国产成人久久一区久久 | 国内精品久久久久影院免费 | 在线观看免费视频a | 99爱网站 | 日韩欧美一区二区久久黑人 | 亚洲九九色 | 性生活视频网站 | 怡红院免费va男人的天堂 | 国产欧美综合精品一区二区 | 久久久久嫩草影院精品 |