大數(shù)據(jù)的Python基礎(chǔ)課件第10章numpy與pandas基礎(chǔ)_第1頁
大數(shù)據(jù)的Python基礎(chǔ)課件第10章numpy與pandas基礎(chǔ)_第2頁
大數(shù)據(jù)的Python基礎(chǔ)課件第10章numpy與pandas基礎(chǔ)_第3頁
大數(shù)據(jù)的Python基礎(chǔ)課件第10章numpy與pandas基礎(chǔ)_第4頁
大數(shù)據(jù)的Python基礎(chǔ)課件第10章numpy與pandas基礎(chǔ)_第5頁
已閱讀5頁,還剩113頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第10章 numpy與pandas基礎(chǔ)1本章學(xué)習(xí)目標(biāo)熟練掌握numpy數(shù)組運算與矩陣運算理解pandas的Series和DataFrame結(jié)構(gòu)熟練掌握pandas讀取不同類型數(shù)據(jù)的方法熟練掌握pandas訪問和修改數(shù)據(jù)的方法熟練掌握缺失值處理方法熟練掌握重復(fù)值處理方法熟練掌握異常值處理方法210.1 numpy數(shù)組運算與矩陣運算基礎(chǔ)Python擴展庫numpy支持N維數(shù)組運算、處理大型矩陣、成熟的廣播函數(shù)庫、矢量運算、線性代數(shù)、傅里葉變換、隨機數(shù)生成,并可與C+/Fortran語言無縫結(jié)合。310.1.1 數(shù)組生成與常用操作(1)生成數(shù)組 np.array(1, 2, 3, 4, 5) #把列

2、表轉(zhuǎn)換為數(shù)組array(1, 2, 3, 4, 5) np.array(1, 2, 3, 4, 5) #把元組轉(zhuǎn)換成數(shù)組array(1, 2, 3, 4, 5) np.array(range(5) #把range對象轉(zhuǎn)換成數(shù)組array(0, 1, 2, 3, 4) np.array(1, 2, 3, 4, 5, 6) #二維數(shù)組array(1, 2, 3, 4, 5, 6) np.arange(8) #類似于內(nèi)置函數(shù)range()array(0, 1, 2, 3, 4, 5, 6, 7) np.arange(1, 10, 2)array(1, 3, 5, 7, 9)410.1.1 數(shù)組生成與

3、常用操作 np.linspace(0, 10, 11) #等差數(shù)組,包含11個數(shù)array( 0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.) np.linspace(0, 10, 11, endpoint=False) #不包含終點array( 0. , 0.90909091, 1.81818182, 2.72727273, 3.63636364, 4.54545455, 5.45454545, 6.36363636, 7.27272727, 8.18181818, 9.09090909) np.logspace(0, 100, 10) #相當(dāng)于10*

4、np.linspace(0,100,10)array(1.00000000e+000, 1.29154967e+011, 1.66810054e+022, 2.15443469e+033, 2.78255940e+044, 3.59381366e+055, 4.64158883e+066, 5.99484250e+077, 7.74263683e+088, 1.00000000e+100) np.logspace(1,6,5, base=2) #相當(dāng)于2 * np.linspace(1,6,5)array( 2., 4.75682846, 11.3137085 , 26.90868529, 6

5、4. ) np.zeros(3) #全0一維數(shù)組array( 0., 0., 0.)510.1.1 數(shù)組生成與常用操作 np.ones(3) #全1一維數(shù)組array( 1., 1., 1.) np.zeros(3,3) #全0二維數(shù)組,3行3列array( 0., 0., 0., 0., 0., 0., 0., 0., 0.) np.zeros(3,1) #全0二維數(shù)組,3行1列array( 0., 0., 0.) np.zeros(1,3) #全0二維數(shù)組,1行3列array( 0., 0., 0.) np.ones(3,3) #全1二維數(shù)組array( 1., 1., 1., 1., 1

6、., 1., 1., 1., 1.)610.1.1 數(shù)組生成與常用操作 np.ones(1,3) #全1二維數(shù)組array( 1., 1., 1.) np.identity(3) #單位矩陣array( 1., 0., 0., 0., 1., 0., 0., 0., 1.) np.identity(2)array( 1., 0., 0., 1.) np.empty(3,3) #空數(shù)組array( 0., 0., 0., 0., 0., 0., 0., 0., 0.)710.1.1 數(shù)組生成與常用操作 np.hamming(20) #Hamming窗口array(0.08 , 0.1049240

