AI量化:Python基礎
大數據、人工智慧時代,python是最好的高級程序開發語言,沒有之一。
生態的豐富性,對於數組,矩陣類型數據的友好性都讓其它語言望塵莫及。
本章主要介紹一些基礎結構,它不構成一個完成的入門教程,但針對至少有一門程序開發語言功底的工程師,轉型做量化投資,是肯定夠用了。
python數據類型與結構
與所有的高級程序開發語言類似,python也內置了自己的基礎數據類型和數據結構。基礎的數據包括int(整型),float(浮點型)以及string字元串。基礎數據結構包括list(列表),tuple(元組),dict(字典)以及set(集合)。
上述三種數據類型和四種數據結構,已經可以滿足大部分python程序開發的使用。這也是為什麼python上手非常容易的原因。
本章重點介紹這七種數據類型的使用。
整數
整數是程序開發里的常用數據類型。
>>> a = 666
>>> type(a)
type函數是python內建函數,可以查看對象或類的類型信息,可以看到,我們給a賦值666,python解釋器會將它識別為int類型。這裡需要注意的是,python是解釋型語言,不需要指明類型,解釋器在運行時會自行判定;另外,python里所有的類型都是class,它是完全面向對象的語言。
浮點型
程序開發里,我們使用浮點數float類型來表現小數,比如1.25,或者888.0。
>>> a = 888.0
>>> type(a)
在python3里,整數相除,結果會自動變成浮點型。
>>> type(1 / 4)即使結果是整數
>>> type(6 / 2)
字元串
對於一個程序設計語言,要處理的目標,除了數字(整形、浮點型)之外,很重要的就是文本數據。文本數據在python是字元串(string)。
>>> str = "python人工智慧在量化投資里的應用。"
>>> str,type(str)("python人工智慧在量化投資里的應用。", )
使用單引號或雙引號表示均可,如無特彆強調,本書字元串均使用單引號。同時大家可以看到,python3統一使用unicode編碼表示python字元串,直接使用中文不會出現亂碼,這也是為何強烈建議大家使用python3的原因。
字元串有內建的查找,連接,去除空格等強大的功能,結果內建的re包(正則表達式),可以實現強大的文本處理功能。但是在金融的應用里,我們主要是對金融時間序列進行操作,這裡就不對文本處理展開介紹。
列表
Python內建的三種數據類型非常簡單,它的四種數據結構,使用也非常容易。 列表(list)可以存放一組對象,對象類型可以一樣,也可以不一樣。列表在金融程序開發里,使用頻率很高。
data = ["ai",8848,666.8,["a",1]] len(data) 4type(data)
使用內建的len函數,可以查看列表、元組等數據結構的長度。可以看出,data的長度是4,也就是列表包含4個元素,類型為list。 我們可以為使用append函數為list添加一個元素,這時候元素會添加到列表尾部。
>>> data.append("hello python量化")
>>> data["ai", 8848, 666.8, ["a", 1], "hello python量化"]
當然我們可以打元素插入到指定位置,使用insert函數,insert多 一個參數是下標,表明要插入到哪個位置,這裡需要注意的是python的下標也是從0開始的。
["ai", 8848, 666.8, ["a", 1], "hello python量化"]
>>> data.insert(1,"在1的位置插入這個字元串")
>>> data["ai", "在1的位置插入這個字元串", 8848, 666.8, ["a", 1], "hello python量化"]
使用remove函數,我們可以刪除指定的列表元素。
["ai", "在1的位置插入這個字元串", 8848, 666.8, ["a", 1], "hello python量化"]
>>> data.remove(8848)>>> data["ai", "在1的位置插入這個字元串", 666.8, ["a", 1], "hello python量化"]
細心的讀者可能會問,如果要刪除的元素不存在呢?這時候程序會拋異常,所以刪除元素之前,需要確保元素存在。使用下標刪除則是更好的方式,就是列表的pop函數。
["ai", "在1的位置插入這個字元串", 666.8, ["a", 1], "hello python量化"]
>>> data.pop(1)"在1的位置插入這個字元串">>> data["ai", 666.8, ["a", 1], "hello python量化"]
使用pop函數成功把下標為1的元素刪除了。
使用切片操作,可以直接修改列表指定位置的元素。
>>> data[["a", 1], "hello python量化"]
>>> data[1] = "hello python">>> data[["a", 1], "hello python"]
同樣,使用切片,可以輕鬆訪問指定位置的元素。
>>> data[["a", 1], "hello python"]
>>> data[0]["a", 1]
字典
字典是一種key,value的窗口模型,可以存儲任意類型的數據。
>>> dict = {"key1":"value1",1:123,2:"888"}
>>> dict{"key1": "value1", 1: 123, 2: "888"}
增加/修改元素:
>>> dict["key2"]=2
>>> dict{"key1": "value1", 1: 123, 2: "888", "key2": 2}
如果key已經存在,則會覆蓋原值。
>>> dict["key2"]=3
>>> dict{"key1": "value1", 1: 123, 2: "888", "key2": 3}
刪除元素 使用系統內置的del函數,刪除指定key。
>>> del dict["key1"]
>>> dict
訪問元素: 直接使用key訪問元素。
>>> dict["key2"]3
循環遍曆數據,字典提供兩個函數,一個是.keys()返回key的列表,另一個是.items(),返回的是value的列表:
>>>forkeyindict.keys(): print(key,dict[key]) 1 1232 888key2 3
集合
python的集合set,set與列表類似的地方在於,它也是一堆元素的合集,元素的類型可以是任意。與列表的區別在於,元素不可重複,就相當於是列表的排重,同時set里的元素是無序的。
>>> list = ["a","b","c","d","a",1,1]
>>> list["a", "b", "c", "d", "a", 1, 1]
>>> set(list){"c", 1, "b", "d", "a"}
正因為set元素是無序的,所以set不可以通過下標切片方式訪問元素。可以通過in來判斷元素是否在集合中,如果元素存在,則返回True,否則返回False。
>>> "a"insetTrue
>>> "z"insetFalse
元組
Python的元組與列表類似,不同之處在於元組的元素不能修改。
元組使用小括弧,列表使用方括弧。
元組創建很簡單,只需要在括弧中添加元素,並使用逗號隔開即可。
>>> tup1 = ("hello","world",1,2,1,3)
>>> tup1("hello", "world", 1, 2, 1, 3)
>>> tup1[-1]3
關於作者:魏佳斌,互聯網產品/技術總監,北京大學光華管理學院(MBA),特許金融分析師(CFA),資深產品經理/碼農。偏愛python,深度關注互聯網趨勢,人工智慧,AI金融量化。致力於使用最前沿的認知技術去理解這個複雜的世界。AI量化開源項目:
https://github.com/ailabx/ailabx
※Python編程語言學習得怎麼樣,看你是否正真入行Python領域
※Python如何自動下載文件
TAG:Python |