《Python金融數(shù)據(jù)挖掘》課件第6章_第1頁
《Python金融數(shù)據(jù)挖掘》課件第6章_第2頁
《Python金融數(shù)據(jù)挖掘》課件第6章_第3頁
《Python金融數(shù)據(jù)挖掘》課件第6章_第4頁
《Python金融數(shù)據(jù)挖掘》課件第6章_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Python金融數(shù)據(jù)挖掘 高等教育出版第六章數(shù)據(jù)源處理Python金融數(shù)據(jù)挖掘 高等教育出版第六章數(shù)據(jù)源處理【知識框架圖】數(shù)據(jù)源與處理網絡數(shù)據(jù)源Pandas 內置接口Seaborn 內置接口網絡爬蟲正則表達式urllib模塊擴展文件訪問文本文件訪問Access數(shù)據(jù)庫文件訪問【知識框架圖】數(shù)據(jù)源網絡數(shù)據(jù)源Pandas 內置接口Seab目錄Contents第一節(jié)網絡數(shù)據(jù)源第二節(jié)網頁爬蟲第三節(jié)文件數(shù)據(jù)資源第四節(jié)案例目錄Contents第一節(jié)網絡數(shù)據(jù)源第二節(jié)網頁爬蟲第三節(jié)文件本章學習目標1用Python擴展包內置網絡數(shù)據(jù)源獲取函數(shù)搜集金融數(shù)據(jù)的方法。2利用Pandas內置函數(shù)讀取文本文件和Access

2、數(shù)據(jù)庫文件的方法。3網絡爬蟲的基本應用。本章學習目標1用Python擴展包內置網絡數(shù)據(jù)源獲取函數(shù)搜需求背景數(shù)據(jù)使用現(xiàn)狀:數(shù)據(jù)規(guī)模急劇膨脹,數(shù)據(jù)類型顯著增多,數(shù)據(jù)結構日趨復雜。常見需求場景:Python擴展包中內建的網絡數(shù)據(jù)源獲取功能來搜集數(shù)據(jù)Pandas讀寫文本文件Access數(shù)據(jù)庫mdb文件訪問需求背景數(shù)據(jù)使用現(xiàn)狀:01網絡數(shù)據(jù)源01網絡數(shù)據(jù)源本節(jié)以Pandas為例介紹網絡數(shù)據(jù)源訪問功能。舊版Pandas是通過pandas.io.data子模塊獲取網絡數(shù)據(jù)源。新版Pandas已將該子模塊獨立成pandas_datareader包,須單獨安裝。安裝命令:pip install pandas-d

3、atareaderpandas_datareader目前可訪問的網絡數(shù)據(jù)服務商主要包括:Yahoo! Finance(雅虎金融)、Google Finance(谷歌金融)、Enigma(Enigma公共數(shù)據(jù)搜索的提供商)、World Bank(世界銀行)、OECD(經合組織)、Eurostat(歐盟統(tǒng)計局)、Nasdaq Trader symbol definitions(納斯達克)等。本節(jié)以Pandas為例介紹網絡數(shù)據(jù)源訪問功能。【例 6 -1】是一個利用yahoo財經數(shù)據(jù)源查詢股票的程序:第9行用于顯示輸入提示框以提示用戶輸入股票代碼,其格式為“交易市場的正式股票代碼.市場名稱縮寫”,如0

4、00001.ss表示上海證券交易所的指數(shù)代碼。第12行調用get_data_yahoo()方法獲取指定的股票交易數(shù)據(jù),其返回結果存放到DataFrame對象stock_info中【例 6 -1】是一個利用yahoo財經數(shù)據(jù)源查詢股票的程序輸出結果:輸出結果:【例 6 -2】以titanic.csv為例說明Seaborn數(shù)據(jù)源的使用方法,并進行了統(tǒng)計分析。Seaborn數(shù)據(jù)源也是數(shù)據(jù)分析的重要數(shù)據(jù)源,通過load_dataset()方法可以訪問以下各類數(shù)據(jù)文件:anscombe.csv、attention.csv、brain_networks.csv、car_crashes.csv、diamon

