matplotlib數據可視化

為了接上之前的文章《hiboo:如何使用python分析股票漲跌幅?》讓這六家股票數據數據可視化,發現自己太懶了,代碼都寫過去了好久,沒在知乎上更新。主要是天天關注馬雲爸爸了,哈哈!

import pandas as pd互聯網數據獲取包注意:安裝包的命令中的連接符是『-』也就是pandas-datareader.但是這裡導入包的連接符是下劃線『_』也就是pandas_datareader.這裡一定要注意安裝和導入包這兩個連接符是不一樣的,不然無法導入使用from pandas_datareader import data獲取國內股票數據的方式是:『股票代碼』+『對應股市』(港股為.hk,A股為.ss)例:騰訊港股:0700.hk#字典:6家公司的股票gafataDict = {谷歌:GOOG,亞馬遜:AMZN,Facebook:FB, 蘋果:AAPL,阿里巴巴:BABA,騰訊:0700.hk}#獲取那段時間範圍的股票數據start_date = 2017-01-01end_date = 2018-01-01#獲取阿里巴巴的股票數據babaDf = data.get_data_yahoo(gafataDict[阿里巴巴],start_date,end_date)#查看前五行數據babaDf.head()

#查看數據結構babaDf.info()<class pandas.core.frame.DataFrame>DatetimeIndex: 251 entries, 2017-01-03 to 2017-12-29Data columns (total 6 columns):Open 251 non-null float64High 251 non-null float64Low 251 non-null float64Close 251 non-null float64Adj Close 251 non-null float64Volume 251 non-null int64dtypes: float64(5), int64(1)memory usage: 13.7 KB

#導入matplotlib繪圖import matplotlib.pyplot as plt#x軸是阿里數據,y軸每天收盤價這一列babaDf.plot(x = babaDf.index,y = Close)#x坐標軸文本plt.xlabel(時間)#y坐標軸文本plt.ylabel(股價(美元))#圖片標題plt.title(2017年阿里巴巴股價走勢)#顯示網格plt.grid(True)#顯示圖形plt.show()

#繪製散點圖kind = scatterbabaDf.plot(x = Volume , y = Close , kind = scatter)#x坐標軸文本plt.xlabel(成交量)#y坐標軸文本plt.ylabel(股價(美元))#圖片標題plt.title(成交量和股價)#顯示網格plt.grid(True)#顯示圖形plt.show()

#獲取谷歌的股票數據googDf = data.get_data_yahoo(gafataDict[谷歌],start_date,end_date)googDf.head()

#獲取亞馬遜的股票數據amazDf = data.get_data_yahoo(gafataDict[亞馬遜],start_date,end_date)amazDf.head()

#獲取蘋果的股票數據applDf = data.get_data_yahoo(gafataDict[蘋果],start_date,end_date)applDf.head()

#獲取Facebook股票數據fbDf = data.get_data_yahoo(gafataDict[Facebook],start_date, end_date)fbDf.head()

#獲取騰訊的股票數據txDf = data.get_data_yahoo(gafataDict[騰訊],start_date,end_date)txDf.head()

#騰訊是港股,所以這裡的收盤價是港幣,按照今天的匯率將其轉化為美元exchange=0.1278 #港幣兌換美元的匯率,這個值可以根據在網上查到當天的最新匯率#為了方便後期多家公司的股價比較,增加新的一列收盤價(美元)txDf[Close_dollar]= txDf[Close]* exchangetxDf.head()

#繪製谷歌的畫紙1ax1 = googDf.plot(x = googDf.index , y = Close)#通過制定畫紙ax,在同一張畫紙上繪圖#亞馬遜amazDf.plot(ax = ax1 , x = amazDf.index , y = Close)#FacebookfbDf.plot(ax = ax1 , x = fbDf.index , y = Close)#蘋果applDf.plot(ax = ax1 , x = applDf.index , y = Close)#騰訊txDf.plot(ax = ax1 , x = txDf.index , y = Close)#阿里巴巴babaDf.plot(ax = ax1 , x = babaDf.index , y = Close)#x軸坐標文本plt.xlabel(時間)#y軸坐標文本plt.ylabel(股價(美元))#圖片標題plt.title(2017GAFATA股價走勢比較)#顯示網格plt.grid(True)#顯示圖像plt.show()

