Python大數(shù)據(jù)財務(wù)分析 課件 3.財務(wù)可視化基礎(chǔ) - Matplotlib庫_第1頁
Python大數(shù)據(jù)財務(wù)分析 課件 3.財務(wù)可視化基礎(chǔ) - Matplotlib庫_第2頁
Python大數(shù)據(jù)財務(wù)分析 課件 3.財務(wù)可視化基礎(chǔ) - Matplotlib庫_第3頁
Python大數(shù)據(jù)財務(wù)分析 課件 3.財務(wù)可視化基礎(chǔ) - Matplotlib庫_第4頁
Python大數(shù)據(jù)財務(wù)分析 課件 3.財務(wù)可視化基礎(chǔ) - Matplotlib庫_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第三章財務(wù)可視化基礎(chǔ)-Matplotlib庫2024/9/12《Python大數(shù)據(jù)財務(wù)分析》配套課件目錄013.1Matplotlib基本圖形繪制0203第三章財務(wù)可視化基礎(chǔ)-Matplotlib庫3.2Matplotlib可視化小技巧3.3Matplotlib財務(wù)可視化案例實(shí)戰(zhàn)目錄013.1.1折線圖02033.1Matplotlib基本圖形繪制3.1.2柱狀圖/條形圖3.1.3散點(diǎn)圖043.1.4直方圖3.1Matplotlib基本圖形繪制在畫圖之前首先導(dǎo)入matplotlib庫,其導(dǎo)入方式通常寫作“importmatplotlib.pyplotasplt”。as是對導(dǎo)入庫的重命名以方便之后的使用,下面畫圖只需要調(diào)用plt的相應(yīng)函數(shù)即可。如plt.plot()為折線圖,plt.bar()為柱狀圖,plt.scatter()為散點(diǎn)圖,plt.pie()為餅狀圖,plt.hist()為直方圖等。接下來以折線圖、柱狀圖(條形圖)、散點(diǎn)圖和直方圖為例講解圖形的基本繪制方法。注意最后記得加上plt.show()來展示圖形,運(yùn)行結(jié)果如下圖所示:3.1.1折線圖通過plt.plot()可以繪制折線圖,代碼如下:如果想讓x和y之間有些數(shù)學(xué)關(guān)系,列表是不太容易進(jìn)行數(shù)學(xué)運(yùn)算的,這時候就可以通過Numpy庫引入一維數(shù)組進(jìn)行數(shù)學(xué)運(yùn)算,代碼如下:3.1.1折線圖這里通過Numpy生成一個一維數(shù)組x1,并根據(jù)數(shù)組的可運(yùn)算性生成了y1和y2,將兩條線都畫在一張圖上,最終運(yùn)行結(jié)果如下圖4-2所示:一般在表示趨勢的時候折線圖最為直觀。3.1.1折線圖3.1.2柱狀圖/條形圖通過plt.bar()可以繪制柱狀圖,代碼如下:運(yùn)行結(jié)果如圖所示:柱狀圖一般在進(jìn)行同行業(yè)或者其他橫截面比較的時候更加直觀。3.1.3散點(diǎn)圖通過plt.scatter()可以繪制散點(diǎn)圖,代碼如下:這里通過np.random.rand(10)生成10個0-1之間的隨機(jī)數(shù),運(yùn)行結(jié)果如下圖4-4所示:3.1.4直方圖通過plt.hist()可以繪制頻數(shù)或頻率直方圖,所謂直方圖其實(shí)就是頻數(shù)圖或者頻率圖,橫軸標(biāo)為相關(guān)數(shù)據(jù),縱坐標(biāo)則為該數(shù)據(jù)出現(xiàn)的頻數(shù)或者頻率,演示代碼如下:這里通過np.random.randn(10000)生成10000個服從均值為0,標(biāo)準(zhǔn)差為1的正態(tài)分布數(shù)據(jù),運(yùn)行結(jié)果如下圖3-5所示,其中橫軸表示隨機(jī)生成的數(shù)據(jù),縱軸則表示該數(shù)據(jù)出現(xiàn)的次數(shù),也即頻數(shù)。此外如果想顯示為頻率直方圖的話,只需要設(shè)置參數(shù)density為1即可。3.1.4直方圖補(bǔ)充知識點(diǎn):在pandas庫中的快捷繪圖技巧以上是Matplotlib庫經(jīng)典圖形的繪制技巧,其實(shí)對于pandas庫中的數(shù)據(jù)表格,有更加方便的代碼寫法,不過其本質(zhì)還是通過pandas庫調(diào)用的Matplotlib庫,演示代碼如下:通過df.hist()的方式便可以快速地繪制和之前一樣的直方圖了,這里因?yàn)閐f是只有一列數(shù),所以可以直接寫df,如果df有多列數(shù),那么繪制的時候就需要指明是哪一列需要繪制成直方圖,寫成df['列名'].hist()。補(bǔ)充知識點(diǎn):在pandas庫中的快捷繪圖技巧此外,除了寫df.hist()外,還可以通過下面這種pandas庫里的通用繪圖代碼繪圖:這里是通過設(shè)置kind參數(shù)為hist來繪制直方圖,通過這種通用繪圖代碼,pandas庫除了可以便捷的繪制直方圖外,它還可以通過設(shè)置kind參數(shù)快捷地繪制其他圖形,演示代碼如下,首先創(chuàng)建一個二維DataFrame表格df。人均收入人均支出北京80006000上海70005000廣州65004000演示二維表格df:補(bǔ)充知識點(diǎn):在pandas庫中的快捷繪圖技巧此時可以通過pandas同時繪制折線圖或者柱狀圖,代碼如下:因?yàn)閐f有多列,所以先要通過df['列名']的方式先選取需要繪圖的列數(shù)據(jù),最終效果如圖3-6,可以看到它將折線圖和柱狀圖都快捷地繪制在圖上了。此外如果直接寫plot()函數(shù),里面不傳入kind參數(shù)的話,即寫成df['人均收入'].plot()則默認(rèn)繪制折線圖。補(bǔ)充知識點(diǎn):在pandas庫中的快捷繪圖技巧此外設(shè)置kind參數(shù)為pie則可以繪制餅圖,設(shè)置為box則可以繪制箱體圖,效果如圖:補(bǔ)充知識點(diǎn):在pandas庫中的快捷繪圖技巧總結(jié)下pandas快捷繪圖的技巧。其他設(shè)置kind參數(shù)技巧如下表3-2所示。感興趣的讀者可以自己嘗試將kind參數(shù)換成如下內(nèi)容看下效果。kind參數(shù)圖形類型line折線圖bar柱狀圖hist直方圖pie餅圖box箱體圖area面積圖如果上面繪圖過程中出現(xiàn)中文亂碼,則可以在代碼最前面加上如下三行代碼解決中文亂碼的問題,這三行代碼是解決中文亂碼的固定寫法,這個之后也會講解。目錄3.2.1添加文字說明02033.2Matplotlib可視化小技巧3.2.2添加圖例3.2.3設(shè)置雙坐標(biāo)軸043.2.4設(shè)置圖片大小010506073.2.5