5、ds.csv、dots.csv、exercise.csv、flights.csv、fmri.csv、gammas.csv、iris.csv、mpg.csv、planets.csv、tips.csv以及titanic.csv等。例如,load_dataset(titanic.csv),就可以獲取泰坦尼克號的乘客信息,其中包括他/她們的性別、艙位、票價、是否獲救等字段。【例 6 -2】以titanic.csv為例說明Seabor第15行語句將titanic數(shù)據(jù)庫載入到PasTit中。隨后的語句按照乘客性別和船票價格對乘客的生存情況進行了分析。乘客中女性生還率遠高于男性;圖表顯示低票價乘客在遇難者和

6、生還者中都占據(jù)較大比例,但同時顯示低票價乘客的遇難者比例高于生還者。第15行語句將titanic數(shù)據(jù)庫載入到PasTit中。隨后輸出結果:第15行語句將titanic數(shù)據(jù)庫載入到PasTit中。隨后的語句按照乘客性別和船票價格對乘客的生存情況進行了分析。乘客中女性生還率遠高于男性;圖 6-2顯示低票價乘客在遇難者和生還者中都占據(jù)較大比例,但同時顯示低票價乘客的遇難者比例高于生還者。輸出結果:第15行語句將titanic數(shù)據(jù)庫載入到PasTi圖 6-2圖 6-2Tushare除了上述兩種數(shù)據(jù)源,互聯(lián)網還有一些收費或者免費的數(shù)據(jù)資源,讀者可以利用搜索引擎以“網絡數(shù)據(jù)接口”為關鍵字進行查詢了解這些數(shù)

7、據(jù)源的獲取方法。特別值得一提的是,目前國內Tushare金融大數(shù)據(jù)社區(qū)/為注冊用戶提供了Python訪問接口。用戶可以通過該接口訪問滬深股票行情數(shù)據(jù)、上市公司財務數(shù)據(jù)、期貨、外匯、行業(yè)經濟、宏觀經濟、新聞資訊(包括新聞聯(lián)播文字稿)等海量金融聚合大數(shù)據(jù)。為Python金融數(shù)據(jù)挖掘的學習者、研究者和從業(yè)者提供了一個極具價值的數(shù)據(jù)源。Tushare02網頁爬蟲02網頁爬蟲網頁爬蟲(又被稱為網頁蜘蛛、網絡機器人)是一種按照一定的規(guī)則自動抓取互聯(lián)網信息的程序或腳本。它的基本設計思想是從某一初始頁面開始分析網頁內容,如果是符合預設目標的內容則搜集存儲;如果是url鏈接則繼續(xù)訪問該鏈接地址的內容。網頁爬蟲起

8、始頁面訪問開始,依次經過內容分析、數(shù)據(jù)采集、進入新鏈接等階段,不斷循環(huán)直到滿足終止條件時才停止搜索。網頁爬蟲(又被稱為網頁蜘蛛、網絡機器人)是一種按照一定的規(guī)則【例 6-3】直接使用Python內置的urllib包和re包,對微軟“Bing搜索”首頁頁面上所有超級鏈接進行搜索:第6行將站點地址賦給target變量。第8行將target所代表的網址傳遞給urllib.request.urlopen(target).read()進行讀取訪問操作,并且將讀取到的內容放入content。第10行按照utf-8編碼格式對content內容進行解碼。第12-14行使用正則表達式(規(guī)則)提取content中

9、所有的網址內容?!纠?6-3】直接使用Python內置的urllib包和re輸出結果(部分):輸出結果(部分):正則表達式正則表達式,又稱正規(guī)表示式、正規(guī)表示法、正規(guī)表達式、規(guī)則表達式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)。簡單地講,正則表達式就是構成或者分解字符串的規(guī)則。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串。很多文本編輯器通常利用正則表達式實現(xiàn)檢索、替換那些符合某個模式的文本。正則表達式【例 6-4】說明了正則表達式的基本作用。假設網頁中有包含0086-20-37215850 # 這是一個帶國際