使用label自定義圖例#繪製谷歌的畫紙1ax1=googDf.plot(x=googDf.index,y=Close,label=谷歌)#通過指定畫紙ax,在同一張畫紙上繪圖#亞馬遜amazDf.plot(ax=ax1,x=amazDf.index,y=Close,label=亞馬遜)#FacebookfbDf.plot(ax=ax1,x=fbDf.index,y=Close,label=Facebook)#蘋果applDf.plot(ax=ax1,x=applDf.index,y=Close,label=蘋果)#阿里巴巴babaDf.plot(ax=ax1,x=babaDf.index,y=Close,label=阿里巴巴)#騰訊txDf.plot(ax=ax1,x=txDf.index,y=Close_dollar,label=騰訊)#x坐標軸文本plt.xlabel(時間)#y坐標軸文本plt.ylabel(股價(美元))#圖片標題plt.title(2017年GAFATA股價走勢比較)#顯示網格plt.grid(True)plt.show()

因為谷歌和亞馬遜的股價比較高,造成我們看不出其他4家公司的股票走勢。 所以根據股價我們可以將這6家公司分成2組,一組是股價較高的谷歌和亞馬遜。另外一組是股價較低的4家公司。

#繪製谷歌畫紙2ax2 = googDf.plot(x = googDf.index,y = Close,label = 谷歌)#通過制定畫紙ax,在同一張畫紙上繪圖#亞馬遜amazDf.plot(ax = ax2,x = amazDf.index,y = Close,label = 亞馬遜)#x坐標軸文本plt.xlabel(時間)#y坐標軸文本plt.ylabel(股價(美元))#圖片標題plt.title(2017年谷歌和亞馬遜股價走勢比較)#顯示網格plt.grid(True)plt.show()

#繪製Facebook的畫板3#通過制定畫紙,在同一張畫紙上繪圖#Facebookax3 = fbDf.plot(x = fbDf.index,y = Close,label = Facebook)#蘋果applDf.plot(ax = ax3 , x = applDf.index , y = Close,label = 蘋果)#騰訊txDf.plot(ax = ax3 , x = txDf.index , y = Close,label = 騰訊)#阿里巴巴babaDf.plot(ax = ax3 , x = babaDf.index , y = Close,label = 阿里巴巴)#x軸坐標文本plt.xlabel(時間)#y軸坐標文本plt.ylabel(股價(美元))#圖片標題plt.title(2017年4家公司股價走勢比較)#顯示網格plt.grid(True)#顯示圖像plt.show()

#柱狀圖顯示6家公司的股票收盤價平均值gafataMeanList = [googDf[Close].mean(),#谷歌 amazDf[Close].mean(),#亞馬遜 fbDf[Close].mean(),#Facebook applDf[Close].mean(),#蘋果 babaDf[Close].mean(),#阿里巴巴 txDf[Close_dollar].mean(),#騰訊 ]#創建pandas一維數組SeriesgafataMeanSer = pd.Series(gafataMeanList, index = [谷歌, 亞馬遜, Facebook, 蘋果, 阿里巴巴, 騰訊])gafataMeanSer.plot(kind = bar,label = GAFATA)#圖片標題plt.title(2017年GAFATA股價平均值)#x軸坐標文本plt.xlabel(公司名稱)#y坐標軸文本plt.ylabel(股價平均值(美元))plt.grid(True)plt.show()

分析結果:可以看出,僅從股票價格上來判斷,亞馬遜和谷歌的股票價格要遠遠的超過了其他四家。但是這裡只是算的平均值,下面我們看下用四分位數繪製的箱線圖

#存放6家公司的收盤價closeDf = pd.DataFrame()#合併6家公司的收盤價closeDf = pd.concat([closeDf,googDf[Close],#谷歌 amazDf[Close],#亞馬遜 fbDf[Close],#Facebook applDf[Close],#蘋果 babaDf[Close],#阿里巴巴 txDf[Close_dollar],#騰訊) ],axis = 1)#重命名列名為公司名稱closeDf.columns = [谷歌,亞馬遜,Facebook, 蘋果, 阿里巴巴, 騰訊]closeDf.head()

#箱線圖closeDf.plot(kind = box)plt.grid(True)plt.show()

參考:《利用Python進行數據分析》第9章繪圖和可視化。

《matplotlib包的pyplot模塊官網教程》:

Pyplot tutorial - Matplotlib 2.0.2 documentation?

matplotlib.org圖標
推薦閱讀:

TAG:Python入門 | 數據可視化 | 股票分析師 |