7、7, 0.17699537, 0.28840385, 0.42707668, 0.5779865, 0.7247799 , 0.85154952, 0.94455793, 0.9937262 , 0.9937262, 0.94455793, 0.85154952, 0.7247799 , 0.5779865 , 0.42707668, 0.28840385, 0.17699537, 0.10492407, 0.08 ) np.blackman(10) #Blackman窗口array( -1.38777878e-17, 5.08696327e-02, 2.58000502e-01, 6.300

8、00000e-01, 9.51129866e-01, 9.51129866e-01, 6.30000000e-01, 2.58000502e-01, 5.08696327e-02, -1.38777878e-17) np.kaiser(12, 5) #Kaiser窗口array(0.03671089, 0.16199525, 0.36683806, 0.61609304, 0.84458838, 0.98167828, 0.98167828, 0.84458838, 0.61609304, 0.36683806, 0.16199525, 0.03671089)810.1.1 數(shù)組生成與常用操作

9、 np.random.randint(0, 50, 5) #隨機數(shù)組,5個0到50之間的數(shù)字array(13, 47, 31, 26, 9) np.random.randint(0, 50, (3,5) #3行5列array(34, 2, 33, 14, 40, 9, 5, 10, 27, 11, 26, 17, 10, 46, 30) np.random.rand(10) #10個介于0,1)的隨機數(shù)array(0.98139326, 0.35675498, 0.30580776, 0.30379627, 0.19527425, 0.59159936, 0.31132305, 0.20219

10、211, 0.20073821, 0.02435331) np.random.standard_normal(5) #從標(biāo)準(zhǔn)正態(tài)分布中隨機采樣5個數(shù)字array(2.82669067, 0.9773194, -0.72595951, -0.11343254, 0.74813065)910.1.1 數(shù)組生成與常用操作 x = np.random.standard_normal(size=(3, 4, 2) xarray( 0.5218421 , -1.10892934, 2.27295689, 0.9598461 , -0.92229318, 2.25708573, 0.0070173 , -0

11、.30608704, 1.05133704, -0.4094823 , -0.03457527, -2.3034343 , -0.45156185, -1.26174441, 0.59367951, -0.78355627, 0.0424474 , -1.75202307, -0.43457619, -0.96445206, 0.28342028, 1.27303125, -0.15312326, 2.0399687 )1010.1.1 數(shù)組生成與常用操作 np.diag(1,2,3) #對角矩陣array(1, 0, 0, 0, 2, 0, 0, 0, 3) np.diag(1,2,3,4)

12、 #對角矩陣array(1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4)1110.1.1 數(shù)組生成與常用操作(2)測試兩個數(shù)組的對應(yīng)元素是否都足夠接近 x = np.array(1, 2, 3, 4.001, 5) y = np.array(1, 1.999, 3, 4.01, 5.1) np.allclose(x, y)False np.allclose(x, y, rtol=0.2) #設(shè)置相對誤差參數(shù)True np.allclose(x, y, atol=0.2) #設(shè)置絕對誤差參數(shù)True1210.1.1 數(shù)組生成與常用操作(3)修改數(shù)組中

13、的元素值 x = np.arange(8) xarray(0, 1, 2, 3, 4, 5, 6, 7) np.append(x, 8) #返回新數(shù)組,增加元素array(0, 1, 2, 3, 4, 5, 6, 7, 8) np.append(x, 9,10) #返回新數(shù)組,在尾部追加多個元素array(0, 1, 2, 3, 4, 5, 6, 7, 9, 10) x #不影響原來的數(shù)組array(0, 1, 2, 3, 4, 5, 6, 7) x3 = 8 #原地修改元素值 xarray(0, 1, 2, 8, 4, 5, 6, 7)1310.1.1 數(shù)組生成與常用操作 np.insert