10、長途區(qū)號的電話號碼文本內容。利用Python的re正則表達式包就可以提取這串文本中的電話號碼,并刪除多余的符號和文字。第一個cell刪除phone字符串中#以后的全部內容。第二個cell第2行使用D表示所有的非數(shù)字字符,該語句的作用將phone中剩下的非數(shù)字符號全部刪除。正則表達式的主要作用是規(guī)定各種字符的表達、結合以及邏輯關系?!纠?6-4】說明了正則表達式的基本作用。假設網頁中有包含Python的re包中常用的正則表達式元字符和語法如表 6 -1所示。Python的re包中常用的正則表達式元字符和語法如表 6 正則表達式的應用非常靈活,建議讀者參閱更多書籍,如正則表達式30分鐘入門教程等相

11、關教程。在Python開發(fā)環(huán)境中除了自帶的urllib之外,常見的第三方爬蟲框架模塊還包括Scrapy和Pyspider。讀者可以參考相應的官方網站學習這些框架的使用方法:/ /en/latest/ 此外,目前也有一些比較實用的網絡爬蟲工具,例如圖 6 3所示的八爪魚爬蟲軟件。這一類軟件往往預制了主要網站的爬蟲模板,用戶只要填寫期望搜集內容的關鍵字,爬蟲工具就可以執(zhí)行爬取任務,其爬取結果以Excel或者CSV格式保存。讀者可以訪問/網站參閱詳細的使用教程。正則表達式的應用非常靈活,建議讀者參閱更多書籍,如正則表達03文件數(shù)據(jù)資源03文件數(shù)據(jù)資源在金融數(shù)據(jù)挖掘工作中,通常將數(shù)據(jù)讀入到DataFr

12、ame對象中來處理。Pandas的read_csv()、pd.read_excel()和to_excel()等方法可以實現(xiàn)過對csv和excel文件的讀寫訪問,實現(xiàn)DataFrame對象與文件的數(shù)據(jù)交互。截至本書編寫的時間,Pandas 0.23.4 版本可以直接調用其內置方法處理的文件格式包括:Picking(Pandas對象文件)Flat File(包括csv)Clipboard(剪貼板)ExcelJSONHTML、HDFStore、Feather、Parquet、SAS、SQL、Google BigQuery及STATA等。在金融數(shù)據(jù)挖掘工作中,通常將數(shù)據(jù)讀入到DataFrame對象文本

13、文件Python文件讀寫操作的基本流程是:打開文件獲得文件對象;將文件對象賦給一個變量;通過這個變量對文件內的數(shù)據(jù)進行讀寫操作。文本文件【例 6-5】以對存放2維數(shù)據(jù)的txt文本與NumPy數(shù)據(jù)對象進行讀寫操作為例來說明文件訪問方法。讀入的文件Exp04_file01.txt內容如圖 6-4左側所示。寫入的文件Exp04_file01_out.txt內容如圖 6-4右側所示。圖 6-4 文件讀取與寫入【例 6-5】以對存放2維數(shù)據(jù)的txt文本與NumPy數(shù)據(jù)對方法一:讀入文件Exp04_file01.txt方法一:讀入文件Exp04_file01.txt方法二:讀入文件Exp04_file01

14、.txt方法二:讀入文件Exp04_file01.txt利用讀入的數(shù)據(jù)做數(shù)學運算。利用讀入的數(shù)據(jù)做數(shù)學運算。將NewArr保存到新文件第2行通過調用open函數(shù)打開文本文件,open函數(shù)的第1個參數(shù)用于指定被打開的文件路徑,第2個參數(shù)為文件的打開方式控制符。第7-9行np.savetxt()函數(shù)接收的參數(shù)包括:寫入數(shù)據(jù)的文件名Exp04_file01_out.txt;寫往該文件的數(shù)據(jù)對象是NewArr;每一行的寫入格式是由逗號分隔delimiter=,的兩個浮點數(shù)fmt=%f,%f,指定換行符newline=n;給文件加上文件頭header=Xaxis Yaxis和文件腳footer=Made

