如何去使用Python分析股票資料?學到就是賺到
對於炒股的同學來說,必須會看懂資料才能避免入坑。今天小千就來教大家如何去使用Python分析股票資料,學到就是賺到。(小千提醒,股市有風險,請謹慎投資)
這次的美股例子就選擇了美國顯示卡製造商英偉達,其股票程式碼是NVDA,熟悉英偉達的人都知道他們的CEO老黃(Jensen Huang),老黃有兩樣東西很出名,一是那件能穿4個季度的皮衣,二是精湛的顯示卡刀法。英偉達在老黃帶領下飛速發展,其股價也是一直飆升,所以選擇這個股票也是在近幾年美股中具有代表性的。
首先還是匯入各種庫。
這裡有一個不太常見的庫是yfinance,這是從Yahoo網站獲取資料的一個庫,其使用非常簡單,不需要相關api,同時也是免費的,而市場上其他不少庫都要api,很多還是收費的,同時還有很多限制,所以我們選用了yfinance作為資料來源。yfinance直接用pip安裝即可,筆者用的是anaconda,但用了conda安裝會失敗,最好還是用pip安裝。接下來是獲取資料。
yfinance下載的資料直接是pandas的dataframe格式,這裡我們只要輸入股票程式碼以及起止時間就可以了,後面的progress是進度條選項,最好關閉,否則下載好之後結果中會有一個進度條(影響也不大)。這裡我們下載英偉達過去5年的股票資料,從2015年1月1日到2019年12月31日。這裡有一個問題要注意,就是yfinance的資料獲取時間是提前1天的,比如設定起始時間start='2015-01-02',但最終得到的股票資料時間是從2015年1月1日開始的, 同樣截止時間end='2020-01-01'也就意味著資料的截止時間是2019年12月31日。下載之後的資料如下圖所示。
然後是資料處理。
上面這些步驟內容較多,在這裡詳細說明一下。從下載得到的資料中,我們選取Adj Close這一列,其全稱是adjusted close,意思是調整收盤價,這就是我們要用到的資料,將其改名為adj_close,然後用adj_close計算會計收益率(也稱簡單收益率),即simple returns,將其命名為s_r,方法是用後一天資料除以前一天資料,再減一,當然這裡用dataframe的pct_change方法也可以,得到的結果是一樣的。從前面圖2中我們可以看到得到的資料的時間是以天為單位的,但這些日期並不連續,中間有部分間斷,這是因為股票市場在週末等節假日不開盤,而這裡我們為了利用cpi來計算會計收益率,要設計一個連續時間範圍,所以這裡生成了一個名為df_dates的變數,其時間範圍是連續的,從2015年1月1日到2019年12月31日,讓其和df合併,得到的資料如下圖所示。這裡面NaN(not a number)都是節假日不開盤的日期。
因為要計算實際收益率,其中使用的cpi(onsumer price index,消費者物價指數)是以月為單位的,所以我們也要把df轉換成以月為單位,為了避免在每月最後一天是非開盤日,所以首先用了fillna方法,方式是'ffill',即按照前一日資料來填充,然後用asfreq('M')方法來得出每月最後一日的資料。很多人會問,這個每月最後一日的資料有什麼用,因為我們用到的cpi資料都是按月份來公佈的,每月只有一個cpi資料,所以我們計算會計收益率時也要按照月份來算,而每月會計收益率就是用這個月的最後一個交易日的調整收盤價除以上個月的最後一個交易日的調整收盤價,然後再減一,和前面每日會計收益率的計算方法一樣。然後用月份會計收益率和cpi來計算實際收益率。而我們這次所用到的cpi資料,其時間範圍從2015年1月至2019年12月,總共5年,這個資料可以從很多網站下載,直接到網上搜尋就行了。
讀取cpi資料之後透過cpi資料計算通貨膨脹率,即inflation rate,我們把這一列命名為inf_rate,方法和會計收益率一樣,接著再用通貨膨脹率計算實際收益率(Real Rate of Return),方法是(1+會計收益率)/(1+通貨膨脹率)-1,我們將其命名為r_r。最後得到的df資料如下圖所示。
最後就是資料視覺化。
這裡我們只要4列資料,即除了cpi之外的其他4列資料。將其置於4個子圖中,繪圖直接用dataframe的plot方法即可,在這裡我們選用了ggplot的繪圖主題。得到的結果如下圖所示。
從這裡我們也可以看到用pandas分析美股資料非常方便,但是隻掌握pandas的使用方法還是不夠的,我們還要具備相關的金融基礎知識,尤其是計量經濟學的相關基礎,因此在分析股票資料時最好還要有一定的經濟學基礎。所以在我們平時的業務工作當中,除了必要的程式設計技能以外,掌握相關的理論知識也是很重要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2766288/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用者引流該如何做 微信公眾號推廣這幾招知道就是賺到
- 股票策略的資料分析
- 如何輕鬆學習Python資料分析?Python
- Python資料分析從小白到高手的幾個步驟Python
- 【百萬獎金】平安銀行眾測活動開啟!挖到就是賺到!
- 如何將本地資料同步到 shopify 或 shopify 資料同步到本地
- 資料分析師之如何學好Python(四)Python
- 用 Python 分析 14 億條資料,就是那麼刺激!Python
- Python 股票分析入門Python
- 機器學習股票價格預測從爬蟲到預測-資料爬取部分機器學習爬蟲
- python資料分析-Anaconda使用Python
- 資料分析入門-導論-如何親手從0到1建立一個學科
- 從零到年賺百萬
- Python 爬取 baidu 股票市值資料PythonAI
- python爬取股票資料並存到資料庫Python資料庫
- 馳騁股市!手把手教你如何用Python和資料科學賺錢?Python資料科學
- 利用Tushare資料介面+pandas進行股票資料分析
- 使用Python分析大量資料應該學些什麼?Python
- 如何用python做資料分析Python
- python實現股票歷史資料析Python
- 資料庫連線分析(1)-從JDBC到MyBatis資料庫JDBCMyBatis
- Python 資料分析實戰——可轉債打新能賺錢嗎?Python
- 如何用Python進行資料分析?Python
- TDC 3.0 從資料分析到資料流通,資料雲擴充新場景
- 聊聊如何將資料同步到apollo配置中心
- 資料分析 | 零基礎入門資料分析(一):從入門到摔門?
- Python資料分析常用庫有哪些?Python學習!Python
- (資料科學學習手札161)高效能資料分析利器DuckDB在Python中的使用資料科學Python
- SQL資料同步到ElasticSearch(三)- 使用Logstash+LastModifyTime同步資料SQLElasticsearch
- 使用canal增量同步mysql資料庫資訊到ElasticSearchMySql資料庫Elasticsearch
- 小白學 Python 爬蟲(25):爬取股票資訊Python爬蟲
- 為什麼學習Python資料分析Python
- [譯] 使用 python 分析 14 億條資料Python
- 為什麼使用Python做資料分析?Python
- 如何用python分析xml獲取資料?PythonXML
- 如何使用Aimersoft Video Suite Mac將 DVD 燒錄到 ISO/DVD 資料夾AIIDEUIMac
- 資料分析之去哪兒酒店
- 【Python】將網格資料寫入到VTK檔案Python