14、(x, 1, 8) #返回新數(shù)組,插入元素array(0, 8, 1, 2, 8, 4, 5, 6, 7) x = np.array(1,2,3, 4,5,6, 7,8,9) x0, 2 = 4 #修改第0行第2列的元素值 x1:, 1: = 1 #切片,同時修改多個值 xarray(1, 2, 4, 4, 1, 1, 7, 1, 1)1410.1.1 數(shù)組生成與常用操作 x1:, 1: = 1,2 #同時修改多個元素值 xarray(1, 2, 4, 4, 1, 2, 7, 1, 2) x1:, 1: = 1,2,3,4 #同時修改多個元素值 xarray(1, 2, 4, 4, 1, 2,

15、 7, 3, 4)1510.1.1 數(shù)組生成與常用操作(4)數(shù)組與標(biāo)量的計算 x = np.array(1, 2, 3, 4, 5) #創(chuàng)建數(shù)組對象 xarray(1, 2, 3, 4, 5) x * 2 #數(shù)組與數(shù)值相乘,返回新數(shù)組array( 2, 4, 6, 8, 10) x / 2 #數(shù)組與數(shù)值相除array( 0.5, 1. , 1.5, 2. , 2.5) x / 2 #數(shù)組與數(shù)值整除array(0, 1, 1, 2, 2, dtype=int32) x * 3 #冪運算array(1, 8, 27, 64, 125, dtype=int32) x + 2 #數(shù)組與數(shù)值相加arra

16、y(3, 4, 5, 6, 7)1610.1.1 數(shù)組生成與常用操作 x % 3 #余數(shù)array(1, 2, 0, 1, 2, dtype=int32) 2 * x #分別計算2*1、2*2、2*3、2*4、2*5array(2, 4, 8, 16, 32, dtype=int32) 2 / xarray(2. ,1. ,0.66666667, 0.5, 0.4) 63 / xarray(63, 31, 21, 15, 12, dtype=int32)1710.1.1 數(shù)組生成與常用操作(5)數(shù)組與數(shù)組的四則運算 np.array(1, 2, 3, 4) + np.array(4, 3, 2

17、, 1) #等長數(shù)組相加,對應(yīng)元素相加array(5, 5, 5, 5) np.array(1, 2, 3, 4) + np.array(4) #數(shù)組中每個元素加4array(5, 6, 7, 8) a = np.array(1, 2, 3) a + a #等長數(shù)組之間的加法運算,對應(yīng)元素相加array(2, 4, 6) a * a #等長數(shù)組之間的乘法運算,對應(yīng)元素相乘array(1, 4, 9)1810.1.1 數(shù)組生成與常用操作 a - a #等長數(shù)組之間的減法運算,對應(yīng)元素相減array(0, 0, 0) a / a #等長數(shù)組之間的除法運算,對應(yīng)元素相除array( 1., 1.,

18、1.) b = np.array(1, 2, 3, 4, 5, 6, 7, 8, 9) c = a * b #不同維度的數(shù)組與數(shù)組相乘 c #a中的每個元素乘以b中的對應(yīng)列元素array( 1, 4, 9, 4, 10, 18, 7, 16, 27) c / b #數(shù)組之間的除法運算array( 1., 2., 3., 1., 2., 3., 1., 2., 3.)1910.1.1 數(shù)組生成與常用操作 c / aarray( 1., 2., 3., 4., 5., 6., 7., 8., 9.) a+b #a中每個元素加b中的每一列元素array( 2, 4, 6, 5, 7, 9, 8, 1

19、0, 12)2010.1.1 數(shù)組生成與常用操作(6)數(shù)組排序 x = np.array(3, 1, 2) np.argsort(x) #返回排序后元素的原下標(biāo)array(1, 2, 0, dtype=int64) x_ #使用數(shù)組做下標(biāo),獲取排序后的元素array(1, 2, 3) x = np.array(3, 1, 2, 4) x.argmax(), x.argmin() #最大值和最小值的下標(biāo)(3, 1) np.argsort(x)array(1, 2, 0, 3, dtype=int64) x_array(1, 2, 3, 4) x.sort() #原地排序 xarray(1, 2,

