版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章python3在數(shù)據(jù)分析中的應(yīng)用
導(dǎo)入大數(shù)據(jù)時(shí)代的到來,電商、社交、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、醫(yī)學(xué)影像、金融等等每天都在瘋狂的產(chǎn)生著數(shù)據(jù),每天都在以TB量級(jí)以上的數(shù)據(jù)量增長著。然而,數(shù)據(jù)荒依然沒有得到完全的解決。以前是數(shù)據(jù)量少,現(xiàn)在數(shù)據(jù)是太多了,就像面對(duì)一個(gè)大海,卻還是缺乏我們需要的淡水。如何從這個(gè)數(shù)據(jù)海中提取我們需要的淡水——有價(jià)值的信息,是當(dāng)下各個(gè)企業(yè)都不得不面臨的一個(gè)問題。主要內(nèi)容數(shù)據(jù)分析的意義數(shù)據(jù)分析的基本步驟數(shù)據(jù)分析的常用方法NumPyPandasMatplotlib應(yīng)用案例10.1數(shù)據(jù)分析基礎(chǔ)1、什么是數(shù)據(jù)分析數(shù)據(jù)分析指的是通過統(tǒng)計(jì)學(xué)方法對(duì)采集來的數(shù)據(jù)進(jìn)行整理和分析,并從中提取有用信息,從而得出結(jié)論.并以圖表等形式進(jìn)行展示的過程。2、數(shù)據(jù)分析的目的(1)分類:檢查未知分類或暫時(shí)未知分類的數(shù)據(jù),目的是預(yù)測數(shù)據(jù)屬于哪個(gè)類別或?qū)儆谀膫€(gè)類別。使用具有已知分類的相似數(shù)據(jù)來研究分類規(guī)則,然后將這些規(guī)則應(yīng)用于未知分類數(shù)據(jù)。(2)預(yù)測與預(yù)測分析:預(yù)測是指對(duì)數(shù)字連續(xù)變量而不是分類變量的預(yù)測。預(yù)測分析包括分類,預(yù)測,關(guān)聯(lián)規(guī)則,協(xié)作過濾和模式識(shí)別(聚類)之類的方法。(3)關(guān)聯(lián)規(guī)則和推薦系統(tǒng):關(guān)聯(lián)規(guī)則(關(guān)聯(lián)分析)是指在諸如捆綁之類的大型數(shù)據(jù)庫中找到一般的關(guān)聯(lián)模式。在線推薦系統(tǒng)使用協(xié)作過濾算法,該協(xié)作過濾算法是基于給定的歷史購買行為.等級(jí).瀏覽歷史或任何其他可測量的偏好行為或什至其他用戶購買歷史的方法。協(xié)同過濾可在單個(gè)用戶級(jí)別生成“購買時(shí)可以購買的東西”的購買建議。因此,在許多推薦系統(tǒng)中使用了協(xié)作過濾,以向具有廣泛偏好的用戶提供個(gè)性化推薦,如抖音等。10.1數(shù)據(jù)分析基礎(chǔ)(4)數(shù)據(jù)縮減和降維:當(dāng)變量的數(shù)量有限并且可以將大量樣本數(shù)據(jù)分類為同類組時(shí),通常會(huì)提高數(shù)據(jù)挖掘算法的性能。減少變量的數(shù)量通常稱為“降維”。降維是部署監(jiān)督學(xué)習(xí)方法之前最常見的初始步驟,旨在提高可預(yù)測性,可管理性和可解釋性。(5)數(shù)據(jù)探索和可視化:數(shù)據(jù)探索的目的是了解數(shù)據(jù)的整體情況并檢測異常值。通過圖表創(chuàng)建的數(shù)據(jù)瀏覽稱為“數(shù)據(jù)可視化”或“可視化分析”。對(duì)于數(shù)值變量,可以使用直方圖,箱形圖和散點(diǎn)圖來了解其值的分布并檢測異常值,對(duì)于分類數(shù)據(jù),可使用條形圖分析。(6)有監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí):監(jiān)督學(xué)習(xí)算法是用于分類和預(yù)測的算法。數(shù)據(jù)分類必須是已知的。在分類或預(yù)測算法中用于“學(xué)習(xí)”或“訓(xùn)練”預(yù)測變量和結(jié)果變量之間關(guān)系的數(shù)據(jù)稱為“訓(xùn)練數(shù)據(jù)”。從訓(xùn)練數(shù)據(jù)中學(xué)到算法后,將該算法應(yīng)用于具有已知結(jié)果的另一個(gè)數(shù)據(jù)樣本(驗(yàn)證數(shù)據(jù)),以查看其與其他模型相比具有哪些優(yōu)勢。簡單線性回歸是監(jiān)督算法的一個(gè)示例。10.1數(shù)據(jù)分析基礎(chǔ)3、數(shù)據(jù)分析的意義(1)現(xiàn)狀分析:通過各種指標(biāo)來衡量企業(yè)的運(yùn)營狀況,最直觀的顯示整體運(yùn)營情況是好是壞,其次,可以知道企業(yè)每個(gè)業(yè)務(wù)的組成、發(fā)展和變化,并對(duì)企業(yè)的業(yè)務(wù)狀態(tài)有更深入的了解。(2)原因分析:通常通過主題分析進(jìn)行,明晰為什么這些現(xiàn)狀會(huì)發(fā)生。(3)預(yù)測分析:在有限的范圍內(nèi)預(yù)測未來會(huì)發(fā)生什么。如:在了解公司運(yùn)營的現(xiàn)狀后,有時(shí)需要對(duì)公司的未來發(fā)展趨勢做出預(yù)測,為公司制定業(yè)務(wù)目標(biāo),并提供有效的戰(zhàn)略參考和決策依據(jù)。10.1數(shù)據(jù)分析基礎(chǔ)4、數(shù)據(jù)分析的基本步驟明確分析目的和思路→數(shù)據(jù)采集→數(shù)據(jù)處理→數(shù)據(jù)分析→數(shù)據(jù)展現(xiàn)→報(bào)告撰寫5、數(shù)據(jù)分析的常用方法數(shù)據(jù)分析的基礎(chǔ)是統(tǒng)計(jì)學(xué)。常用的數(shù)據(jù)分析方法有描述性統(tǒng)計(jì)分析、參數(shù)估計(jì)、假設(shè)檢驗(yàn)、方差分析等。10.2常用數(shù)據(jù)分析庫:庫的安裝Numpy、Matplotlib和Pandas都是非標(biāo)準(zhǔn)庫,需要提前安裝。三種方式Anaconda中集成了這三個(gè)庫,可以直接使用Anaconda。采用在線安裝:打開windows命令窗口,依次輸入:pipinstallnumpy、pipinstallmatplotlib和pipinstallpandas三個(gè)命令,分別完成Numpy、Matplotlib和Pandas三個(gè)模塊的安裝。下載安裝模塊后在本地安裝:先到官方網(wǎng)站下載whl文件,然后打開windows命令窗口,進(jìn)入下載文件所在目錄,依次執(zhí)行pipinstallnumpy組件文件名.whl、pipinstallmatplotlib組件文件名.whl、pipinstallpandas組件文件名.whl三個(gè)命令。安裝matplotlib時(shí),可能彈出提示你的電腦沒有安裝相應(yīng)的VisualC++模塊。根據(jù)提示信息,下載相應(yīng)的VisualC++模塊。安裝完該模塊后,重新執(zhí)行pipinstallmatplotlib組件文件名.whl命令。10.2常用數(shù)據(jù)分析庫:NumpyNumpy是Python的一種開源數(shù)值計(jì)算模塊??捎脕硖幚泶鎯?chǔ)和計(jì)算各種矩陣,比Python的嵌套列表高效很多。提供了N維數(shù)組對(duì)象、矩陣數(shù)據(jù)類型、隨機(jī)數(shù)生成、廣播函數(shù)、科學(xué)計(jì)算工具、線性代數(shù)和傅里葉變換等功能。SciPy通常用于處理稀疏矩陣。Numpy、SciPy和Matplotlib組合常用于替代Matlab。10.2常用數(shù)據(jù)分析庫:NumpyNumpy中主要有多維數(shù)組和矩陣兩種數(shù)據(jù)結(jié)構(gòu)。這里只簡單介紹多維數(shù)組ndarray對(duì)象。ndarray是Numpy的數(shù)組類型,它的所有元素必須具有相同的數(shù)據(jù)類型。ndarray類的重要對(duì)象屬性有:ndarray.ndim:數(shù)組維度。ndarray.shape:表示數(shù)組各維度大小的元組。ndarray.size:數(shù)組元素的總個(gè)數(shù),等于shape屬性元組中各元素的乘積。ndarray.dtype:數(shù)組中元素的數(shù)據(jù)類型10.2常用數(shù)據(jù)分析庫:Numpy先通過語句importnumpyasnp導(dǎo)入該模塊。利用numpy.array可以由序列類型的對(duì)象(元組、列表和其他數(shù)組)創(chuàng)建數(shù)組類型的ndarray對(duì)象。如果沒有顯式指定數(shù)組的數(shù)據(jù)類型,array函數(shù)會(huì)根據(jù)序列對(duì)象,為新建的數(shù)組推斷出一個(gè)較為合適的數(shù)據(jù)類型。1、創(chuàng)建一維數(shù)組>>>importnumpyasnp>>>list1=[5,6.5,9,2,3,7.8,5.6,4.9]>>>arr1=np.array(list1)>>>arr1array([5.,6.5,9.,2.,3.,7.8,5.6,4.9])>>>
10.2常用數(shù)據(jù)分析庫:Numpy2、創(chuàng)建二維數(shù)組>>>list2=[[1,2,3,4,5],[6,7,8,9,10]]>>>arr2=np.array(list2)>>>arr2array([[1,2,3,4,5],[6,7,8,9,10]])>>>
3、訪問數(shù)組對(duì)象屬性通過ndim函數(shù)獲取數(shù)組的維度>>>arr1.ndim1>>>arr2.ndim2>>>
通過shape函數(shù)返回表示數(shù)組各維度大小的元組>>>arr1.shape(8,)>>>arr2.shape(2,5)>>>
通過size函數(shù)獲取數(shù)組中元素的總個(gè)數(shù)>>>arr1.size8>>>arr2.size10>>>
通過dtype函數(shù)獲取數(shù)組元素的數(shù)據(jù)類型>>>arr1.dtypedtype('float64')>>>arr2.dtypedtype('int32')>>>
10.2常用數(shù)據(jù)分析庫:Numpy4、創(chuàng)建指定數(shù)據(jù)類型的數(shù)組對(duì)象>>>arr3=np.array([10,20,30,40],dtype=np.float64)>>>arr3array([10.,20.,30.,40.])>>>
5、通過astype函數(shù)轉(zhuǎn)換數(shù)組的數(shù)據(jù)類型>>>arr4=arr2.astype(np.float64)>>>arr4.dtypedtype('float64')可以利用zeros和ones創(chuàng)建指定維度和大小的全0或全1數(shù)組。>>>np.zeros(5)array([0.,0.,0.,0.,0.])>>>np.zeros((2,3))array([[0.,0.,0.],[0.,0.,0.]])>>>np.ones((1,2))array([[1.,1.]])>>>np.ones((3,4),dtype=16)array([[1,1,1,1],[1,1,1,1],[1,1,1,1]],dtype=int16)可以利用eye或identity創(chuàng)建單位陣。>>>np.eye(4)array([[1.,0.,0.,0.],[0.,1.,0.,0.],[0.,0.,1.,0.],[0.,0.,0.,1.]])>>>np.identity(4)array([[1.,0.,0.,0.],[0.,1.,0.,0.],[0.,0.,1.,0.],[0.,0.,0.,1.]])10.2常用數(shù)據(jù)分析庫:Numpyarange函數(shù)是numpy內(nèi)置的函數(shù),返回的是數(shù)組對(duì)象,而不是列表。numpy.arange([start,]stop,[step,]dtype=None)start表示開始值,默認(rèn)為0;stop表示結(jié)束值,結(jié)果中不包含stop本身;step表示步長,默認(rèn)為1;dtype表示數(shù)組元素類型,默認(rèn)從其他參數(shù)推斷。start,step,dtype三個(gè)參數(shù)可以省略。>>>np.arange(3,20,3)array([3,6,9,12,15,18])>>>10.2常用數(shù)據(jù)分析庫:Numpy可以利用numpy.linspace(start,stop,num=50,endpoint=True,retstep=False,dtype=None)創(chuàng)建等差數(shù)列。>>>np.linspace(0,5,10)array([0.,0.55555556,1.11111111,1.66666667,2.22222222,2.77777778,3.33333333,3.88888889,4.44444444,5.])可以利用numpy.logspace(start,stop,num=50,endpoint=True,base=10.0,dtype=None)創(chuàng)建等比數(shù)列。>>>np.logspace(0,8,16)array([1.00000000e+00,3.41454887e+00,1.16591440e+01,3.98107171e+01,1.35935639e+02,4.64158883e+02,1.58489319e+03,5.41169527e+03,1.84784980e+04,6.30957344e+04,2.15443469e+05,7.35642254e+05,2.51188643e+06,8.57695899e+06,2.92864456e+07,1.00000000e+08])這個(gè)例子產(chǎn)生從10的0次冪到10的8次冪之間16個(gè)數(shù)組成的等比數(shù)列數(shù)組。還可以利用Numpy中的asarray、ones_like、zeros_like、empty、empyt_like等創(chuàng)建ndarray數(shù)組對(duì)象。10.2常用數(shù)據(jù)分析庫:Numpy1、隨機(jī)數(shù)的生成Numpy中的random子模塊用于生成各種隨機(jī)數(shù)。Numpy官方在線參考手冊(cè)給出了生成各種隨機(jī)數(shù)的詳細(xì)介紹。這里介紹幾種常用的隨機(jī)數(shù)產(chǎn)生方法。(1)使用numpy.random.rand()函數(shù)生成[0,1)之間的隨機(jī)浮點(diǎn)數(shù)。>>>importnumpyasnp>>>np.random.rand() #生成一個(gè)[0,1)之間的隨機(jī)浮點(diǎn)數(shù).0.8939672908405941>>>np.random.rand(3) #生成一個(gè)一維、共三個(gè)元素的隨機(jī)浮點(diǎn)數(shù)數(shù)組,元素位于[0,1)之間。array([0.54350645,0.92721516,0.10503672])>>>np.random.rand(2,3)#生成一個(gè)2行3列的二維數(shù)組,數(shù)組元素位于[0,1)之間。array([[0.72474509,0.69509932,0.82310355],[0.16464369,0.18150546,0.87969788]])10.2常用數(shù)據(jù)分析庫:Numpy(2)使用numpy.random.randn()生成一個(gè)具有標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)浮點(diǎn)數(shù)樣本。>>>np.random.randn(5)#生成一個(gè)標(biāo)準(zhǔn)正態(tài)分布的一維數(shù)組隨機(jī)浮點(diǎn)數(shù)。array([0.1538501,0.42421551,-0.17355168,0.09019904,-0.33155756])>>>np.random.randn(3,4)#生成一個(gè)標(biāo)準(zhǔn)正態(tài)分布的3行4列二維數(shù)組隨機(jī)浮點(diǎn)數(shù)。array([[1.09882567,0.67002068,-1.84222623,1.53957494],[-0.14725161,0.14962733,0.22269968,0.38329739],[0.66025437,0.18853493,0.38823973,0.98848714]])10.2常用數(shù)據(jù)分析庫:Numpy(3)numpy.random.randint()函數(shù)生成隨機(jī)整數(shù)。>>>np.random.randint(5)#生成一個(gè)[0,5)之間的隨機(jī)整數(shù)2>>>np.random.randint(50,size=5)#生成個(gè)數(shù)為5,值在[0,50)之間的一維整數(shù)數(shù)組array([23,17,24,27,34])>>>np.random.randint(10,20)#生成一個(gè)位于[10,20)區(qū)間的隨機(jī)整數(shù)18#生成一個(gè)3行4列的數(shù)組,元素的值是[10,50)區(qū)間里的隨機(jī)整數(shù)。>>>np.random.randint(10,50,(3,4))array([[30,45,36,30],[16,41,18,44],[43,16,37,11]])10.2常用數(shù)據(jù)分析庫:Numpy(4)numpy.random.random_sample()、numpy.random.random()、numpy.random.ranf()和numpy.random.sample()四個(gè)函數(shù)的功能都是返回位于[0.0,1.0)區(qū)間的一個(gè)隨機(jī)的浮點(diǎn)數(shù)或參數(shù)中指定維度的數(shù)組。>>>np.random.random_sample()0.8243760561191865>>>np.random.random_sample(3)array([0.75311019,0.80618575,0.19259011])#參數(shù)中數(shù)組的維度必須以元組的形式出現(xiàn)。>>>np.random.random_sample((3,4))array([[0.41438636,0.46512609,0.14717557,0.92288745],[0.52002313,0.6405674,0.64982451,0.80266958],[0.97429793,0.2897892,0.34625299,0.34768561]])>>>np.random.random_sample((2,3,4))array([[[0.54609391,0.12412469,0.29738999,0.62508189],[0.63528904,0.33195217,0.38926109,0.310123],[0.49667031,0.70333863,0.76978682,0.26887752]],
[[0.49821545,0.09668823,0.66214618,0.62025478],[0.54457072,0.29458145,0.40859359,0.77368304],[0.57813389,0.55179483,0.08778325,0.24025623]]])10.2常用數(shù)據(jù)分析庫:Numpy從上述隨機(jī)數(shù)產(chǎn)生的結(jié)果可以看出,調(diào)用隨機(jī)數(shù)生成函數(shù),每次得到一個(gè)不同的隨機(jī)數(shù)。原因是調(diào)用這些函數(shù)時(shí),計(jì)算機(jī)以當(dāng)前時(shí)間為隨機(jī)數(shù)發(fā)生器的種子值。每次調(diào)用隨機(jī)數(shù)生成函數(shù)的時(shí)間不同,因此產(chǎn)生的結(jié)果看起來是一個(gè)隨機(jī)數(shù)??梢酝ㄟ^numpy.random.seed()函數(shù)設(shè)置隨機(jī)數(shù)發(fā)生器種子值,使得相同條件下每次調(diào)用隨機(jī)數(shù)生成函數(shù)產(chǎn)生相同的值。沒有提供種子值,每次產(chǎn)生不同的隨機(jī)數(shù)。>>>np.random.randint(100)15>>>np.random.randint(100)64如果每次調(diào)用隨機(jī)數(shù)生成函數(shù)前,都通過numpy.random.seed()傳遞相同的種子值,每次執(zhí)行隨機(jī)數(shù)生成函數(shù)得到相同的結(jié)果。>>>np.random.seed(10)>>>np.random.randint(100)9>>>np.random.seed(10)>>>np.random.randint(100)910.2常用數(shù)據(jù)分析庫:Numpy2.numpy存取文件數(shù)據(jù)(1)可以利用numpy.savetxt將數(shù)組保存到文本文件中。函數(shù)定義如下:numpy.savetxt(fname,X,fmt='%.18e',delimiter='',newline='\n',header='',footer='',comments='#',encoding=None)參數(shù)含義如下:fname:保存的文件名;X:一維或二維數(shù)組數(shù)據(jù);fmt:輸出數(shù)據(jù)的格式字符串或格式字符串序列;delimiter:分隔列數(shù)據(jù)的字符串;newline:分隔行的字符串;header:將在文件開頭寫入的字符串;footer:將在文件尾寫入的字符串;comments:注釋字符串,放在header或footer字符串前面表示注釋;encoding:表示輸出到文件的字符編碼。各參數(shù)的詳細(xì)用法見官方在線文檔。10.2常用數(shù)據(jù)分析庫:Numpy【例10-1】生成5行6列的數(shù)組,數(shù)組元素是[0,1)區(qū)間里的隨機(jī)浮點(diǎn)數(shù),屏幕上打印輸出該數(shù)組,并將該數(shù)組保存到文件array.txt中。保存到文件中的數(shù)組元素保留5位小數(shù),同一行中的元素之間以逗號(hào)分隔。程序源代碼如下:#coding=utf-8importnumpyasnpa=np.random.rand(5,6)#生成5行6列的數(shù)組,數(shù)組元素是[0,1)區(qū)間里的隨機(jī)浮點(diǎn)數(shù)print(a)#將數(shù)組a保存到array.txt文件,文件名前可以包含路徑名。#fmt='%0.5f'表示保留5位小數(shù)。#delimiter=','指定以逗號(hào)作為同一行中元素之間的分隔符。np.savetxt('array.txt',a,fmt='%0.5f',delimiter=',')執(zhí)行該程序,在源程序文件所在目錄下生成一個(gè)array.txt文件。該文件中保存5行6列浮點(diǎn)數(shù)數(shù)據(jù),每行的元素之間以逗號(hào)分隔。10.2常用數(shù)據(jù)分析庫:Numpy(2)可以利用numpy.loadtxt從txt或csv文件中讀取數(shù)據(jù),返回?cái)?shù)組。函數(shù)定義如下:numpy.loadtxt(fname,dtype=<class'float'>,comments='#',delimiter=None,converters=None,skiprows=0, usecols=None,unpack=False,ndmin=0,encoding='bytes')參數(shù)含義如下:fname:要讀取的文件或文件名;dtype:結(jié)果數(shù)組的數(shù)據(jù)類型,默認(rèn)為float類型;comments:標(biāo)記注釋的字符串;delimiter:文件中分隔值的字符串;converters:將列號(hào)映射到函數(shù)的字典,這個(gè)函數(shù)將該列字符串解析為所需的值;skiprows:讀取數(shù)據(jù)時(shí)跳過的行數(shù);usecols:整數(shù)或整數(shù)序列,表示需要讀取的列號(hào)(列編號(hào)從0開始);unpack:是否將返回的數(shù)組轉(zhuǎn)置,若為True,返回的數(shù)組將被轉(zhuǎn)置,方便將每列數(shù)據(jù)組成的數(shù)組分別賦值給一個(gè)單獨(dú)的變量或作為序列中單獨(dú)的一個(gè)元組;ndmin:整數(shù)(0、1或2),表示返回?cái)?shù)組至少具有的維數(shù),否則一維軸會(huì)被壓縮;encoding:用于解碼文件中字符的編碼。各參數(shù)的詳細(xì)用法見官方在線文檔。1、數(shù)組的索引(1)一維數(shù)組通過“數(shù)組名[索引號(hào)]”的方式來提取特定位置上元素的值或重新設(shè)置特定位置上元素的值。位置索引值從0開始計(jì)數(shù)。>>>importnumpyasnp>>>np.random.seed(1000)>>>a=np.random.randint(1,100,10)>>>aarray([52,88,72,65,95,93,2,62,1,90])>>>a[5]93>>>a[6]=a[6]*15>>>aarray([52,88,72,65,95,93,30,62,1,90])>>>
10.2常用數(shù)據(jù)分析庫:Numpy(2)二維數(shù)組通過“數(shù)組名[i,j]”或“數(shù)組名[i][j]”的方式獲取第i行j列元素的值或重新設(shè)置第i行j列元素的值。>>>np.random.seed(1000)>>>x=np.random.randint(1,100,size=(3,4))>>>xarray([[52,88,72,65],[95,93,2,62],[1,90,46,41]])>>>x[2,0]1>>>x[2][0]1>>>x[2,0]=5>>>x[1,2]=x[1,2]*3>>>xarray([[52,88,72,65],[95,93,6,62],[5,90,46,41]])>>>
10.2常用數(shù)據(jù)分析庫:Numpy2、數(shù)組的切片(1)一維數(shù)組的切片:數(shù)組名[start:end:step],從第start數(shù)開始(包括start),到第end數(shù)為止(不包括end),每次增長的步長為step。數(shù)組切片是原始數(shù)組的視圖,數(shù)據(jù)并不會(huì)被復(fù)制,即視圖上的任何修改都會(huì)直接反映到源數(shù)組上。>>>importnumpyasnp>>>np.random.seed(1000)>>>a=np.random.randint(1,100,10)>>>aarray([52,88,72,65,95,93,2,62,1,90])>>>a1=a[2:6]>>>a1array([72,65,95,93])>>>a2=a[1:8:3]>>>a2array([88,95,62])>>>a2[1]=99>>>a2array([88,99,62])>>>a1array([72,65,99,93])>>>aarray([52,88,72,65,99,93,2,62,1,90])10.2常用數(shù)據(jù)分析庫:Numpy(2)二維數(shù)組的切片:數(shù)組名[start1:end1:step1,start2:end2:step2]
start1、end1和step1分別表示數(shù)組第1維切片開始位置、結(jié)束位置和增長的步長。start2、end2和step2分別表示數(shù)組第2維切片開始位置、結(jié)束位置和增長的步長。end1和end2位置的元素均不包含在切片結(jié)果中。數(shù)組名[i]可以用來獲取第i行所有元素。數(shù)組名[:,j]可以用來獲取第j列所有元素。>>>importnumpyasnp>>>np.random.seed(1000)>>>x=np.random.randint(1,100,size=(5,6))>>>xarray([[52,88,72,65,95,93],[2,62,1,90,46,41],[93,92,37,61,43,59],[42,21,31,89,31,29],[31,78,83,29,86,94]])>>>x[1:4,2:5]array([[1,90,46],[37,61,43],[31,89,31]])>>>x[:,1:6:2]array([[88,65,93],[62,90,41],[92,61,59],[21,89,29],[78,29,94]])>>>x[1]array([2,62,1,90,46,41])>>>x[:,3]array([65,90,61,89,29])10.2常用數(shù)據(jù)分析庫:Numpy3、改變數(shù)組的維度(1)reshape()方法在不改變數(shù)組數(shù)據(jù)的情況下,改變數(shù)組形狀,也就是改變數(shù)組的維度。其參數(shù)指定每個(gè)維度大小。reshape()方法不產(chǎn)生新的數(shù)據(jù),只返回?cái)?shù)組的一個(gè)視圖。>>>importnumpyasnp>>>a=np.arange(1,16)>>>aarray([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])>>>b=a.reshape(3,5)>>>barray([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])>>>a #原數(shù)組保持不變array([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])10.2常用數(shù)據(jù)分析庫:Numpy>>>b[0][0]=100 #修改數(shù)組b中元素的值>>>barray([[100,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])>>>a #數(shù)組a中也看到了修改的結(jié)果array([100,2,3,4,5,6,7,8,9,10,11,12,13,14,15])>>>
10.2常用數(shù)據(jù)分析庫:Numpy(2)resize方法也可以修改數(shù)組維度。與reshape不同,resize會(huì)直接修改原數(shù)組的維度。>>>importnumpyasnp>>>a=np.arange(1,16)>>>aarray([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])>>>a.resize(3,5)>>>aarray([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])10.2常用數(shù)據(jù)分析庫:Numpy(3)也可以通過元組來設(shè)置數(shù)組的shape屬性值達(dá)到修改數(shù)組維度的目的。該方法也是直接改變現(xiàn)有數(shù)組的維度。>>>importnumpyasnp>>>a=np.arange(1,16)>>>aarray([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])>>>a.shape=(3,5)>>>aarray([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]])10.2常用數(shù)據(jù)分析庫:Numpy4、數(shù)組的基本運(yùn)算(1)數(shù)組與標(biāo)量之間的運(yùn)算將直接作用到每一個(gè)元素。大小相等的數(shù)組之間的任何算術(shù)運(yùn)算也會(huì)應(yīng)用到元素級(jí),具體如下:>>>importnumpyasnp>>>np.random.seed(500)>>>a1=np.random.randint(1,10,size=(3,4))>>>np.random.seed(1000)>>>a2=np.random.randint(1,10,size=(3,4))>>>a1array([[8,2,2,9],[8,2,2,6],[3,3,4,7]])>>>a2array([[4,8,8,1],[2,1,9,5],[5,5,3,9]])>>>a1*2array([[16,4,4,18],[16,4,4,12],[6,6,8,14]])>>>a1array([[8,2,2,9],[8,2,2,6],[3,3,4,7]])10.2常用數(shù)據(jù)分析庫:Numpy>>>a1/2array([[4.,1.,1.,4.5],[4.,1.,1.,3.],[1.5,1.5,2.,3.5]])>>>a1+a2array([[12,10,10,10],[10,3,11,11],[8,8,7,16]])>>>
>>>np.add(a1,a2) #通過函數(shù)進(jìn)行計(jì)算array([[12,10,10,10],[10,3,11,11],[8,8,7,16]])>>>a1array([[8,2,2,9],[8,2,2,6],[3,3,4,7]])>>>a2array([[4,8,8,1],[2,1,9,5],[5,5,3,9]])10.2常用數(shù)據(jù)分析庫:Numpy函數(shù)說明add將兩個(gè)數(shù)組中對(duì)應(yīng)位置的元素相加subtract將兩個(gè)數(shù)組中對(duì)應(yīng)位置的元素相減multiply將兩個(gè)數(shù)組中對(duì)應(yīng)位置的元素相乘divide將兩個(gè)數(shù)組中對(duì)應(yīng)位置的元素相除maximum取得數(shù)組中的最大值minimum取得數(shù)組中的最小值greater,greater_equalless,less_equal,equal,not_equal執(zhí)行元素級(jí)的比較運(yùn)算,最終產(chǎn)生布爾型數(shù)組(2)Numpy數(shù)組常用二元函數(shù)10.2常用數(shù)據(jù)分析庫:Numpy(3)numpy.sum()和numpy.average()可以分別求得數(shù)組元素的和與均值。numpy.std()和numpy.var()分別用于求數(shù)組的標(biāo)準(zhǔn)差和方差。numpy.max()和numpy.min()用于求得最大值和最小值。numpy.sort()用于對(duì)數(shù)組進(jìn)行排序。>>>importnumpyasnp>>>np.random.seed(1000)>>>x=np.random.randint(1,10,size=(3,4))>>>xarray([[2,8,2,6],[7,6,8,9],[9,3,3,7]])>>>np.sum(x)70>>>np.sum(x,axis=0)#每一列相加array([18,17,13,22])>>>np.sum(x,axis=1)#每一行相加array([18,30,22])10.2常用數(shù)據(jù)分析庫:Numpy>>>np.average(x)5.833333333333333>>>np.average(x,axis=0)#每一列求均值array([6.,5.66666667,4.33333333,7.33333333])>>>np.average(x,axis=1)#每一行求均值array([4.5,7.5,5.5])>>>
>>>np.var(x)6.472222222222222>>>np.var(x,axis=0)#對(duì)每一列上的元素求方差array([8.66666667,4.22222222,6.88888889,1.55555556])>>>np.var(x,axis=1)#對(duì)每一行上的元素求方差array([6.75,1.25,6.75])>>>np.std(x)2.544056253745625>>>np.std(x,axis=0)#對(duì)每一列上的元素求標(biāo)準(zhǔn)差array([2.94392029,2.05480467,2.62466929,1.24721913])>>>np.std(x,axis=1)#對(duì)每一行上的元素求標(biāo)準(zhǔn)差array([2.59807621,1.11803399,2.59807621])>>>
>>>np.max(x)9>>>np.max(x,axis=0)array([9,8,8,9])>>>np.max(x,axis=1)array([8,9,9])10.2常用數(shù)據(jù)分析庫:Numpy>>>xarray([[2,8,2,6],[7,6,8,9],[9,3,3,7]])>>>np.sort(x)#默認(rèn)按各行分別排序array([[2,2,6,8],[6,7,8,9],[3,3,7,9]])>>>np.sort(x,axis=1) #按行排序array([[2,2,6,8],[6,7,8,9],[3,3,7,9]])>>>np.sort(x,axis=0) #按列排序array([[2,3,2,6],[7,6,3,7],[9,8,8,9]])#axis=None時(shí),按數(shù)組展開的元素排序>>>np.sort(x,axis=None) array([2,2,3,3,6,6,7,7,8,8,9,9])10.2常用數(shù)據(jù)分析庫:Numpy5、數(shù)組的組合(1)numpy.hstack()和numpy.vstack()分別用于水平組合和垂直組合。numpy.concatenate()可以用于水平或垂直組合。>>>importnumpyasnp>>>a=np.arange(6).reshape(2,3)>>>aarray([[0,1,2],[3,4,5]])>>>b=a+10>>>barray([[10,11,12],[13,14,15]])>>>np.hstack((a,b)) #水平組合array([[0,1,2,10,11,12],[3,4,5,13,14,15]])>>>np.concatenate((a,b),axis=1)#水平組合array([[0,1,2,10,11,12],[3,4,5,13,14,15]])>>>np.vstack((a,b)) #垂直組合array([[0,1,2],[3,4,5],[10,11,12],[13,14,15]])>>>np.concatenate((a,b),axis=0)
#垂直組合array([[0,1,2],[3,4,5],[10,11,12],[13,14,15]])10.2常用數(shù)據(jù)分析庫:Numpy(2)numpy.column_stack()用于按列組合。用于二維數(shù)組時(shí),與numpy.hstack()功能相同。numpy.row_stack()用于按行組合。用于二維數(shù)組時(shí),與numpy.vstack()功能相同。>>>importnumpyasnp>>>x=np.arange(4)>>>y=x+10>>>xarray([0,1,2,3])>>>yarray([10,11,12,13])>>>np.column_stack((x,y))array([[0,10],[1,11],[2,12],[3,13]])>>>a=np.arange(6).reshape(2,3)>>>aarray([[0,1,2],[3,4,5]])>>>b=a+10>>>barray([[10,11,12],[13,14,15]])10.2常用數(shù)據(jù)分析庫:Numpy>>>np.column_stack((a,b))array([[0,1,2,10,11,12],[3,4,5,13,14,15]])>>>np.hstack((a,b))array([[0,1,2,10,11,12],[3,4,5,13,14,15]])>>>
>>>xarray([0,1,2,3])>>>yarray([10,11,12,13])>>>np.row_stack((x,y))array([[0,1,2,3],[10,11,12,13]])>>>aarray([[0,1,2],[3,4,5]])>>>barray([[10,11,12],[13,14,15]])>>>np.row_stack((a,b))array([[0,1,2],[3,4,5],[10,11,12],[13,14,15]])>>>np.vstack((a,b))array([[0,1,2],[3,4,5],[10,11,12],[13,14,15]])10.2常用數(shù)據(jù)分析庫:Numpy6、數(shù)組的分割numpy.hsplit()將數(shù)組沿著水平方向分割為相同大小的n個(gè)子數(shù)組。numpy.vsplit()將數(shù)組沿著垂直方向分割為相同大小的n個(gè)子數(shù)組。numpy.split()可以分別進(jìn)行水平或垂直方向上的分割。>>>importnumpyasnp>>>a=np.arange(12).reshape(3,4)>>>aarray([[0,1,2,3],[4,5,6,7],[8,9,10,11]])>>>np.hsplit(a,2)[array([[0,1],[4,5],[8,9]]),array([[2,3],[6,7],[10,11]])]10.2常用數(shù)據(jù)分析庫:Numpy>>>np.hsplit(a,4)[array([[0],[4],[8]]),array([[1],[5],[9]]),array([[2],[6],[10]]),array([[3],[7],[11]])]>>>np.split(a,2,axis=1) #橫向切為2列[array([[0,1],[4,5],[8,9]]),array([[2,3],[6,7],[10,11]])]10.2常用數(shù)據(jù)分析庫:Numpy>>>np.vsplit(a,3)[array([[0,1,2,3]]),array([[4,5,6,7]]),array([[8,9,10,11]])]>>>np.split(a,3,axis=0) #縱向切為3行[array([[0,1,2,3]]),array([[4,5,6,7]]),array([[8,9,10,11]])]>>>
10.2常用數(shù)據(jù)分析庫:Numpy10.2常用數(shù)據(jù)分析庫:matplotlibmatplotlib是Python中最著名的繪圖庫。其子庫pyplot包含大量與MATLAB相似的函數(shù)調(diào)用接口,非常適合進(jìn)行繪圖以達(dá)到數(shù)據(jù)可視化的目的。使用matplotlib創(chuàng)建圖表的標(biāo)準(zhǔn)步驟如下:首先,創(chuàng)建Figure對(duì)象(系統(tǒng)會(huì)默認(rèn)創(chuàng)建一個(gè)Figure對(duì)象,因此可以省略此步驟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年旅游管理專業(yè)核心知識(shí)點(diǎn)考試題庫
- 2026年國際貿(mào)易實(shí)務(wù)試題及答案解析
- 2026年新媒體運(yùn)營入門基礎(chǔ)課程模擬測試
- 2026年自然地理與人文景觀考察題庫中國名勝探秘
- 健全科學(xué)的思政課多項(xiàng)評(píng)比制度
- 2026年程序設(shè)計(jì)基礎(chǔ)及算法應(yīng)用題解
- 信息三審責(zé)任制度
- 職業(yè)性皮炎風(fēng)險(xiǎn)預(yù)測模型構(gòu)建方法
- 公司職業(yè)衛(wèi)生培訓(xùn)
- Excel基本知識(shí)點(diǎn)教學(xué)課件
- 航空安保審計(jì)培訓(xùn)課件
- 高層建筑滅火器配置專項(xiàng)施工方案
- 2023-2024學(xué)年廣東深圳紅嶺中學(xué)高二(上)學(xué)段一數(shù)學(xué)試題含答案
- 2026元旦主題班會(huì):馬年猜猜樂馬年成語教學(xué)課件
- 2025中國農(nóng)業(yè)科學(xué)院植物保護(hù)研究所第二批招聘創(chuàng)新中心科研崗筆試筆試參考試題附答案解析
- 反洗錢審計(jì)師反洗錢審計(jì)技巧與方法
- 檢驗(yàn)科安全生產(chǎn)培訓(xùn)課件
- 爆破施工安全管理方案
- 2026全國青少年模擬飛行考核理論知識(shí)題庫40題含答案(綜合卷)
- 2025線粒體醫(yī)學(xué)行業(yè)發(fā)展現(xiàn)狀與未來趨勢白皮書
- 靜壓機(jī)工程樁吊裝專項(xiàng)方案(2025版)
評(píng)論
0/150
提交評(píng)論