15、 in GDUF。為了正確顯示輸出文件的換行效果,建議使用UltraEdit、Notepad+等文本編輯軟件查看。將NewArr保存到新文件第2行通過調用open函數(shù)打開文本Open函數(shù)的打開方式控制符有多種形式,如表 6 2所示。Open函數(shù)的打開方式控制符有多種形式,如表 6 2所示。數(shù)據(jù)庫文件利用Python的pypyodbc包可以方便地訪問數(shù)據(jù)庫,使用前須執(zhí)行pip install pypyodbc命令安裝pypyodbc包。為確保Python在訪問Access數(shù)據(jù)庫時正常加載Access驅動程序,Access數(shù)據(jù)庫軟件與Access驅動程序的版本必須一致,即要么都是32位版本,要么都

16、是64位版本。請參閱頁面/en-us/download/details.aspx?id=13255的提示信息,選擇合適的驅動程序版本。數(shù)據(jù)庫文件設有Access工資數(shù)據(jù)庫文件Exp04.mdb,其中有一數(shù)據(jù)表t1存放了員工工資信息,t1的字段名及記錄如圖 6-5所示。圖 6-5 Access工資數(shù)據(jù)庫設有Access工資數(shù)據(jù)庫文件Exp04.mdb,其中有一數(shù)【例 6-6】以訪問Access數(shù)據(jù)庫為例演示數(shù)據(jù)庫訪問的操作方法。第4行構造了一個數(shù)據(jù)庫連接字符串str,在第6行將連接字符串作為pypyodbc.win_connect_mdb()函數(shù)的參數(shù),db變量是打開的數(shù)據(jù)庫對象。Curser游

17、標可以執(zhí)行SQL語句,本例執(zhí)行select * from t1語句,從數(shù)據(jù)表t1中查詢所有記錄?!纠?6-6】以訪問Access數(shù)據(jù)庫為例演示數(shù)據(jù)庫訪問的操讀取所有記錄第2行則使用curser.fetchall()取出所有數(shù)據(jù)放入result中,后續(xù)語句分別輸出result中的所有記錄和每條記錄中索引號(從0開始計數(shù))為2的字段值,即EmpName的值。讀取所有記錄第2行則使用curser.fetchall()取【例 6-7】是實現(xiàn)數(shù)據(jù)庫增、刪、改、查等訪問操作的Python程序(以工資數(shù)據(jù)庫中的數(shù)據(jù)表t1為例)。程序見右顯示:說明見下面黃色框里面的內容:為了便于代碼復用,In13: 的22-

18、55行將增、刪、改、查基本操作封裝成函數(shù)以便在main()函數(shù)中調用。使用Python異常處理機制try捕捉數(shù)據(jù)庫訪問期間可能出現(xiàn)的異常?!纠?6-7】是實現(xiàn)數(shù)據(jù)庫增、刪、改、查等訪問操作的Pyth程序繼續(xù):程序繼續(xù):程序繼續(xù):程序繼續(xù):程序繼續(xù):程序繼續(xù):輸出結果(部分):輸出結果(部分):04案例04案例【例 6-8】利用pandas_datareader獲取世界銀行網站提供的中國、韓國、墨西哥等三國的人均GDP數(shù)據(jù),并且作圖對比。【例 6-8】利用pandas_datareader獲取世界輸出結果(部分):第23-24行在download函數(shù)的參數(shù)中分別指定了讀取的數(shù)據(jù)指標、國別和起止年份。使用Pandas存放數(shù)據(jù),采用Matplotlib繪制圖形(如圖6-6所示)。圖 6 6 Pandas_datareaders讀取GDP信息輸出結果(部分):第23-24行在download函數(shù)的參數(shù)通過pandas_datareader.wb訪問世界銀行的數(shù)據(jù)接口,其使用細節(jié)請參閱:https:/pandas-datareader.readthed

溫馨提示

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

評論

0/150

提交評論