20、 3, 4)2110.1.1 數(shù)組生成與常用操作(7)數(shù)組的內(nèi)積運算 a = np.array(5, 6, 7) b = np.array(6, 6, 6) a.dot(b) #向量內(nèi)積108 np.dot(a,b)108 sum(a*b)1082210.1.1 數(shù)組生成與常用操作(8)數(shù)組元素訪問 b = np.array(1,2,3,4,5,6,7,8,9) barray(1, 2, 3, 4, 5, 6, 7, 8, 9) b0 #第0行array(1, 2, 3) b00 #第0行第0列的元素值1 b0,2 #第0行第2列的元素值3 b0,1 #第0行和第1行array(1, 2, 3

21、, 4, 5, 6) b0,1, 1,2 #第0行第1列的元素和第1行第2列的元素 #內(nèi)部第一個列表表示行下標(biāo),第二個列表表示列下標(biāo)array(2, 6)2310.1.1 數(shù)組生成與常用操作(9)數(shù)組對函數(shù)運算的支持 x = np.arange(0, 100, 10, dtype=np.floating) np.sin(x) #一維數(shù)組中所有元素求正弦值array(0. , -0.54402111, 0.91294525, -0.98803162, 0.74511316, -0.26237485, -0.30481062, 0.77389068, -0.99388865, 0.89399666

22、) b = np.array(1, 2, 3, 4, 5, 6, 7, 8, 9) np.cos(b) #二維數(shù)組中所有元素求余弦值array( 0.54030231, -0.41614684, -0.9899925 , -0.65364362, 0.28366219, 0.96017029, 0.75390225, -0.14550003, -0.91113026) np.round(_) #四舍五入array( 1., -0., -1., -1., 0., 1., 1., -0., -1.)2410.1.1 數(shù)組生成與常用操作(10)改變數(shù)組大小 a = np.arange(1, 11,

23、1) aarray(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) a.shape = 2, 5 #改為2行5列,原地修改 aarray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) a.shape = 5, -1 #-1表示自動計算,原地修改 aarray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)2510.1.1 數(shù)組生成與常用操作 b = a.reshape(2,5) #reshape()方法返回新數(shù)組 barray( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10) x = np.array(range(5) x.resh

24、ape(1, 10) #reshape()不能修改數(shù)組元素個數(shù)Traceback (most recent call last): File , line 1, in x.reshape(1, 10)ValueError: total size of new array must be unchanged x.resize(1,10) #resize()可以改變數(shù)組元素個數(shù) xarray(0, 1, 2, 3, 4, 0, 0, 0, 0, 0)2610.1.1 數(shù)組生成與常用操作(11)數(shù)組切片操作 a = np.arange(10) aarray(0, 1, 2, 3, 4, 5, 6,

25、7, 8, 9) a:-1 #反向切片array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0) a:2 #隔一個取一個元素array(0, 2, 4, 6, 8) a:5 #前5個元素array(0, 1, 2, 3, 4)2710.1.1 數(shù)組生成與常用操作 c = np.arange(25) #創(chuàng)建數(shù)組 c.shape = 5,5 #修改數(shù)組大小 carray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24) c0, 2:5 #第0行中下標(biāo)2,5

26、)之間的元素值array(2, 3, 4) c1 #第0行所有元素array(5, 6, 7, 8, 9)2810.1.1 數(shù)組生成與常用操作 c2:5, 2:5 #行下標(biāo)和列下標(biāo)都介于2,5)之間的元素值array(12, 13, 14, 17, 18, 19, 22, 23, 24) c1,3, 2,4 #第1行第2列的元素和第3行第4列的元素array( 7, 19) c1,3, 2:4 #第1行和第3行的第2、3列array( 7, 8, 17, 18) c1,3 #第1行和第3行所有元素array( 5, 6, 7, 8, 9, 15, 16, 17, 18, 19) c1,3:,

27、2,4 #第1、3行的2、4列元素array( 7, 9, 17, 19)2910.1.1 數(shù)組生成與常用操作(12)數(shù)組布爾運算 x = np.random.rand(10) #包含10個隨機數(shù)的數(shù)組 xarray(0.56707504, 0.07527513, 0.0149213, 0.49157657, 0.75404095, 0.40330683, 0.90158037, 0.36465894, 0.37620859, 0.62250594) x 0.5 #比較數(shù)組中每個元素值是否大于0.5array( True, False, False, False, True, False, T