設(shè)置X軸角度3.2.6中文顯示問題3.2.7繪制多圖3.2Matplotlib可視化小技巧下面主要講解數(shù)據(jù)可視化過程中常用的一些小技巧,如添加文字說明、添加圖例、設(shè)置雙坐標(biāo)軸、設(shè)置圖片大小、設(shè)置中文以及如何繪制多圖。3.2.1添加文字說明通過plt.title(name)給圖畫添加標(biāo)題;通過plt.xlable(),plt.ylable()用于添加x軸和y軸標(biāo)簽。運(yùn)行結(jié)果如下圖所示:3.2.1添加文字說明3.2.2添加圖例通過plt.legend()來添加圖例,添加前需要設(shè)置好lable(標(biāo)簽)參數(shù),代碼如下:如下圖所示,已經(jīng)繪制出兩條直線,并在左上角添加了圖例,如果想修改圖例的位置,比如設(shè)置成右上角,可以將參數(shù)loc(位置location的縮寫)修改成“upperright”,右下角則設(shè)置成“l(fā)owerright”即可。3.2.2添加圖例3.2.3設(shè)置雙坐標(biāo)軸上面的例子可以在一張圖里畫出兩條線,但如果兩條線的取值范圍相差比較大,那么畫出來的圖效果便不太好,那么此時如何來畫出兩條y坐標(biāo)軸呢?可以在畫完第一個圖之后,寫如下一行代碼即可設(shè)置雙坐標(biāo)軸。需要注意的是,如果設(shè)置了雙坐標(biāo)軸,那么添加圖例的時候,每畫一次圖就得添加一次,而不能在最后統(tǒng)一添加。這里以y=x和y=x^2為例,演示下如何設(shè)置雙坐標(biāo)軸,代碼如下:運(yùn)行結(jié)果如下圖所示??梢钥吹阶笥业膟坐標(biāo)軸數(shù)值相差很大。如果不設(shè)置雙坐標(biāo)軸,會導(dǎo)致y=x這條線被壓縮的很平,影響圖像顯示效果。3.2.3設(shè)置雙坐標(biāo)軸3.2.4設(shè)置圖片大小如果對默認(rèn)圖片大小不滿意,可以通過如下代碼可以設(shè)置圖片大小:第一個元素代表長,第二個元素代表寬,這里的數(shù)字8和6代表的是800和600像素。3.2.5設(shè)置X軸角度有的時候X軸可能因?yàn)閮?nèi)容較多,導(dǎo)致數(shù)據(jù)都擠在一塊,這時候我們就可以設(shè)置x軸的角度來進(jìn)行調(diào)節(jié),代碼如下,其中45表示45度,可以根據(jù)自己的需要來調(diào)整角度。3.2.6中文顯示問題在使用matplotlib畫圖時,默認(rèn)情況下是不支持中文顯示的,通過如下代碼可解決該問題。其中由于更改了字體導(dǎo)致顯示不出負(fù)號,得將配署文件中axes.unicodeminus設(shè)為False。這里的SimHei是黑體的英文翻譯,如果想采用其他字體,可參考下表的字體英文對照表:黑體SimHei微軟雅黑Microsoft

