用數據來一窺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)。例如騰訊是港股是: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來表示。均值表示這一年,股票的平均價格,在統計中學中 mu 來表示。計算公式是這一年股票的價格求和除以頻數。

mu=frac{sum_{1}^{n}{Xi}}{n}

Xi 表示每次交易的股票的價格。

標準差,用來衡量一個數據的波動程度。一般的公式是 sigma=sqrt{frac{sum_{1}^{n}{(Xi-mu})^{2}}{n}}

它的單位,和被分析的數據單位保持一致。

上界,下界,是一組統計數據最大值和最小值,表示的這幾個集合的數據分布範圍。

四分位,為了防止異常數據的影響,講數據分成四等份,以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還是比較接近。

阿里巴巴,apple,facebook股票走勢圖

通過上圖可以看到阿里巴巴是後來居上,在2017年8月至9月期間,直接就超過了,後續有震蕩,但是阿里巴巴的股價還是超過facebook和apple。總體上看,這三支股票保持著增長的趨勢。

總結問題

通過對GAFATA六家股票價格進行分析,發現在過去的一年中阿里巴巴和騰訊兩家股票漲勢比較兇猛。由於這兩個是國內的公司,這個和他們在互聯網時代和人工智慧時代,採取的戰略有關。他們以絕對的優勢,滲透在中國的各行各業中,無論中線上還是線下,移動支付,移動通訊成為人們生活的一部分,並且是難以割捨的一部分。可以預期,未來相當長的一段時間內,他們還是會繼續保持壟斷的優勢。強者恆強,那就讓強者幫你掙錢。


推薦閱讀:

Nesto - Hulu用戶分析平台的OLAP引擎
kylin 同步問題的patch被採納
優秀的數據分析師是解決方案提供者
劉邦背後的數據分析師——蕭何
學習Python,你需要掌握這些最少必要知識

TAG:大數據分析 | 股票分析 |