28、rue, False, False, True, dtype=bool) xx0.5 #獲取數(shù)組中大于0.5的元素array( 0.56707504, 0.75404095, 0.90158037, 0.62250594) x np.all(x np.any(1,2,3,4) #是否存在等價于True的元素True np.any(0)False a = np.array(1, 2, 3) b = np.array(3, 2, 1) a b #兩個數(shù)組中對應(yīng)位置上的元素比較array(False, False, True, dtype=bool) aab #數(shù)組a中大于b數(shù)組對應(yīng)位置上元素的值a

29、rray(3) a = barray(False, True, False, dtype=bool) aa=barray(2)3110.1.1 數(shù)組生成與常用操作 x = np.arange(1, 10) xarray(1, 2, 3, 4, 5, 6, 7, 8, 9) x(x%2=0)&(x5) #布爾與運算array(6, 8) x(x%2=0)|(x5) #布爾或運算array(2, 4, 6, 7, 8, 9)3210.1.1 數(shù)組生成與常用操作 import numpy as np data = np.array(1,2,3, 2,3,3, 3,4,5, 1,2,3, 4,5,6,

30、 1,2,3) data=1,2,3array( True, True, True, False, False, True, False, False, False, True, True, True, False, False, False, True, True, True) index = list(map(lambda row:all(row=1,2,3), data) dataindex #獲取所有1,2,3的行array(1, 2, 3, 1, 2, 3, 1, 2, 3)3310.1.1 數(shù)組生成與常用操作(13)分段函數(shù) x = np.random.randint(0, 10,

31、 size=(1,10) xarray(0, 4, 3, 3, 8, 4, 7, 3, 1, 7) np.where(x np.piecewise(x, x7, lambda x:x*2, lambda x:x*3) #小于4的元素乘以2 #大于7的元素乘以3 #其他元素變?yōu)?array( 0, 0, 6, 6, 24, 0, 0, 6, 2, 0)3410.1.1 數(shù)組生成與常用操作(14)計算唯一值與出現(xiàn)次數(shù) x = np.random.randint(0, 10, 7) xarray(8, 7, 7, 5, 3, 8, 0) np.bincount(x) #元素出現(xiàn)次數(shù),0出現(xiàn)1次, #

32、1、2沒出現(xiàn),3出現(xiàn)1次,以此類推array(1, 0, 0, 1, 0, 1, 0, 2, 2, dtype=int64) np.sum(_) #所有元素出現(xiàn)次數(shù)之和等于數(shù)組長度7 len(x)7 np.unique(x) #返回唯一元素值array(0, 3, 5, 7, 8)3510.1.2 矩陣生成與常用操作(1)生成矩陣 a_list = 3, 5, 7 a_mat = np.matrix(a_list) #創(chuàng)建矩陣 a_matmatrix(3, 5, 7) c_mat = np.matrix(1, 5, 3, 2, 9, 6) #創(chuàng)建矩陣 c_matmatrix(1, 5, 3,

33、2, 9, 6)3610.1.2 矩陣生成與常用操作(2)矩陣轉(zhuǎn)置 a_mat.T #矩陣轉(zhuǎn)置matrix(3, 5, 7) a_mat.shape #矩陣形狀(1, 3) a_mat.size #元素個數(shù)33710.1.2 矩陣生成與常用操作(3)計算矩陣特征 a_mat.mean() #元素平均值5.0 a_mat.sum() #所有元素之和15 a_mat.max() #最大值7 a_mat.max(axis=1) #橫向最大值matrix(7) a_mat.max(axis=0) #縱向最大值matrix(3, 5, 7)3810.1.2 矩陣生成與常用操作(4)矩陣相乘 b_mat

34、= np.matrix(1, 2, 3) #創(chuàng)建矩陣 b_matmatrix(1, 2, 3) a_mat * b_mat.T #矩陣相乘matrix(34)3910.1.2 矩陣生成與常用操作(5)矩陣元素排序 c_mat.argsort(axis=0) #縱向排序后的元素序號matrix(0, 0, 0, 1, 1, 1, dtype=int64) c_mat.argsort(axis=1) #橫向排序后的元素序號matrix(0, 2, 1, 0, 2, 1, dtype=int64)4010.1.2 矩陣生成與常用操作(6)計算相關(guān)系數(shù)矩陣(對稱矩陣,對角線上元素表示自相關(guān)系數(shù)) np

35、.corrcoef(1,2,3,4, 4,3,2,1) #負(fù)相關(guān),變化方向相反array( 1., -1., -1., 1.) np.corrcoef(1,2,3,4, 1,2,3,4) #正相關(guān),變化方向一致array( 1., 1., 1., 1.) np.corrcoef(1,2,3,4, 1,2,3,40)#正相關(guān),變化趨勢接近array( 1. , 0.8010362, 0.8010362, 1. )4110.1.2 矩陣生成與常用操作(7)矩陣行列擴展 import numpy as np data = np.matrix(np.random.randint(1,10,5) for

36、 _ in range(6) newCols = np.matrix(np.random.randint(1,10,2) for _ in range(6) newRows = np.matrix(np.random.randint(1,10,5) for _ in range(3) datamatrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7)4210.1.2 矩陣生成與常用操作 newColsmatrix(7, 1, 6, 3, 9, 1, 2, 7,

37、8, 8, 9, 1) newRowsmatrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3)4310.1.2 矩陣生成與常用操作 np.c_data, newCols #在右側(cè)增加列matrix(8, 7, 7, 6, 1, 7, 1, 1, 9, 8, 5, 9, 6, 3, 1, 8, 7, 9, 6, 9, 1, 1, 4, 5, 5, 2, 2, 7, 4, 3, 1, 9, 2, 8, 8, 6, 3, 2, 7, 7, 9, 1) np.c_newCols, data #在左側(cè)增加列matrix(7, 1, 8, 7, 7, 6, 1

38、, 6, 3, 1, 9, 8, 5, 9, 9, 1, 1, 8, 7, 9, 6, 2, 7, 1, 4, 5, 5, 2, 8, 8, 4, 3, 1, 9, 2, 9, 1, 6, 3, 2, 7, 7)4410.1.2 矩陣生成與常用操作 np.r_data, newRows #在下面增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3)4510.1.2

