當前位置:
首頁 > 最新 > AI量化:Python基礎

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領域
Python如何自動下載文件

TAG:Python |