




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
金融計算:基于Python
第2章Python科學計算【教學目的與要求】通過本章學習,結合習近平新時代中國特色社會主義經濟思想,講授Python的投資組合收益率和風險計算、最優投資組合的計算。【重點和難點】Python的最優投資組合的計算。【思政育人目標】將習近平新時代中國特色社會主義經濟思想融入到Python的的投資組合收益率和風險計算、最優投資組合的計算的學習中。【課程學習目標】掌握Python的投資組合收益率和風險計算、最優投資組合的計算。金融計算:基于Python2主要內容2.1.Python的數據類型2.2.數值分析庫numpy2.3.數據分析庫pandas金融計算:基于Python32.1. Python的數據類型2.1.1Python對象python使用對象模型來存儲數據,構造任何類型的值都是一個對象。對象可以是變量、數組、字符串、函數或結構。在Python中,對象是通過名字創建和保存的,都擁有三個特性:身份、類型、值。身份:每個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內置函數id()來得到。類型:對象的類型決定了該對象可以保存什么類型的值,可以進行什么樣的操作,以及遵循什么樣的規則。可以使用type()函數查看python對象的類型。type()返回的是對象而不是簡單的字符串。金融計算:基于Python42.1.2 Python數據的類型Python定義了一些標準類型,用于存儲各種類型的數據。Python有五個標準的數據類型:Numbers(數字)、String(字符串)、List(列表)、Tuple(元組)、Dictionary(字典)。金融計算:基于Python52.1.3 Python數據類型轉換內置的函數可以執行數據類型之間的轉換,這些函數返回一個新的對象,表示轉換的值。金融計算:基于Python6函數描述int(x[,base])將x轉換為一個整數long(x[,base])將x轉換為一個長整數float(x)將x轉換到一個浮點數complex(real[,imag])創建一個復數str(x)將對象x轉換為字符串repr(x)將對象x轉換為表達式字符串eval(str)用來計算在字符串中的有效Python表達式,并返回一個對象tuple(s)將序列s轉換為一個元組list(s)將序列s轉換為一個列表set(s)轉換為可變集合dict(d)創建一個字典。d必須是一個序列(key,value)元組。frozenset(s)轉換為不可變集合chr(x)將一個整數轉換為一個字符unichr(x)將一個整數轉換為Unicode字符ord(x)將一個字符轉換為它的整數值hex(x)將一個整數轉換為一個十六進制字符串oct(x)將一個整數轉換為一個八進制字符串屬性說明ndarray.ndim秩,即軸的數量或維度的數量ndarray.shape數組的維度,對于矩陣,n行m列ndarray.size數組元素的總個數,相當于shape中n*m的值ndarray.dtypendarray對象的元素類型ndarray.itemsizendarray對象中每個元素的大小,以字節為單位ndarray.flagsndarray對象的內存信息ndarray.realndarray元素的實部ndarray.imagndarray元素的虛部ndarray.data包含實際數組元素的緩沖區,由于一般通過數組的索引獲取元素,所以通常不需要使用這個屬性2.2. 數值分析庫numpynumpy提供了Python對多維數組對象的支持:ndarray,具有矢量運算能力,快速、節省空間。numpy支持高級大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。使用importnumpyasnp將numpy庫加載到內存中。金融計算:基于Python72.2.1.numpy.函數().ndim:維度,就是[]括號的層數;.shape:各維度的尺度,注意(x,y)表x行y列,(x,1)表x行1列,(y,)表1行y列;.size:元素的個數。與元素位于第幾層[]無關,表所有獨立的元素的總數;.dtype:元素的類型dtype(‘int32’);.itemsize:每個元素的大小,以字節為單位,每個元素占4個字節。金融計算:基于Python82.2.2. ndarray數組的創建np.arange(m,n):1行n-m列數組,元素從m到n-1;np.arange(n)或np.arange(n,):1行n列數組,元素從0到n-1.即不輸入m,則默認m=0;np.ones((m,n)):m行n列數組,元素全為1;np.ones(n)或np.ones(n,):1行n列數組,元素全為1,即不輸入m則默認m=1;np.zeros((m,n),dtype=32):生成int32型的全0,dtype參數可加可不加,上面幾個語句也是一樣;np.zeros((n,))或np.zeros(n,)或np.zeros((n))或np.zeros(n)默認m=1,1行n列數組注意np.zeros(m,n)會報錯,np.zeros(shape)參數shape必須是坐標形式(x,y),帶括號。np.full(shape,val):參數shape是坐標形式(x,y),元素全為val.若不輸入x則默認x=1;np.eye(n):生成單位矩陣,默認m=n;金融計算:基于Python92.2.3. 數組的維度變換.reshape(shape):不改變數組元素,根據shape重新組織行列。如1行4列reshape為2行2列、4行1列。3行2列等不合理的,會報錯。注意:三維數組維度順序為0,1,2,即z,y,x,即深度、高度、寬度,即層數、行、列。例:a=np.arange(24).reshape((3,4,2)),表3層4行2列。金融計算:基于Python102.2.4. 數組的類型變換數據類型的轉換:a.astype(new_type),a.astype(np.float),a.astype(float)。數組向列表的轉換:a.tolist(),注意[]層數不會改變,例如三維數組變成列表后,[]依然保留,只不過沒有數組行列形式了。金融計算:基于Python112.2.5.數組的素引和切片.一維數組索引.一維數組切片.多維數組素引.多維數組切片金融計算:基于Python122.2.6. 數組的簡單運算np.abs(a)和np.fabs(a):取各元素的絕對值,fabs()取絕對值并使成為float類型。np.sqrt(a):計算各元素的平方根。np.square(a):計算各元素的平方。np.log(a)np.log10(a)np.log2(a):計算各元素的自然對數、10、2為底的對數。np.ceil(a)np.floor(a):計算各元素的ceiling值,floor值(ceiling向上取整,floor向下取整)。np.rint(a):各元素四舍五入。對于負數元素,先取其絕對值進行四舍五入,然后再加負號。例如-1.5變成-2,-1.4變成-1np.modf(a):將數組各元素的小數和整數部分以兩個獨立數組形式返回。np.exp(a):計算各元素的指數值。np.sign(a):計算各元素的符號值1(+),0,-1(-)。np.maximum(a,b)或np.fmax():a,b數組具有相同的形式,一一比較相應位置處的元素取大者,fmax()取最大值并使成為float類。np.minimum(a,b)或np.fmin():同上,取最小值。a,b形式不同,則會報錯。金融計算:基于Python132.2.7.數據存取,存儲到bxt文件.存儲到.npy文件.存儲到.npz文件.多維數據存取金融計算:基于Python142.2.8. numpy隨機數函數注意numpy.random子庫和獨立的random庫不是同一個庫。numpy.random子庫主要產生隨機數作為多維數組的元素,而random獨立庫單純產生隨機數,因此二者盡管有很多同名的隨機數產生方式,但numpy.random一般會多一個shape數組維度參數np.random.rand(d0,d1,…,dn):d0到dn指定各維度結構,如rand(3,4,5)表3層4行5列三維數組。各元素是[0,1)的浮點數,服從均勻分布np.random.randn(d0,d1,…,dn):d0到dn含義同上。元素服從標準正態分布。np.random.randint(d0,d1,…,dn):d0到dn含義同上。元素服從t分布。randint(low,high,shape):依shape創建隨機整數或整數數組,范圍是[low,high)。金融計算:基于Python152.2.9. numpy的統計函數sum(a,axis=None):依給定軸axis計算數組a相關元素之和,axis為整數或者元組。mean(a,axis=None):同理,計算平均值。average(a,axis=None,weights=None):依給定軸axis計算數組a相關元素的加權平均值。std(a,axis=None):同理,計算標準差。Var(a,axis=None):計算方差。注意:以上axis參數可選0,1,2表示分別在相應方向上操作。如果不填,則表示對數組中全部元素操作。金融計算:基于Python162.2.10.圖像的表示和變換圖像實際是一個二維數組,numpy結合pythonPIL(pythonimagelibrary)庫常使用與圖像處理fromPILimportImage#Image是PIL庫中代表一個圖像的類(對象)im=np.array(Image.open(“.jpg”))im=Image.fromarray(b.astype(‘uint8’))#生成im.save(“路徑.jpg”)#保存im=np.array(Image.open(“.jpg”).convert('L'))#convert(‘L’)表示轉為灰度圖金融計算:基于Python172.2.11. 數組的運算numpy.dot()函數用于數組相乘,使用dot()函數的寫法,有兩種:dot()函數可以通過numpy庫調用,也可以由數組實例對象進行調用。a.dot(b)與numpy.dot(a,b)#a,b是數組(矩陣)dot()返回的是兩個數組的點積(dotproduct)若a和b是一維數組,則得到的是兩數組的內積(innerproduct)金融計算:基于Python182.3. 數據分析庫pandaspandas含有使數據清洗和分析工作變得更快更簡單的數據結構和操作工具,雖然pandas采用了大量的NumPy編碼風格,但pandas是專門為處理表格和混雜數據設計的,而NumPy更適合處理統一的數值數組數據。使用importpandasaspd將pandas庫加載到內存中。金融計算:基于Python192.3.1. pandas數據結構pandas是基于NumPy的一種工具,該工具是為了解決數據分析任務而創建的。pandas的數據結構:Series:一維數組,與Numpy中的一維ndarray類似。Time-Series:以時間為索引的Series。DataFrame:二維的表格型數據結構,可以理解為Series的容器。Panel:三維的數組,可以理解為DataFrame的容器。金融計算:基于Python202.3.2. pandasy序列Series是一維標簽數組,能夠容納任何類型的數據(整數、字符串、浮點數、python對象等),軸標簽統稱為索引。Pandas序列構造函數:pandas.Series(data,index,dtype,copy)data是數據采用各種形式,如ndarray、列表、常量;index,索引值必須是唯一可散列的,與數據長度相同,如果沒有索引被傳遞,則默認為**np.arrange(n)**;dtype,用于數據類型,如果沒有,則會推斷數據類型;copy,復制數據,默認為False。金融計算:基于Python212.3.3. DataFrameDataFrame是一種二維數據結構,即數據按行和列的表格方式排列。函數:pandas.DataFrame
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中醫基礎理論考試試題及答案
- 制氧管理面試題及答案
- 2025年環境與資源保護法律法規考試試題及答案
- 2025年財務報表分析與解讀考試試題
- 數據工程師面試題及答案
- 科目四貴州試題及答案
- 烏龜人性測試題及答案
- 零售業店面運營管理合同
- 軟件設計師考試實踐項目的重要性試題及答案
- 機電工程學習中常見問題與試題及答案
- 2025年體彩應聘考試試題及答案
- GB/T 19228.1-2024不銹鋼卡壓式管件組件第1部分:卡壓式管件
- 運動技能學習與控制課件第二章運動中的信息加工
- 旋元佑字源大挪移歸類整理
- 《教師禮儀》課程教學大綱
- 卡通風青春畢業季PPT模板課件
- 心電監護課件精品PPT課件
- 具有車架結構車輛的怠速震動分析外文文獻翻譯、中英文翻譯
- 上公司人力資源管理制度非常全面
- summer-vibe-的中英歌詞
- 天津友發鋼管集團有限公司鋼管
評論
0/150
提交評論