39、 矩陣生成與常用操作 np.r_newRows, data #在上面增加行matrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7)4610.1.2 矩陣生成與常用操作 np.r_data, newRows, newRows #在下面增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4

40、, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3)4710.1.2 矩陣生成與常用操作 np.insert(data, 0, newRows, axis=0) #在第0行增加行matrix(8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1

41、, 9, 2, 6, 3, 2, 7, 7)4810.1.2 矩陣生成與常用操作 np.insert(data, 3, newRows, axis=0) #在第3行增加行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8, 2, 8, 5, 2, 3, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7)4910.1.2 矩陣生成與常用操作 np.insert(data, 4, newCols.T, axis=1) #在第4列處增加列matrix(8

42、, 7, 7, 6, 7, 1, 1, 1, 9, 8, 5, 6, 3, 9, 1, 8, 7, 9, 9, 1, 6, 1, 4, 5, 5, 2, 7, 2, 4, 3, 1, 9, 8, 8, 2, 6, 3, 2, 7, 9, 1, 7)5010.1.2 矩陣生成與常用操作 np.row_stack(data, newRows) #擴展行matrix(8, 7, 7, 6, 1, 1, 9, 8, 5, 9, 1, 8, 7, 9, 6, 1, 4, 5, 5, 2, 4, 3, 1, 9, 2, 6, 3, 2, 7, 7, 8, 3, 7, 5, 8, 7, 4, 7, 3, 8

43、, 2, 8, 5, 2, 3)5110.1.2 矩陣生成與常用操作 np.column_stack(data, newCols) #擴展列matrix(8, 7, 7, 6, 1, 7, 1, 1, 9, 8, 5, 9, 6, 3, 1, 8, 7, 9, 6, 9, 1, 1, 4, 5, 5, 2, 2, 7, 4, 3, 1, 9, 2, 8, 8, 6, 3, 2, 7, 7, 9, 1)5210.1.2 矩陣生成與常用操作(8)計算方差、協(xié)方差。 np.cov(1,1,1,1,1) #協(xié)方差array(0.0) x = -2.1, -1, 4.3 y = 3, 1.1, 0.12