YaHei新宋體NSimSun新細(xì)明體PMingLiU細(xì)明體MingLiU仿宋FangSong楷體KaiTi4.2.7繪制多圖如下圖4-11所示,有時我們需要在一張畫布上輸出多個圖形,在Matplotlib庫中有當(dāng)前的圖形(figure)以及當(dāng)前軸(axes)概念,其對應(yīng)的就是當(dāng)前畫布以及當(dāng)前子圖,在一張畫布(figure)上可以繪制多個子圖(axes)。繪制多圖通常采用subplot()函數(shù)或subplots()函數(shù)。(1)subplot()函數(shù)Subplot()通常含有三個參數(shù),子圖的行數(shù)、列數(shù)以及第幾個子圖,例如subplot(221)表示的就是繪制2行2列的子圖(共4個子圖),并在第1個子圖上進(jìn)行繪圖。4.2.7繪制多圖(1)subplot()函數(shù)演示代碼如下:4.2.7繪制多圖繪制結(jié)果如下圖所示:(1)subplot()函數(shù)為了加強(qiáng)大家對畫布(figure)和子圖(axes)的理解,我們通過下面的代碼來做一個簡單演示:4.2.7繪制多圖(1)subplot()函數(shù)繪制結(jié)果如下圖所示,兩張畫布其實(shí)就是繪制了兩張圖,其中第一張畫布中有有兩個子圖,第二張畫布中只有一個子圖。4.2.7繪制多圖(1)subplot()函數(shù)在使用subplot()函數(shù)的時候,每次在新的子圖上畫圖時,都得調(diào)用subplot()函數(shù)。想要一次性就生成多個子圖,可以用到subplots()函數(shù),代碼如下:4.2.7繪制多圖其中第1行代碼subplots()函數(shù)中主要有2個參數(shù),nrows表示行數(shù),ncols表示列數(shù),這里就是繪制2行2列的子圖(共4個子圖),它會返回兩個內(nèi)容:fig(畫布)和axes(子圖集合,以數(shù)組形式存儲各個子圖),也可以簡寫為:fig,axes=plt.subplots(2,2);第2行代碼通過flatten()函數(shù)將子圖集合展開,從而獲得各個子圖,這里因?yàn)槭且阎?個子圖,所以寫成“ax1,ax2,ax3,ax4”分別代表4個子圖,之后就可以在這四個子圖中畫圖了,演示代碼如下,這里采用subplots函數(shù)的簡寫方式,并設(shè)置圖片尺寸figsize為1000*800像素。(1)subplot()函數(shù)最終繪制結(jié)果如下圖所示:4.2.7繪制多圖(1)subplot()函數(shù)此外,如果要在subplot()函數(shù)或者subplots()函數(shù)生成的子圖中設(shè)置子圖標(biāo)題、X軸標(biāo)簽或Y軸標(biāo)簽,得通過set_title()函數(shù)、set_xlabel()函數(shù)、set_ylabel()函數(shù)進(jìn)行設(shè)置,演示代碼如下:4.2.7繪制多圖這里第一行設(shè)置中文字體為黑體(SimeHei)并使得中文不出現(xiàn)亂碼(1)subplot()函數(shù)最終繪制結(jié)果如下圖所示,可以看到第一張子圖已經(jīng)添加了標(biāo)題和X軸坐標(biāo)以及Y軸坐標(biāo)等內(nèi)容了。4.2.7繪制多圖總結(jié)來說,subplot()在畫布中繪圖時,每次都要調(diào)用subplot()指定位置,而subplots()函數(shù)可以一次生成多個子圖

