Python數據分析基礎與應用(微課版) 教案 模塊6 Pandas統計計算與數據分析_第1頁
Python數據分析基礎與應用(微課版) 教案 模塊6 Pandas統計計算與數據分析_第2頁
Python數據分析基礎與應用(微課版) 教案 模塊6 Pandas統計計算與數據分析_第3頁
Python數據分析基礎與應用(微課版) 教案 模塊6 Pandas統計計算與數據分析_第4頁
Python數據分析基礎與應用(微課版) 教案 模塊6 Pandas統計計算與數據分析_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Python數據分析基礎與應用模塊模塊6Pandas統計計算與數據分析【學習與訓練】6.1Pandas數據運算6.1.1Series對象的運算1.Series對象的賦值運算通過索引或標簽選取元素后直接給元素進行賦值。2.Series對象與常量之間的算術運算適用于NumPy數組的算術運算符(+、-、*、/)和其他數學函數等,也適用于Series對象。3.兩個Series對象之間的加、減、乘、除算術運算代碼如下:importpandasaspdprint('定義兩個Series對象:')s3=pd.Series([2,8,6,9],index=['a','b','c','d'])s4=pd.Series([3,10,5],index=['c','d','a'])print(s3)print(s4)#將兩個Series對象進行加、減、乘、除算術運算print('兩個Series對象相加:\n',s3+s4)print('兩個Series對象相減:\n',s3-s4)print('兩個Series對象相乘:\n',s3*s4)print('兩個Series對象相除:\n',s3/s4)觀察輸出結果可以發現,兩個Series對象相加就是將兩個Series對象中標簽相同的元素相加,并輸出這些標簽和相加后的值。對于只有一個Series對象有的標簽,也會出現在輸出結果中,但其值為NaN。4.Series對象的數學函數運算Pandas數據結構之間可以使用運算符運算,也可以使用算術運算函數來完成。Pandas提供的算術運算函數有add()、sub()、mul()、div()和mod()等函數。這些函數分別可完成加、減、乘、除和求余數的運算,函數的調用方法如下:obj1.add(obj2)其中,obj1和obj2是Series或DataFrame對象;sub()、mul()、div()和mod()等函數的調用方法與add()相同。5.Series對象的綜合運算在Series對象之間進行運算時,Series能夠通過識別標簽對齊不一致的數據。這就是Series運算時的自動對齊功能。6.1.2DataFrame對象的運算1.兩個DataFrame對象之間加、減、乘、除算術運算定義兩個DataFrame對象,分別指定它們的行索引和列索引不完全一致,并將這兩個DataFrame對象進行加、減、乘、除算術運算。2.兩個DataFrame對象之間加、減、乘、除和求余函數運算定義兩個DataFrame對象,分別指定它們的行索引和列索引不完全一致,并用add()、sub()、mul()、div()和mod()等函數對這兩個DataFrame對象進行加、減、乘、除和求余數運算。6.2Pandas統計分析6.2.1Pandas數據分析的基本方法Pandas數據分析的基本方法主要包括基本統計分析、分組統計分析、分布分析、交叉分析、結構分析、相關分析等多種方法。1.Pandas基本統計分析描述統計學(descriptivestatistics)主要研究如何取得反映客觀現象的數據,并以圖表形式對所搜集的數據進行處理和顯示,最終對數據的規律、特征做出綜合性的描述分析。Pandas庫正是對描述統計學知識應用的體現。從描述統計學角度出發,可以對DataFrame結構執行聚合計算等操作,例如使用sum()函數求和、使用mean()函數求均值等方法。在DataFrame中,使用聚合類方法時需要指定軸(axis)參數。傳參方式有兩種:(1)對行操作,默認使用axis=0或者使用"index";(2)對列操作,默認使用axis=1或者使用"columns"。2.Pandas分組分析分組分析是指根據分組字段,將分析對象劃分成不同的組,以對比分析各組之間差異性的分析方法。分組分析常用的統計指標是計數、求和、平均值等。3.Pandas分布分析分布分析是指根據分析的目的,將定量數據進行等距或者不等距的分組,從而研究各組分布規律的一種分析方法。例如學生成績分布、用戶年齡分布、收入狀況分布等。在分布分析時,首先用cut()函數確定分布分析中的分組,然后再用groupby()函數實現分組分析。4.Pandas交叉分析交叉分析通常用于分析兩個或兩個以上分組變量之間的關系,以交叉表形式進行變量間關系的對比分析;從數據的不同維度,綜合進行分組細化分析,進一步了解數據的構成、分布特征。交叉分析有數據透視表和交叉表兩種,透視表pivot_table()是一種進行數據透視分析的函數,參數aggfunc決定統計類型;而交叉表crosstab()是一種特殊的pivot_table(),專門用于計算分組的頻率。其中pivot_table()函數返回值是數據透視表的結果,該函數相當于Excel中的數據透視表功能。(1)使用pivot_table()函數進行數據透視分析在交叉分析時,可以先用cut()函數確定交叉分析中的分組,然后再利用pivot_table()函數實現交叉分析。(2)使用crosstab()進行頻數交叉分析頻數交叉表(Cross-Tabulation,簡稱crosstab)是一種用于計算分組頻率的特殊透視表。5.Pandas結構分析在結構分析時,先利用pivot_table()函數進行數據透視表分析,然后,通過指定axis參數對數據透視表按行或列進行計算(當axis=0時按列計算,axis=1時按行計算),常用的運算函數有add(加)、sub(減)、multiply(乘)、div(除)、sum(求和)、mean(求平均值)、var(求方差)、sd(求標準差)。6.Pandas相關分析相關分析(CorrelationAnalysis)用于研究現象之間是否存在某種依存關系,并探討具有依存關系的現象的相關方向以及相關程度,是研究隨機變量之間相關關系的一種統計方法。6.2.2應用Pandas的統計函數1.計算數值的百分比變化(pct_change)Series和DatFrames結構都可以使用pct_change()函數,該函數將每個元素與其前一個元素進行比較,并計算前后數值的百分比變化。2.計算變量的協方差(cov)Pandas提供的cov()函數用來計算Series對象之間的協方差。cov()函數應用于DataFrame結構時,協方差(cov)將計算指定列之間或所有列之間的協方差。該函數也會將缺失值(NAN)自動排除。3.計算變量的相關系數(corr)相關系數用于顯示任意兩個Series對象或者DataFrame對象之間的線性關系,Pandas相關分析函數包括DataFrame.corr()和Series.corr(other)。函數說明如下:?如果由DataFrame調用corr()函數,那么將會計算列與列之間的相似度。?如果由Series調用corr()函數,那么只是該Series與傳入的Series之間的相關度。函數返回值如下:?DataFrame調用:返回DataFrame。?Series調用:返回一個數值型數據,大小為相關度。6.2.3應用Pandas的窗口函數1.應用移動函數rolling()計算移動平均值rolling()又稱移動窗口函數,它可以與mean、count、sum、median、std等聚合函數一起使用。為了使用方便,Pandas為移動函數定義了專門的方法聚合方法,例如rolling_mean()、rolling_count()、rolling_sum()等。其語法格式如下:rolling(window=n,min_periods=None,center=False)常用函數參數說明如下:?window:默認值為1,表示窗口的大小,也就是觀測值的數量;?min_periods:表示窗口的最小觀察值,默認與window的參數值相等;?center:是否把中間值做為窗口標準,默認值為False。2.應用expanding()函數求移動平均值expanding()又叫擴展窗口函數,擴展是指由序列的第1個元素開始,逐個向后計算元素的聚合值。其min_periods=n表示第1次向后移動n個值求一次平均值,第2次求n+1個值的平均值,第3次求n+2個值的平均值,依次類推,第m次求n+m-1個值的平均值。3.應用ewm()函數求指數加權平均值ewm(全稱為ExponentiallyWeightedMoving)表示指數加權移動。ewn()函數先會對序列元素做指數加權運算,然后計算加權后的均值。該函數通過指定參數(例如com)來實現指數加權移動。6.2.4應用Pandas的聚合函數聚合函數指的是對一組數據求總和、最大值、最小值以及平均值的操作。6.3Pandas數據聚合與分組運算分組與聚合是數據分析中比較常見的操作,其個過程主要包含以下三步:(1)拆分(Split):表示將數據集按照一定的規則進行拆分為若干個組,拆分操作是在指定軸上進行的,既可以對橫軸方向上的數據進行分組,也可以對縱軸上的數據進行分組。(2)應用(Apply):將某個函數或方法應用到每個分組,進行相應計算。(3)合并(Combine):最后匯總計算結果,將產生的新值整合到結果對象中。6.3.1Pandas數據分組Pandas通過gropby()方法將數據拆分成組,該方法的語法格式如下:.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,observed=False,**kwargs)gropby()方法主要函數參數說明如下:?by:用于確定分組的依據。?axis:表示分組軸的方向,可以為0(表示按行分組)或1(表示按列分組),默認值為0。?level:如果某個軸是一個MultiIndex對象,則會按照特定級別或多個級別分組。?as_index:表示聚合后的數據是否以組標簽作為索引的DataFrame對象輸出,接受布爾值,默認值為True。?sort:表示是否對分組標簽進行排序,接受布爾值,默認值為True在進行分組時,可以通過gropby()方法的by參數指定按什么標準分組,by參數接收的數據,也就是常見的分組方式有以下4種:?列表或數組,其長度必須與待分組的軸一樣。?DataFrame對象中某列的名稱。?字典或者series對象,給出待分組軸上的值與分組名稱之間的對應關系。?函數,用于處理索引中的各個標簽。通過groupby()方法執行分組操作,會返回一個GropBy對象,該對象實際上并沒有進行任何計算,只是包含一些關于分組鍵的中間數據。使用groupby()方法可以沿著任意軸分組,可以把分組時指定的鍵(key)作為每組的組名,形式如下所示:?df.groupby("key")?df.groupby("key",axis=1)?df.groupby(["key1","key2"])6.3.2Pandas數據聚合一般對分組中的數據執行某些操作,例如求平均值、求最大值等,并且操作后會得到一個結果集,這些實現聚合的操作稱為數據聚合。在創建groupby對象時,通過agg()函數可以對分組對象應用多個聚合函數。6.3.3Pandas分組的轉換操作使用agg()方法進行聚合運算時,返回數據集的形狀(shape)與被分組數據集的形狀通常是不同的,如果希望保持與原數據集形狀相同,可以通過transform()方法在組的行或列上可以執行轉換操作,最終會返回一個與組大小相同的索引對象。(1)使用transform()方法將mean()函數應用到每一個分組中示例代碼如下:#分組求均值#對可執行計算的數值列求均值print(df.groupby('group').transform(np.mean))(2)應用apply()方法apply()函數是Pandas所有函數中自由度最高的函數,該函數的功能是在DataFrame對象指定的軸方向應用自定義函數,函數的語法格式如下:DataFrame.apply(func,axis,broadcast,row,reduce,args=(),**kwds)該函數參數說明如下:?DataFrame:表示DataFrame對象名稱;?func:表示要應用在DataFrame對象的行或列的自定義函數名稱;?axis:用于控制是將DataFrame對象的行數據,還是列數據傳入func函數。如果設置axis=1,則將DataFrame對象的行數據作為Series的數據結構傳入func函數。其默認值為0;?broadc

溫馨提示

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

評論

0/150

提交評論