44、 X = np.vstack(x,y) print(np.cov(X) #協(xié)方差 11.71 -4.286 -4.286 2.14413333 print(np.cov(x, y) 11.71 -4.286 -4.286 2.14413333 print(np.cov(x)11.7099999999999995310.1.3 計算特征值與特征向量 import numpy as np e, v = np.linalg.eig(1,1,2,2) #特征值與特征向量 earray( 0., 3.) varray(-0.70710678, -0.4472136 , 0.70710678, -0.89

45、442719) array = np.arange(1, 10).reshape(3,3) e, v = np.linalg.eig(array) earray( 1.61168440e+01, -1.11684397e+00, -9.75918483e-16) varray(-0.23197069, -0.78583024, 0.40824829, -0.52532209, -0.08675134, -0.81649658, -0.8186735 , 0.61232756, 0.40824829)5410.1.4 計算逆矩陣 import numpy as np x = np.matrix(

46、1,2, 3,4) y = np.linalg.inv(x) #計算逆矩陣 x * y #驗證matrix( 1.00000000e+00, 1.11022302e-16, 0.00000000e+00, 1.00000000e+00) y * xmatrix( 1.00000000e+00, 4.44089210e-16, 0.00000000e+00, 1.00000000e+00)5510.1.5 矩陣QR分解 import numpy as np a = np.matrix(1,2,3, 4,5,6) q, r = np.linalg.qr(a) np.dot(q,r) #驗證matr

