用數據來一窺GAFATA
本文將會使用python語言,在ANACANDA 和 JUPYTER NOTEBOOK上 ,對股票的數據進行分析。一來對第一關和第二關的內容進行複習,二來對數據分析的流程,建立一個直觀感受,為後續升級打下基礎。
為了方便,整個行文按照如下幾個過程進行:
分析問題
什麼是GAFATA?
在李笑來《通往財富自由之路》的專欄中,首次提到GAFATA的概念。它表示的是GOOGLE,AMAZON,FACEBOOK,APPLE,TENCENT,ALIBABA六家互聯網巨頭的首字母的縮寫。這六家公司,就像房地產巨頭一樣,對整個互聯網形成了壟斷,在互聯網中,一旦出現一些新興的小公司,都會被這些巨頭吞併,從邏輯上講,只要不出大的漏洞,它們被顛覆的可能性幾乎為零。更要命的是,隨著互聯網的普及,互聯網的覆蓋人群範圍越來越大,就拿中國來說,2017年,3G,4G用戶的總數是9.78億,而微信搶佔了9.63億。
因為他們的擁有的資源豐富,用戶群龐大,特別是在人工智慧和大數據時代,他們的優勢會進一步彰顯。
為什麼要這幾家分析股票的數據?
通過分析這幾家的股票數據,可以更直觀的理解描述統計學裡面的重要統計概念。另外,通過分析這幾家的數據,了解去年一年的數據變化情況,為自己未來投資作為一個參考。畢竟我目前持有的是ALIBABA,TENCENT兩家的股票,FACEBOOK漲的太慢,就賣掉了。有數據支撐,才能真正的長期持有。
如何分析股票數據?
需要利用ANACONDA工具,安裝pandas 和
pandas-datareader 兩個庫,pandas集合了數據分析工具,pandas-datareader 集合了從互聯網數據包獲取工具。然後利用描述統計學裡面的概念如平均值,四分位數,標準差,標準分來來進行數據分析。準備工作
打開Anaconda
prompt 終端,輸入 activate py3 指令。 Py3 表示之前配置好的python3 環境。然後安裝 pandas 和 pandas-datareader 函數庫。由於pandas在第一次使用Anaconda 時作為測試,已經安裝,本次只安裝 pandas-datareader 函數庫。在 prompt 終端中輸入conda install pandas-datareader 命令,完成庫安裝。
Matplotlib工具使用來可視化這些數據,需要安裝函數庫。
安裝完畢就可以啟動jupyter notebook。
搜集數據
由於要獲取GOOGLE,AMAZON,FACEBOOK,APPLE,TENCENT,ALIBABA這六家公司的股票信息,因此需要先定義數據字典,採用公司的名詞作為鍵,對應的股票代碼為值。定義的字典如下所示:
gafataDict={谷歌:GOOG,亞馬遜:AMZN,Facebook:FB,蘋果:AAPL, 阿里巴巴:BABA,騰訊:0700.hk}
注意,獲取A股和港股的數據的方式與美股不同,需要加一個後綴,方式是:「股票代碼」+「對應股市」(港股為.hk,A股為.ss)。例如騰訊是港股是:http://0700.hk。
由於yaohoo的財經數據很不穩定,經常顯示網站打不開,懷疑是伺服器關閉了,也試了google,iex,amorningstart 等網站,也是不行。後來還是折回用yahoo 的網站,試了很多次,後來既然可以把數據連上了。
Pands_datareader數據導進來,需要一定的時間,在notebook上執行時,導數據時,它需要的時間比其它語句執行需要的時間長。具體狀態可以看旁邊的in[],狀態,如果是in[*]表示還在執行中,如果執行完成,in[n],n為某一行的的指令。
由於現在是2018年2月份,那麼我就想看2017年2月份到2018年2月份這一年的股票數據。在start的時間裡面,設定開始時間為:
start_date = 2017-02-02
為什麼不是 2017-02-01,因此默認起始減1。
導出來的數據,通過babaDf.head()指令查看前五行如下
對2017年2月1日到2018年2月1日,這一年的數據進行統計,抽象出頻數,均值,標準差,上界,下界,中位數,上四分位,下四分位。
頻數,在這裡表示股票的交易次數,在統計學中用n來表示。均值表示這一年,股票的平均價格,在統計中學中 來表示。計算公式是這一年股票的價格求和除以頻數。
Xi 表示每次交易的股票的價格。
標準差,用來衡量一個數據的波動程度。一般的公式是
它的單位,和被分析的數據單位保持一致。
上界,下界,是一組統計數據最大值和最小值,表示的這幾個集合的數據分布範圍。
四分位,為了防止異常數據的影響,講數據分成四等份,以4/n(如果不是整數,向上取整),作為這個四分位的下界,也就是下四分位數,3*n/4(如果不是整數,向上取整),為四分位的上界。
中位數,為數據集合中間的數據,取n/2,如果不為整,向上取整。
通過類似的辦法,獲取GOOGLE,AMAZON,FACEBOOK,APPLE,TENCENT的數據,這裡不再贅述,接下來進行數據分析。
數據分析
首先去計算2017年2月1日到2018年2月1日股票的漲跌。頂一個名叫change的函數,list列表作為變數。這個list列表記錄是從2017年2月1開始,收盤時的股票價格。column[0]表示的是第一個數據,column[-1]表示的是最後一個數據。用阿里巴的股票的進行計算,算得這一年的漲幅是89.25%。
調用babaDf.tail()函數,可以查看最後5組數據,我只關心最後一個收盤的股票的價格,手動驗證:
手動驗證正確,說明函數正確。按照類似的方法,計算另外幾支股票的漲幅,發現在計算騰訊股票時,輸出的結果是NAN。講騰訊的股票起始數據導出來看下,發現2017年2月1日,騰訊那天是停牌的。因此需要優化函數,將有問題的數據剔除,並進行計算。因此需要重新優化change函數。
添加一個isnan 函數用來判斷數據是否為NAN。
import mathdef change(column): #判斷數據是否為NAN #買入價格 if math.isnan(column[0]): buyPrice=column[1] else: buyPrice=column[0] #現在股價 #總共251條數據,序號是從0開始的,所以最後一條數據的序號是251-1 if math.isnan(column[-1]): curPrice=column[-2] else: curPrice=column[-1] ....如此修改,數據正確,可以計算騰訊的股票的漲幅。這六家的漲幅如下表所示序號 股票代碼 起始時間 結束時間 漲幅1 GOOG 2017年2月1日 2018年2月1日 46.75%2 AMZN 2017年2月1日 2018年2月1日 67%3 FB 2017年2月1日 2018年2月1日 44.93%4 AAPL 2017年2月1日 2018年2月1日 30.31%5 BABA 2017年2月1日 2018年2月1日 89.25%6 0700.hk 2017年2月2日 2018年2月1日 124.17% 年平均漲幅 67.07%
通過漲幅對比,騰訊在去年一年的漲幅達到124%,其次是89.25%,最低的漲幅也達到30.31%,平均漲幅是67.07%,這個巴菲特控股的公司伯克希爾哈撒韋的年化收益25%還有高。考慮到這幾家公司有超強的競爭力,他們就是最能吃的胖子,因此只要抱住這個胖子腿,長期持有它的股份,不管短期的漲跌,大概率上是能盈利的。
另外,還需要通過可視化來比較下這六家股市數據變化情況。
觀察數據,為了能夠更好看到數據變化趨勢,講谷歌,亞馬遜,騰訊放在一組比較(雖然騰訊股票單位是港幣,但是關注的是增長率)。
亞馬遜(綠線)的股票漲幅超過谷歌(藍線),但是數據變動比較大,標準差達到134.97。騰訊(紅線)的股票,也是呈現上漲的趨勢,因為股票的基數比亞馬遜,谷歌小,所有在一個坐標軸上,看起來它的波動比較小,實際上它的標準差達到74.62和谷歌的89還是比較接近。
通過上圖可以看到阿里巴巴是後來居上,在2017年8月至9月期間,直接就超過了,後續有震蕩,但是阿里巴巴的股價還是超過facebook和apple。總體上看,這三支股票保持著增長的趨勢。
總結問題通過對GAFATA六家股票價格進行分析,發現在過去的一年中阿里巴巴和騰訊兩家股票漲勢比較兇猛。由於這兩個是國內的公司,這個和他們在互聯網時代和人工智慧時代,採取的戰略有關。他們以絕對的優勢,滲透在中國的各行各業中,無論中線上還是線下,移動支付,移動通訊成為人們生活的一部分,並且是難以割捨的一部分。可以預期,未來相當長的一段時間內,他們還是會繼續保持壟斷的優勢。強者恆強,那就讓強者幫你掙錢。
推薦閱讀:
※Nesto - Hulu用戶分析平台的OLAP引擎
※kylin 同步問題的patch被採納
※優秀的數據分析師是解決方案提供者
※劉邦背後的數據分析師——蕭何
※學習Python,你需要掌握這些最少必要知識