人工智能采集和分析基礎(chǔ)(Python版)課件 學(xué)習(xí)單元二 NumPy和Pandas數(shù)據(jù)處理與分析_第1頁
人工智能采集和分析基礎(chǔ)(Python版)課件 學(xué)習(xí)單元二 NumPy和Pandas數(shù)據(jù)處理與分析_第2頁
人工智能采集和分析基礎(chǔ)(Python版)課件 學(xué)習(xí)單元二 NumPy和Pandas數(shù)據(jù)處理與分析_第3頁
人工智能采集和分析基礎(chǔ)(Python版)課件 學(xué)習(xí)單元二 NumPy和Pandas數(shù)據(jù)處理與分析_第4頁
人工智能采集和分析基礎(chǔ)(Python版)課件 學(xué)習(xí)單元二 NumPy和Pandas數(shù)據(jù)處理與分析_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

任務(wù)1NumPy數(shù)據(jù)處理和分析

任務(wù)2Pandas數(shù)據(jù)處理和分析任務(wù)1NumPy數(shù)據(jù)處理和分析使用NumPy實現(xiàn)學(xué)生成績數(shù)據(jù)統(tǒng)計、數(shù)據(jù)處理以及分析,要求實現(xiàn)所有學(xué)生語文、數(shù)學(xué)、英語成績的分析,并取得其平均成績、最低成績、最高成績、方差、標(biāo)準差。然后將這些學(xué)生的總成績排序輸出。此操作過程可分為三個步驟去實現(xiàn),主要內(nèi)容如下:(1)安裝NumPy,并引入NumPy的庫文件。(2)定義一個數(shù)組,統(tǒng)計全班學(xué)生的成績。(3)調(diào)用NumPy當(dāng)中的庫函數(shù),實現(xiàn)對數(shù)據(jù)的統(tǒng)計和處理。一、NumPy簡介及安裝NumPy的全稱是NumericalPython,它是Python語言的一個擴展程序庫,支持大量的維度數(shù)【任務(wù)描述】【知識準備】組與矩陣運算,并針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫。NumPy的圖標(biāo)如圖2-1所示。NumPy的前身為Numeric,最早由JimHugunin與其他協(xié)作者共同開發(fā)。2005年,TravisOliphant在Numeric中增加了一個同性質(zhì)的程序庫Numarray,并加入了獨有的特點,由此開發(fā)了NumPy。NumPy不僅開放源代碼,而且由許多協(xié)作者共同維護開發(fā)。Python不提供數(shù)組功能。列表雖然可以完成基本的數(shù)組功能,但不能保證在數(shù)據(jù)量較大時高速讀取數(shù)據(jù)。為此,NumPy提供了真正的數(shù)組功能,以及能夠進行數(shù)據(jù)快速處理的多種函數(shù),并且NumPy內(nèi)置函數(shù)處理數(shù)據(jù)的速度是C語言級別的,因此在編寫程序的時候,應(yīng)當(dāng)盡量使用內(nèi)置函數(shù),避免出現(xiàn)效率瓶頸現(xiàn)象。NumPy具有許多顯著的特征,在這些特征的幫助下,NumPy成為速度最快和功能強大的數(shù)學(xué)計算庫。NumPy的常見特性如下所示。(1)具有一個強大的N維數(shù)組對象ndarray。(2)支持廣播功能函數(shù)。(3)整合C/C++/Fortran代碼的工具。(4)支持線性代數(shù)、傅里葉變換、隨機數(shù)生成等功能。NumPy屬于Python的第三方框架,可以使用pip安裝、wheel安裝和源碼安裝等安裝方式。使用pip安裝NumPy的步驟如下所示。第一步:在Windows中,NumPy安裝與普通的第三方庫安裝一樣,可以通過Python的包管理工具pip安裝,命令如下所示。第二步:安裝完成后,可以使用簡單的Python代碼進行測試,代碼如下所示。效果如圖2-2所示。二、ndarray對象ndarray對象是NumPy最重要的特性。ndarray對象是一系列同類型數(shù)據(jù)的集合,集合中元素的索引從0開始,并且ndarray中存放的每個元素在內(nèi)存中都有相同大小的存儲空間。ndarray對象由指針對象、數(shù)據(jù)類型、表示數(shù)組形狀的元組和跨度元組四個模塊組成。(1)指針對象,即指向數(shù)據(jù),也可以說是指向內(nèi)存或內(nèi)存映射文件中的一塊數(shù)據(jù)。(2)數(shù)據(jù)類型,即dtype,包括32、np.float32等。(3)表示數(shù)組形狀的元組,表示各維度大小的元組,比如arr[3][3]就是一個二維數(shù)組。(4)跨度元組,即stride,其中的整數(shù)指的是為了前進到當(dāng)前維度下一個元素需要“跨過”的字節(jié)數(shù)。這里的跨度可以取負值。在NumPy中創(chuàng)建ndarray,需要調(diào)用array()函數(shù)來實現(xiàn)。該方法接受列表格式的參數(shù)后即可返回一個包含參數(shù)內(nèi)容的ndarray對象,代碼如下所示。效果如圖2-3所示。在NumPy中,每一個線性的數(shù)組稱為一個軸(axis),也就是維度(dimension)。二維數(shù)組本質(zhì)上是以數(shù)組作為數(shù)組元素的數(shù)組,每個元素是一個一維數(shù)組。所以,一維數(shù)組就是NumPy中的軸(axis),第一個軸相當(dāng)于底層數(shù)組,第二個軸是底層數(shù)組里的數(shù)組。通??梢詫xis進行聲明。axis=0,表示沿著第0軸進行操作,即對每一列進行操作;axis=1,表示沿著第1軸進行操作,即對每一行進行操作。除了數(shù)組的維度和秩,還有一些常見的信息可通過ndarray提供的屬性進行查詢。NumPy的數(shù)組的常用屬性如表2-1所示。下面使用ndarray.ndim獲取數(shù)組a的維度,代碼如下所示。效果如圖2-4所示。三、NumPy數(shù)組創(chuàng)建NumPy創(chuàng)建數(shù)組時,除了使用array()方法外,還可以使用empty()、zeros()、ones()等方法。詳細說明如表2-2所示。語法格式如下所示。下面分別使用empty()、zeros()、ones()進行數(shù)組的創(chuàng)建,代碼如下所示。結(jié)果如圖2-5所示。四、NumPy數(shù)組操作在數(shù)據(jù)采集與分析的過程中,數(shù)據(jù)的處理尤為重要,比如數(shù)據(jù)篩選過濾、數(shù)據(jù)變換、數(shù)據(jù)去重等操作都必須以數(shù)組的操作為基礎(chǔ)。在NumPy當(dāng)中包含了許多函數(shù),用來支持數(shù)組的操作,這些操作大致可以分為修改數(shù)組形狀、翻轉(zhuǎn)數(shù)組、修改數(shù)組維度、連接數(shù)組、分割數(shù)組、添加與刪除數(shù)組元素等六種。1.修改數(shù)組形狀修改數(shù)組形狀是指修改數(shù)組的維度和數(shù)組迭代器等屬性。NumPy當(dāng)中修改數(shù)組形狀的方法分別為reshape()、flat()、flatten()、ravel(),如表2-3所示。2.翻轉(zhuǎn)數(shù)組在NumPy當(dāng)中,用來翻轉(zhuǎn)數(shù)組的方法同樣有四種,分別為transpose()、ndarray.T、rollaxis()、swapaxes(),如表2-4所示。其中,transpose()方法與ndarray.T方法用于對數(shù)組的維度進行對換。語法格式如下所示。rollaxis()方法用于將數(shù)組向后滾動特定的軸到一個特定的位置。語法格式如下所示。swapaxes()方法用于將兩個指定軸上的元素進行對調(diào)。語法格式如下所示。3.修改數(shù)組維度修改數(shù)組維度指增加或減少數(shù)組的維度,以及拓展數(shù)組等操作。在NumPy中用于修改數(shù)組維度的方法有四種,分別為broadcast()、broadcast_to()、expand_dims()和squeeze()。數(shù)組維度修改方法如表2-5所示。如果數(shù)組a和b形狀相同,即滿足a.shape==b.shape,那么a?×?b的結(jié)果就是a與b數(shù)組的對應(yīng)位相乘。這里有兩個必要條件,即維數(shù)相同,且各維度的長度相同。比如,一個4?×?3的二維數(shù)組與長為3的一維數(shù)組相加,等效于把數(shù)組b在二維上重復(fù)4次運算,如圖2-10所示。broadcast()方法在使用的時候需要傳入兩個參數(shù),分別為兩個數(shù)組,返回值即為廣播的結(jié)果。expand_dims()方法用來修改數(shù)組的維度,通過插入新的軸來擴展數(shù)組。squeeze()方法的作用是刪除數(shù)組中的一維條目。4.連接數(shù)組連接數(shù)組是指將兩個數(shù)組進行合并。在NumPy中連接數(shù)組有三種方法,分別是concatenate()、hstack()和vstack(),如表2-6所示。concatenate()函數(shù)用來連接形狀相同的兩個或者多個數(shù)組,即它們的shape值一樣,否則不能連接。hstack()與vstack()方法分別通過水平堆疊和豎直堆疊連接數(shù)組。5.分割數(shù)組在NumPy中,數(shù)據(jù)的分割同樣是必不可少的。目前,NumPy提供了三種分割數(shù)組的方法,根據(jù)不同方向?qū)崿F(xiàn)數(shù)組的分割。數(shù)組分割方法如表2-7所示。split()方法可以將一個數(shù)組分割為多個子數(shù)組,與字符串的split方法一樣,實現(xiàn)對數(shù)組元素的拆分。語法格式如下所示。參數(shù)說明如下所示。(1)?ary:表示待分割的原始數(shù)組。(2)?indices_or_sections:類型為int或者一維數(shù)組,表示一個索引,或者表示分割位置。hsplit()和vsplit()方法用來在橫向和縱向分割數(shù)組,且與split()語法格式一致。6.添加與刪除數(shù)組元素在進行數(shù)組操作時,除了操作數(shù)組的形狀和軸以及連接數(shù)組等操作外,還可以對數(shù)組元素進行添加和刪除等操作。數(shù)組元素的添加與刪除方法如表2-8所示。append()函數(shù)用于在數(shù)組的末尾追加元素,語法格式如下所示。參數(shù)說明如下所示。(1)?arr:需要被添加values的數(shù)組。(2)?values:添加到數(shù)組arr中的值。insert()方法也可以在數(shù)組當(dāng)中插入元素,與append()不同的是,insert()方法可以在數(shù)組的任意位置進行插入元素。語法格式如下所示。參數(shù)說明如下所示。(1)?arr:需要被插入值的數(shù)組。(2)?obj:要插入的位置。(3)?values:插入的數(shù)值。(4)?axis:為想要插入的維(按行或列插入),若不指定則表示插入時進行降維。NumPy的數(shù)組當(dāng)中除了插入元素外,還可以使用delete()方法刪除元素。delete()語法格式如下所示。(1)?array:需要刪除元素的數(shù)組對象。(2)?obj:需要刪除的值,可以是單個元素,也可以是數(shù)組。(3)?axis:表示刪除的方向,如果不傳入這個參數(shù),元素刪除之后數(shù)組會默認展開。五、位運算函數(shù)數(shù)組的位運算操作包括按位與、按位或、按位取反、按位左移和按位右移等。NumPy中有對應(yīng)的函數(shù)完成位運算操作。NumPy中的位運算函數(shù)如表2-9所示。1.按位與運算(bitwise_and())NumPy中使用bitwise_and()函數(shù)實現(xiàn)對數(shù)組中元素的二進制形式進行按位與的操作,上下均為1時取1,否則取0。2.按位或運算(bitwise_or())NumPy中使用bitwise_or()函數(shù)實現(xiàn)對數(shù)組中元素的二進制形式進行按位或的操作,上下有一個為1則為1,否則取0。3.按位取反運算(invert())NumPy中使用invert()函數(shù)實現(xiàn)對數(shù)組中元素的二進制形式進行按位取反操作。即“1”變成“0”,“0”變成“1”,對于有符號的二進制數(shù),最高位0表示正數(shù),最高位1表示負數(shù)。4.左移運算(left_shift())NumPy中使用left_shift()函數(shù)實現(xiàn)對數(shù)組中元素的二進制形式進行左移指定位數(shù)的運算操作,左移之后的空位用0補充,left_shift()接收兩個參數(shù),第一個參數(shù)為要左移位的數(shù)組,第二個參數(shù)為左移的位數(shù)。5.右移運算(right_shift())NumPy中使用right_shift()函數(shù)實現(xiàn)對數(shù)組中元素的二進制形式進行右移指定位數(shù)的運算操作,右移之后的空位用0補充,right_shift()函數(shù)和left_shift()函數(shù)的用法一致。六、數(shù)學(xué)函數(shù)NumPy中包含了大量的數(shù)學(xué)運算函數(shù),如數(shù)據(jù)的四舍五入、上下取整等,利用這些函數(shù)可輕松實現(xiàn)數(shù)組數(shù)據(jù)的數(shù)學(xué)運算操作。常用的數(shù)學(xué)函數(shù)如表2-10所示。1.四舍五入around()函數(shù)用來對數(shù)組進行批量的四舍五入操作。可以傳入兩個參數(shù)值,第一個參數(shù)是需要傳入要處理的數(shù)組,第二個參數(shù)是傳入一個整數(shù),表示保留的小數(shù)位數(shù),這個數(shù)默認是0。2.向下與向上取整floor()函數(shù)和ceil()函數(shù)是用來對數(shù)組進行向下取整和向上取整的,兩者的用法不盡相同。七、統(tǒng)計函數(shù)NumPy會提供一系列函數(shù),供用戶使用Python獲取數(shù)組的最大值和最小值以及一組數(shù)的方差和標(biāo)準差等進行數(shù)據(jù)分析。常見的統(tǒng)計函數(shù)如表2-11所示。1.最大值與最小值(amax()與amin())函數(shù)amin()和函數(shù)amax()用于計算數(shù)組中的最小值和最大值,amin()與amax()函數(shù)接收兩個參數(shù),第一個參數(shù)表示需要進行計算的數(shù)組,第二個參數(shù)表示計算維度。2.最大值與最小值的差(ptp())ptp()函數(shù)用于獲取數(shù)組中的最大值與最小值的差值。3.平均值與中位數(shù)(mean()與median())median()函數(shù)用于獲取數(shù)組元素當(dāng)中的中位數(shù),不同的軸上,對應(yīng)的中位數(shù)不同;mean()函數(shù)用于計算數(shù)組中的算術(shù)平均數(shù)。4.加權(quán)平均值、方差和標(biāo)準差(average()、var()和std())average()函數(shù)用于獲取數(shù)組的加權(quán)平均數(shù),std()函數(shù)用于獲取數(shù)組的標(biāo)準差,var()函數(shù)用于獲取數(shù)組的方差。實際應(yīng)用中,也可以通過mean()函數(shù)和特定的公式,計算出數(shù)組的標(biāo)準差和方差。標(biāo)準差的計算公式如下所示。方差的計算公式如下所示。5.排序(sort())sort()函數(shù)用于對數(shù)組的數(shù)據(jù)進行排序,語法如下所示。參數(shù)說明如下所示。(1)?a:要被排序的數(shù)組。(2)?axis:要被排序的方向。(3)?kind:排序方式,有三個可選方式:quicksort(快速排序)、mergesort(歸并排序)、heapsort(堆排序)。(4)?order:如果數(shù)組包含字段,則表示要排序的字段。任務(wù)2Pandas數(shù)據(jù)處理和分析本任務(wù)主要利用NumPy和Pandas的相關(guān)知識以及交易信息數(shù)據(jù)集實現(xiàn)用戶行為的分析。其中涉及NumPy的數(shù)組運算操作、Pandas中數(shù)據(jù)對象的創(chuàng)建、缺失值處理與過濾、聚合運算等內(nèi)容。本任務(wù)主要包含五個方面的內(nèi)容,如下所示。(1)創(chuàng)建項目,導(dǎo)入數(shù)據(jù)集。(2)查看數(shù)據(jù),分析數(shù)據(jù)缺失情況。(3)描述性統(tǒng)計分析,分析每一列。(4)聚合分析,分析消費行為的關(guān)聯(lián)情況。(5)統(tǒng)計分析結(jié)果,實現(xiàn)分析目的?!救蝿?wù)描述】一、Pandas簡介及安裝Pandas是一個開放源碼、BSD許可的庫,提供高性能、易操作的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具。Pandas的名字衍生自術(shù)語“paneldata”(面板數(shù)據(jù))和“Pythondataanalysis”(Python數(shù)據(jù)分析)。Pandas是一個強大的分析結(jié)構(gòu)化數(shù)據(jù)的工具集,基于NumPy(提供高性能的矩陣運算)實現(xiàn),用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,同時也實現(xiàn)數(shù)據(jù)清洗。另外,Pandas還可以從各種文件格式比如CSV、JSON、SQL、MicrosoftExcel中導(dǎo)入數(shù)據(jù)。Pandas可以對數(shù)據(jù)進行各種運算操作,比如歸并、再成形、選擇、數(shù)據(jù)清洗和數(shù)據(jù)加工特征等。Pandas廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計學(xué)等各個數(shù)據(jù)分析領(lǐng)域,適用于處理以下類型的數(shù)據(jù):(1)與SQL或Excel表類似,含異構(gòu)列的表格數(shù)據(jù)。(2)有序和無序(非固定頻率)的時間序列數(shù)據(jù)。(3)帶行列標(biāo)簽的矩陣數(shù)據(jù),包括同構(gòu)或異構(gòu)型數(shù)據(jù)?!局R準備】(4)任意其他形式的觀測、統(tǒng)計數(shù)據(jù)集,數(shù)據(jù)轉(zhuǎn)入Pandas數(shù)據(jù)結(jié)構(gòu)時不必事先標(biāo)記。Pandas的安裝比較容易。NumPy安裝后,通過“pipinstallpandas”或下載源碼后使用“pythonsetup.pyinstall”均可安裝Pandas。安裝界面如圖2-41所示。Pandas安裝完成后,即可使用import進行Pandas引用并重命名為“pd”,示例如下所示。二、Pandas基礎(chǔ)1.?Series類型Series是一種一維數(shù)組對象,由一組數(shù)據(jù)(各種NumPy數(shù)據(jù)類型)以及一組與之相關(guān)的數(shù)據(jù)標(biāo)簽(即索引)組成。Series數(shù)據(jù)類型的字符串表現(xiàn)形式為:索引在左邊,值在右邊。在使用Series時,還可以自己傳入索引的內(nèi)容來作為索引。在Series對象中,數(shù)據(jù)和索引具有兩個屬性,分別為values和index屬性,表示形式和索引對象。在創(chuàng)建Series數(shù)據(jù)對象時,除了使用類似NumPy中數(shù)組創(chuàng)建的方式,還可以使用Python中字典的方式創(chuàng)建,只需要將字典的數(shù)據(jù)傳輸給Series就可以實現(xiàn)創(chuàng)建。2.?DataFrame類型DataFrame是一個表格型的數(shù)據(jù)結(jié)構(gòu),含有一組有序的列,每列可以是不同的值類型(數(shù)值、字符串、布爾值等)。DataFrame既有行索引也有列索引,可以看作由Series組成的字典(共用同一個索引),數(shù)據(jù)以一個或多個二維塊存儲(不是列表、字典或別的一維數(shù)據(jù)結(jié)構(gòu))。data當(dāng)中的每一組數(shù)據(jù)在DataFrame對象當(dāng)中都作為一列來進行存儲。除此之外,DataFrame對象還有兩個索引,一個是橫向索引即數(shù)據(jù)的組名,另外一個是縱向索引,這個索引和Series當(dāng)中的索引是等效的。DataFrame創(chuàng)建后,可以通過DataFrame對象提供的head()方法獲取前幾行的數(shù)據(jù),該方法如果不傳入?yún)?shù),會默認取得數(shù)據(jù)的前五行進行展示,若想要顯示指定的行,可以通過對應(yīng)的參數(shù)進行輸出。DataFrame對象在使用的時候,還可以通過columns參數(shù)指定序列的方法對數(shù)據(jù)進行排序,指定序列之后,整體的數(shù)據(jù)會進行排序。DataFrame對象也可以使用類似于字典的方式獲取數(shù)據(jù)內(nèi)容,同時也可以使用屬性的方式獲取數(shù)據(jù)。3.?Pandas的匯總和計算功能Pandas對象擁有許多常見的數(shù)學(xué)和統(tǒng)計的方法,利用這些方法可以實現(xiàn)約簡和匯總統(tǒng)計。例如,從Series中提取單個值(最大值、平均值、中位數(shù))、從DataFrame對象的行或者列中提取一個Series對象等。常用方法如表2-12所示。1)?sum()sum()方法在使用的時候可以傳入axis的值,接收到axis的值以后會按照對應(yīng)的軸求和,否則會全部求和。2)?idxmax()、idxmin()DataFrame對象在使用時,除了直接返回計算值,還可以進行間接統(tǒng)計,通過idxmax()和idxmin()兩種方法獲取最大值和最小值。3)?describe()describe()方法可以統(tǒng)計多種數(shù)據(jù),包括數(shù)據(jù)個數(shù)、平均數(shù)、最大值、最小值以及數(shù)值占比。4)?unique()Pandas提供的unique()方法,可以對數(shù)據(jù)進行去重操作,將數(shù)組當(dāng)中

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論