,在調(diào)用時只需要調(diào)用生成子圖的ax即可。目錄013.3.1股票K線圖繪制023.3

Matplotlib財務(wù)可視化案例實(shí)戰(zhàn)3.3.2財務(wù)數(shù)據(jù)可視化繪制3.3Matplotlib財務(wù)可視化案例實(shí)戰(zhàn)下面我們就結(jié)合兩組例子來更好地理解一下Matplotlib在實(shí)際中的應(yīng)用。一個是股票K線圖的繪制,另一個是財務(wù)數(shù)據(jù)可視化的基本思路。3.3.1股票K線圖繪制一個實(shí)際中的股票K線圖如下圖所示(這個是“貴州茅臺”股票的日線級別的K線圖):1.股票K線圖基本知識這些柱狀圖通常稱之為“K線圖”,是由股票的四個價格來繪制的:開盤價(當(dāng)天上午9點(diǎn)半開始交易時的價格)、收盤價(當(dāng)天下午3點(diǎn)結(jié)束交易時的價格)、最高價(當(dāng)天股價波動中的最高價)、最低價(當(dāng)天股價波動中的最低價),簡稱“高、開、低、收”四個價格。

根據(jù)這四個價格便可以繪制出紅色和綠色的K線圖,因?yàn)樾嗡葡灎T,因此也常被稱之為蠟燭圖。K線圖分為兩種,如果當(dāng)天的收盤價高于開盤價,也就是說當(dāng)天的價格上漲,則稱之為陽線,通常繪制成紅色;反之如果當(dāng)天的收盤價低于開盤價,也就是說當(dāng)天的價格下跌,則稱之為陰線,通常繪制成綠色。(在美國,反而是紅色代表跌,綠色代表漲)3.3.1股票K線圖繪制1.股票K線圖基本知識均線分為5日均線(通常稱之為MA5)、10日均線(通常稱之為MA10)、20日均線(通常稱之為MA20)等,其原理就是將股價的收盤價求均值,例如5日均線就是最近連續(xù)5個交易日收盤價之和的平均值,具體的計算公式如下,其中Close1為當(dāng)天的收盤價,Close2為前一天的收盤價,其余依次類推。把每個5日均線的值連成一條平滑的曲線就是5日均線圖了,同理10日均線圖和20日均線圖也是類似的原理,這些均線圖也就是我們在這一小節(jié)最開始看到圖中的那些折線圖。了解了股票K線圖的基本知識后,下面我們就來進(jìn)行K線圖的繪制工作。3.3.1股票K線圖繪制1.股票K線圖基本知識2.繪制股票K線圖(1)安裝繪制K線圖的相關(guān)庫:mpl_finance庫首先需要安裝繪制K線圖的相關(guān)庫:mpl_finance庫,其安裝辦法稍微麻煩一點(diǎn),推薦通過PIP安裝法安裝,以Windows系統(tǒng)為例,具體方法是:通過Win+R組合鍵調(diào)出運(yùn)行框,輸入cmd后回車,然后在彈出框中輸入如下內(nèi)容,按一下Enter回車鍵進(jìn)行安裝:如果是在JupyterNotebook中安裝,則在pip前面加一個英文的感嘆號“!”然后運(yùn)行該代碼塊即可。安裝完mpl_finance庫便可以調(diào)用其中的candlestick_ochl()函數(shù)來繪制K線圖或者說蠟燭圖了,在正式繪制之前,我們還需要做一些前期的數(shù)據(jù)準(zhǔn)備工作。3.3.1股票K線圖繪制