47、ix( 1., 2., 3., 4., 5., 6.)5610.1.6 計算行列式 import numpy as np a = 1,2, 3,4 np.linalg.det(a)-2.0000000000000004 a = np.array(1, 2, 3, 4, 1, 2, 2, 1, 1, 3, 3, 1) np.linalg.det(a)array(-2., -3., -8.)5710.1.7 矩陣奇異值分解 import numpy as np a = np.arange(60).reshape(5,-1) aarray( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

48、 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59) U, s, V = np.linalg.svd(a, full_matrices=False)5810.1.7 矩陣奇異值分解 np.dot(U, np.dot(np.diag(s), V)arra

49、y( 7.01764278e-15, 1.00000000e+00, 2.00000000e+00, 3.00000000e+00, 4.00000000e+00, 5.00000000e+00, 6.00000000e+00, 7.00000000e+00, 8.00000000e+00, 9.00000000e+00, 1.00000000e+01, 1.10000000e+01, 1.20000000e+01, 1.30000000e+01, 1.40000000e+01, 1.50000000e+01, 1.60000000e+01, 1.70000000e+01, 1.8000000

50、0e+01, 1.90000000e+01, 2.00000000e+01, 2.10000000e+01, 2.20000000e+01, 2.30000000e+01, 2.40000000e+01, 2.50000000e+01, 2.60000000e+01, 2.70000000e+01, 2.80000000e+01, 2.90000000e+01, 3.00000000e+01, 3.10000000e+01, 3.20000000e+01, 3.30000000e+01, 3.40000000e+01, 3.50000000e+01, 3.60000000e+01, 3.700

51、00000e+01, 3.80000000e+01, 3.90000000e+01, 4.00000000e+01, 4.10000000e+01, 4.20000000e+01, 4.30000000e+01, 4.40000000e+01, 4.50000000e+01, 4.60000000e+01, 4.70000000e+01, 4.80000000e+01, 4.90000000e+01, 5.00000000e+01, 5.10000000e+01, 5.20000000e+01, 5.30000000e+01, 5.40000000e+01, 5.50000000e+01, 5

52、.60000000e+01, 5.70000000e+01, 5.80000000e+01, 5.90000000e+01) np.allclose(a, np.dot(U, np.dot(np.diag(s), V)True5910.1.8 求解線性方程組ax=b的解 import numpy as np a = np.array(3,1, 1,2) #系數(shù)矩陣 b = np.array(9,8) #系數(shù)矩陣 x = np.linalg.solve(a, b) #求解 xarray( 2., 3.) np.dot(a, x)array( 9., 8.) np.linalg.lstsq(a,

53、b) #最小二乘解 #返回解、余項、a的秩、a的奇異值(array( 2., 3.), array(, dtype=float64), 2, array( 3.61803399, 1.38196601)6010.1.9 計算矩陣和向量的范數(shù) import numpy as np x = np.matrix(1,2,3,-4) np.linalg.norm(x) #(1*2+2*2+3*2+(-4)*2)*0.55.4772255750516612 np.linalg.norm(x, -2) #smallest singular value1.9543950758485487 np.linalg

54、.norm(x, -1) #min(sum(abs(x), axis=0)4.0 np.linalg.norm(x, 1) #max(sum(abs(x), axis=0)6.0 np.linalg.norm(np.array(1,2,3,4), 3)4.64158883361277846110.2 pandas數(shù)據(jù)處理基礎(chǔ)pandas是Python用于處理數(shù)據(jù)的擴展庫,主要提供了3種數(shù)據(jù)結(jié)構(gòu):1)Series,帶標(biāo)簽的一維數(shù)組;2)DataFrame,帶標(biāo)簽且大小可變的二維表格結(jié)構(gòu);3)Panel,帶標(biāo)簽且大小可變的三維數(shù)組。6210.2.1 一維數(shù)組Series與常用索引數(shù)組生成與操作(1

55、)生成一維數(shù)組 import numpy as np import pandas as pd x = pd.Series(1, 3, 5, np.nan) x0 1.01 3.02 5.03 NaNdtype: float646310.2.1 一維數(shù)組Series與常用索引數(shù)組生成與操作(2)生成日期時間索引數(shù)組 pd.date_range(start=20190101, end=20191231, freq=H)DatetimeIndex(2019-01-01 00:00:00, 2019-01-01 01:00:00, 2019-01-01 02:00:00, 2019-01-01 03:

56、00:00, 2019-01-01 04:00:00, 2019-01-01 05:00:00, 2019-01-01 06:00:00, 2019-01-01 07:00:00, 2019-01-01 08:00:00, 2019-01-01 09:00:00, . 2019-12-30 15:00:00, 2019-12-30 16:00:00, 2019-12-30 17:00:00, 2019-12-30 18:00:00, 2019-12-30 19:00:00, 2019-12-30 20:00:00, 2019-12-30 21:00:00, 2019-12-30 22:00:0

57、0, 2019-12-30 23:00:00, 2019-12-31 00:00:00, dtype=datetime64ns, length=8737, freq=H)6410.2.1 一維數(shù)組Series與常用索引數(shù)組生成與操作 dates = pd.date_range(start=20190101, end=20191231, freq=D) #間隔為天 datesDatetimeIndex(2019-01-01, 2019-01-02, 2019-01-03, 2019-01-04, 2019-01-05, 2019-01-06, 2019-01-07, 2019-01-08, 20

58、19-01-09, 2019-01-10, . 2019-12-22, 2019-12-23, 2019-12-24, 2019-12-25, 2019-12-26, 2019-12-27, 2019-12-28, 2019-12-29, 2019-12-30, 2019-12-31, dtype=datetime64ns, length=365, freq=D)6510.2.1 一維數(shù)組Series與常用索引數(shù)組生成與操作 pd.date_range(start=20190101, end=20191231, freq=6D) #間隔6天DatetimeIndex(2019-01-01, 2

59、019-01-07, 2019-01-13, 2019-01-19, 2019-01-25, 2019-01-31, 2019-02-06, 2019-02-12, 2019-02-18, 2019-02-24, 2019-03-02, 2019-03-08, 2019-03-14, 2019-03-20, 2019-03-26, 2019-04-01, 2019-04-07, 2019-04-13, 2019-04-19, 2019-04-25, 2019-05-01, 2019-05-07, 2019-05-13, 2019-05-19, 2019-05-25, 2019-05-31, 2

60、019-06-06, 2019-06-12, 2019-06-18, 2019-06-24, 2019-06-30, 2019-07-06, 2019-07-12, 2019-07-18, 2019-07-24, 2019-07-30, 2019-08-05, 2019-08-11, 2019-08-17, 2019-08-23, 2019-08-29, 2019-09-04, 2019-09-10, 2019-09-16, 2019-09-22, 2019-09-28, 2019-10-04, 2019-10-10, 2019-10-16, 2019-10-22, 2019-10-28, 2

溫馨提示

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

評論

0/150

提交評論