(2)引入繪圖相關(guān)庫

首先引入一些繪圖需要用到的庫,代碼如下:引入pandas庫;引入剛剛安裝的mpl_finance庫。3.3.1股票K線圖繪制2.繪制股票K線圖

(3)篩選數(shù)據(jù)使用的數(shù)據(jù)示例如下圖所示:3.3.1股票K線圖繪制2.繪制股票K線圖可以看到讀取到的數(shù)據(jù)有很多列,其中一些列是我們不需要的。接下來對列進(jìn)行一個簡單的篩選,并更改一下列名:這里更改列名的方法是直接更改,當(dāng)然還有另外一種更一般的更改方法,如下所示,這兩種方法選擇其一就可以了:

(3)篩選數(shù)據(jù)3.3.1股票K線圖繪制2.繪制股票K線圖(4)日期格式調(diào)整及表格轉(zhuǎn)換因?yàn)槔L制K線圖的plot函數(shù)只能接收特定格式的日期格式,以及數(shù)組格式的內(nèi)容,所以我們需要將原來文本類型的日期格式調(diào)整一下,代碼如下:第一行是將是用日期列代替原來的數(shù)字行索引作為表格的行索引,因?yàn)檫@是后續(xù)可視化接收數(shù)據(jù)的格式,這里將某列設(shè)置為行索引還有另一種寫法,就是不進(jìn)行inplace參數(shù)設(shè)定,直接進(jìn)行變量替換,這兩種方法選擇其一即可:3.3.1股票K線圖繪制2.繪制股票K線圖第二行是將日期(現(xiàn)在的行索引)改為日期格式,用到的是pandas一個內(nèi)置的方法,叫做pd.DatetimeIndex。當(dāng)然這也有另一種寫法,那就是在第一行之前先加一句:如果加了這一句就不用再寫第二行(data.index=pd.DatetimeIndex)了。最后,我們需要對表格按照日期進(jìn)行一個升序處理(4)日期格式調(diào)整及表格轉(zhuǎn)換3.3.1股票K線圖繪制2.繪制股票K線圖這是因?yàn)槿绻蛔鲞@一步處理的話,data現(xiàn)在是以由近及遠(yuǎn)的順序排列的,最后得到的圖將是反過來的。(5)繪制K線圖轉(zhuǎn)換好數(shù)據(jù)格式后,K線圖的繪制就比較簡單了,通過plot函數(shù)便能夠輕松的繪制K線圖了,代碼如下:3.3.1股票K線圖繪制2.繪制股票K線圖得到的結(jié)果如下圖所示:(5)繪制K線圖3.3.1股票K線圖繪制2.繪制股票K線圖我們可以和新浪財經(jīng)網(wǎng)上的實(shí)際圖像對比一下,發(fā)現(xiàn)通過Python繪制的K線圖相關(guān)圖片和網(wǎng)上的圖片基本一致。代碼匯總:importmplfinanceasmpfimportpandasaspddf=pd.read_excel('k線圖原始數(shù)據(jù).xlsx')#選取需要的列和更換列名data=df[['trade_date','open','close','high','low','vol']]#選取需要的列data.columns=['Date','Open','Close','High','Low','Volume']#更換列名,為后面函數(shù)變量做準(zhǔn)備

#設(shè)置date列為索引,覆蓋原來索引,這個時候索引還是object類型,就是字符串類型。data.set_index('Date',inplace=True)#將object類型轉(zhuǎn)化成DateIndex類型,pd.DatetimeIndex是把某一列進(jìn)行轉(zhuǎn)換,同時把該列的數(shù)據(jù)設(shè)置為索引index。data.index=pd.DatetimeIndex(data.index)#將時間順序升序,符合時間序列data=data.sort_index(ascending=True)my_color=mpf.make_marketcolors(up='red',down='green')#設(shè)置上漲為紅色,下跌為綠色my_style=mpf.make_mpf_style(marketcolors=my_color)#添加到圖片樣式中#傳入數(shù)據(jù)data;type為蠟燭圖;mav為顯示5日,10日,20日均線;volume=True顯示成交量;show_nontrading=False不顯示無交易日信息;style設(shè)置圖片格式mpf.plot(data,type='candle',mav=(5,10,20),volume=True,show_nontrading=False,style=my_style)3.3.1股票K線圖繪制2.繪制股票K線圖3.3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論