第-4-章-pandas統計分析基礎《Python數據分析與可視化》教學課件_第1頁
第-4-章-pandas統計分析基礎《Python數據分析與可視化》教學課件_第2頁
第-4-章-pandas統計分析基礎《Python數據分析與可視化》教學課件_第3頁
第-4-章-pandas統計分析基礎《Python數據分析與可視化》教學課件_第4頁
第-4-章-pandas統計分析基礎《Python數據分析與可視化》教學課件_第5頁
已閱讀5頁,還剩67頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

《Python數據分析與可視化》?精品課件合集Python數據分析與可視化第4章Pandas統計分析根底第4章Pandas統計分析根底Pandas〔PythonDataAnalysisLibrary〕是基于NumPy的數據分析模塊,它提供了大量標準數據模型和高效操作大型數據集所需的工具,可以說Pandas是使得Python能夠成為高效且強大的數據分析環境的重要因素之一。導入方式:importpandasaspd325二月20244.1Pandas中的數據結構Pandas有三種數據結構:Series、DataFrame和Panel。Series類似于一維數組;DataFrame是類似表格的二維數組;Panel可以視為Excel的多表單Sheet425二月20244.1Pandas中的數據結構525二月20244.1.1SeriesSeries是一種一維數組對象,包含了一個值序列,并且包含了數據標簽,稱為索引〔index〕,可通過索引來訪問數組中的數據。4.1Pandas中的數據結構1.Series的創立625二月2024pd.Series(data=None,index=None,dtype=None,name=None,copy=False,fastpath=False)【例4-1】通過列表創立SeriesIn[1]:importpandasaspdobj=pd.Series([1,-2,3,-4])#僅有一個數組構成print(obj)Out[1]:011-2233-4dtype:int644.1Pandas中的數據結構1.Series的創立725二月2024【例4-2】創立Series時指定索引In[2]:i=["a","c","d","a"]v=[2,4,5,7]t=pd.Series(v,index=i,name="col")print(t)Out[2]:a2c4d5a7Name:col,dtype:int64盡管創立Series指定了index參數,實際Pandas還是有隱藏的index位置信息的。所以Series有兩套描述某條數據的手段:位置和標簽4.1Pandas中的數據結構1.Series的創立825二月2024【例4-3】Series位置和標簽的使用4.1Pandas中的數據結構1.Series的創立925二月20242〕通過字典創立如果數據被存放在一個Python字典中,也可以直接通過這個字典來創立Series。In[4]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}obj3=pd.Series(sdata)print(obj3)Out[4]:Ohio35000Texas71000Oregon16000Utah5000dtype:int644.1Pandas中的數據結構1.Series的創立1025二月20242〕通過字典創立【例4-6】鍵值和指定的索引不匹配In[6]:sdata={"a":100,"b":200,"e":300}letter=["a","b","c","e"]obj=pd.Series(sdata,index=letter)print(obj)Out[6]:a100.0b200.0cNaNe300.0dtype:float644.1Pandas中的數據結構1.Series的創立1125二月20242〕通過字典創立【例4-7】不同索引數據的自動對齊In[7]:sdata={'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000}obj1=pd.Series(sdata)states=['California','Ohio','Oregon','Texas']obj2=pd.Series(sdata,index=states)print(obj1+obj2)Out[7]:CaliforniaNaNOhio70000.0Oregon32000.0Texas142000.0UtahNaNdtype:float644.1Pandas中的數據結構1.Series的創立1225二月20242〕通過字典創立【例4-8】Series索引的修改In[8]:obj=pd.Series([4,7,-3,2])obj.index=['Bob','Steve','Jeff','Ryan']print(obj)Out[8]:Bob4Steve7Jeff-3Ryan2dtype:int644.1Pandas中的數據結構1325二月20244.1.2DataFrameDataFrame是一個表格型的數據結構,它含有一組有序的列,每列可以是不同的值類型〔數值、字符串、布爾值等〕。DataFrame既有行索引也有列索引,它可以被看做由Series組成的字典〔共用同一個索引〕。4.1Pandas中的數據結構1425二月2024DataFrame的創立格式:pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)In[9]:data={'name':['張三','李四','王五','小明'],'sex':['female','female','male','male'],'year':[2001,2001,2003,2002],'city':['北京','上海','廣州','北京']}df=pd.DataFrame(data)print(df)Out[9]:namesexyearcity0張三female2001北京1李四female2001上海2王五male2003廣州3小明male2002北京4.1Pandas中的數據結構1525二月2024DataFrame的創立【例4-10】DataFrame的索引In[10]:df1=pd.DataFrame(data,columns=['name','year','sex','city'])print(df1)Out[10]:nameyearsexcity0張三2001female北京1李四2001female上海2王五2003male廣州3小明2002male北京跟Series一樣,如果傳入的列在數據中找不到,就會產生NA值4.1Pandas中的數據結構1625二月2024DataFrame的創立【例4-11】DataFrame創立時的空缺值DataFrame構造函數的columns函數給出列的名字,index給出label標簽In[11]:df2=pd.DataFrame(data,columns=['name','year','sex','city','address'])print(df2)Out[11]:nameyearsexcityaddress0張三2001female北京

NaN李四2001female上海

NaN王五2003male廣州

NaN

小明2002male北京NaN4.1Pandas中的數據結構1725二月2024DataFrame的創立【例4-12】DataFrame創立時指定列名In[12]:df3=pd.DataFrame(data,columns=['name','sex','year','city'],index=['a','b','c','d'])print(df3)Out[12]:namesexyearcitya張三female2001北京b李四female2001上海c王五male2003廣州d小明male2002北京4.1Pandas中的數據結構1825二月2024DataFrame的屬性函數返回值values元素index索引columns列名dtypes類型size元素個數ndim維度數shape數據形狀(行列數目)1925二月20244.1.3索引對象Pandas的索引對象負責管理軸標簽和其他元數據〔比方軸名稱等〕。構建Series或DataFrame時,所用到的任何數組或其他序列的標簽都會被轉換成一個Index。4.1Pandas中的數據結構2025二月20244.1.3索引對象【例4-13】顯示DataFrame的索引和列。4.1Pandas中的數據結構In[13]:print(df)print(df.index)print(df.columns)Out[13]:

namesexyearcitya張三female2001北京b李四female2001上海c王五male2003廣州d小明male2002北京Index(['a','b','c','d'],dtype='object')Index(['name','sex','year','city'],dtype='object')2125二月20244.1.3索引對象【例4-14】DataFrame的Index。4.1Pandas中的數據結構In[14]:print('name'indf.columns)print('a'indf.index)Out[14]:

TrueFalse2225二月20244.1.3索引對象每個索引都有一些方法和屬性,它們可用于設置邏輯并答復有關該索引所包含的數據的常見問題。Index的常用方法和屬性見表4-1。4.1Pandas中的數據結構方法說明append連接另一個Index對象,產生一個新的Indexdiff計算差集,并得到一個Indexintersection計算交集union計算并集isin計算一個指示各值是否都包含在參數集合中的布爾型數組delete刪除索引i處的元素,并得到新的Indexdrop刪除傳入的值,并得到新的Indexinsert將元素插入到索引i處,并得到新的Indexis_monotonic當各元素均大于等于前一個元素時,返回Trueis.unique當Index沒有重復值時,返回Trueunique計算Index中唯一值的數組2325二月20244.1.4查看DataFrame的常用屬性DataFrame的根底屬性有values、index、columns、dtypes、ndim和shape,分別可以獲取DataFrame的元素、索引、列名、類型、維度和形狀4.1Pandas中的數據結構4.2Pandas索引操作4.2.1重新索引2425二月2024索引對象是無法修改的,因此,重新索引是指對索引重新排序而不是重新命名,如果某個索引值不存在的話,會引入缺失值。對于重建索引引入的缺失值,可以利用fill_value參數填充。4.2Pandas索引操作4.2.1重新索引2525二月2024【例4-18】重建索引時填充缺失值。In[18]:obj.reindex(['a','b','c','d','e'],fill_value=0)Out[18]:a-4.3b7.2c3.6d4.5e0.0dtype:float64對于順序數據,比方時間序列,重新索引時可能需要進行插值或填值處理,利用參數method選項可以設置:method=‘ffill’或‘pad’,表示前向值填充method=‘bfill’或‘backfill’,表示后向值填充4.2Pandas索引操作4.2.1重新索引2625二月2024【例4-19】缺失值的前向填充。4.2Pandas索引操作4.2.1重新索引2725二月2024【例4-20】缺失值的后向填充。4.2Pandas索引操作4.2.1重新索引2825二月2024【例4-21】DataFrame數據。In[21]:df4=pd.DataFrame(np.arange(9).reshape(3,3),index=['a','c','d'],columns=['one','two','four'])print(df4)Out[21]:

onetwofoura012c345d6784.2Pandas索引操作4.2.1重新索引2925二月2024【例4-22】reindex操作。傳入fill_value=n用n代替缺失值。4.2Pandas索引操作4.2.1重新索引3025二月2024【例4-23】傳入fill_value=n填充缺失值。4.2Pandas索引操作4.2.1重新索引3125二月2024表4-2.reindex函數參數參數使用說明index用于索引的新序列

method插值(填充)方式fill_value缺失值替換值limit最大填充量level copy在Multiindex的指定級別上匹配簡單索引,否則選取其子集默認為True,無論如何都復制;如果為False,則新舊相等時就不復制4.2Pandas索引操作3225二月20244.2.2更換索引如果不希望使用默認的行索引,那么可以在創立的時候通過Index參數來設置。在DataFrame數據中,如果希望將列數據作為索引,那么可以通過set_index方法來實現。【例4-24】重建索引。In[24]:df5

=

df1.set_index('city')

print(df5)Out[24]:citynameyearsex北京

張三2001female上海

李四2001female廣州

王五2003male北京

小明2002male4.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3325二月2024在數據分析中,選取需要的數據進行分析處理是最根本操作。在Pandas中需要通過索引完成數據的選取。1.選取列:通過列索引或以屬性的方式可以單獨獲取DataFrame的列數據,返回的數據類型為Series。4.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3425二月20242.選取行

通過切片形式可以選取一行或多行數據。4.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3525二月2024選取通過DataFrame提供的head和tail方法可以得到多行數據,但是用這兩種方法得到的數據都是從開始或者末尾獲取連續的數據,而利用sample可以隨機抽取數據并顯示。head〔〕#默認獲取前5行head〔n〕#獲取前n行tail〔〕#默認獲取后5行head〔n〕#獲取后n行sample〔n〕#隨機抽取n行顯示4.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3625二月20243.選取行和列DataFrame.loc(行索引名稱或條件,列索引名稱)DataFrame.iloc(行索引位置,列索引位置)4.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3725二月20244.3DataFrame的數據查詢與編輯4.3.1DataFrame數據的查詢3825二月20244.布爾選擇

可以對DataFrame中的數據進行布爾方式選擇。4.3DataFrame的數據查詢與編輯4.3.2DataFrame數據的編輯3925二月20241.增加數據增加一行直接通過append方法傳入字典結構數據即可。4.3DataFrame的數據查詢與編輯4.3.2DataFrame數據的編輯4025二月20241.增加數據增加列時,只需為要增加的列賦值即可創立一個新的列。4.3DataFrame的數據查詢與編輯4.3.2DataFrame數據的編輯4125二月20242.刪除數據刪除數據直接用drop方法,通過axis參數確定是刪除的是行還是列。默認數據刪除不修改原數據,需要在原數據刪除行列需要設置參數inplace=True。4.3DataFrame的數據查詢與編輯4.3.2DataFrame數據的編輯4225二月20242.刪除數據

4.3DataFrame的數據查詢與編輯4.3.2DataFrame數據的編輯4325二月20243.修改數據修改數據時直接對選擇的數據賦值即可。

需要注意的是,數據修改是直接對DataFrame數據修改,操作無法撤銷,因此更改數據時要做好數據備份。4.4Pandas數據運算4.4.1算術運算4425二月2024Pandas的數據對象在進行算術運算時,如果有相同索引那么進行算術運算,如果沒有,那么會自動進行數據對齊,但會引入缺失值。4.4Pandas數據運算4.4.1算術運算4525二月2024

【例4-36】DataFrame類型的數據相加。4.4Pandas數據運算4625二月20244.4.2函數應用和映射

已定義好的函數可以通過以下三種方法應用到數據:1.map函數:將函數套用到Series的每個元素中;2.apply函數,將函數套用到DataFrame的行或列上,行與列通過axis參數設置;3.applymap函數,將函數套用到DataFrame的每個元素上。4.4Pandas數據運算4725二月20244.4.2函數應用和映射【例4-37】將水果價格表中的“元”去掉。In[37]:data={'fruit':['apple','grape','banana'],'price':['30元','43元','28元']}df1=pd.DataFrame(data)print(df1)deff(x):returnx.split('元')[0]df1['price']=df1['price'].map(f)print('修改后的數據表:\n',df1)Out[37]:fruitprice0apple30元grape43元banana28元修改后的數據表:fruitprice0apple30grape432banana284.4Pandas數據運算4825二月20244.4.2函數應用和映射【例4-38】apply函數的使用方法。4.4Pandas數據運算4925二月20244.4.2函數應用和映射【例4-39】applymap函數的用法。4.4Pandas數據運算5025二月20244.4.3排序sort_index方法:對索引進行排序,默認為升序,降序排序時加參數ascending=False。

sort_values方法:對數值進行排序。by參數設置待排序的列名4.4Pandas數據運算5125二月20244.4.3排序對于DataFrame數據排序,通過指定軸方向,使用sort_index函數對行或列索引進行排序。如果要進行列排序,那么通過sort_values函數把列名傳給by參數即可。4.4Pandas數據運算5225二月20244.4.4匯總與統計1.數據匯總在DataFrame中,可以通過sum方法對每列進行求和匯總,與Excel中的sum函數類似。如果設置axis=1指定軸方向,可以實現按行匯總。4.4Pandas數據運算5325二月20244.4.4匯總與統計2.數據描述與統計

利用describe方法會對每個數值型的列數據進行統計4.4Pandas數據運算5425二月2024方法名稱說明方法名稱說明min最小值max最大值mean均值ptp極差median中位數std標準差var方差cov協方差sem標準誤差mode眾數skew樣本偏度kurt樣本峰度quantile四分位數count非空值數目describe描述統計mad平均絕對離差表4-3.Pandas中常用的描述性統計量4.4Pandas數據運算5525二月2024對于類別型特征的描述性統計,可以使用頻數統計表。Pandas庫中通過unique方法獲取不重復的數組,利用value_counts方法實現頻數統計。

5625二月20244.5.1數據分組groupby方法groupby方法可以根據索引或字段對數據進行分組。格式為:DataFrame.groupby(by=None,axis=0,level=None,as_index=True,sort=True,group_keys=True,squeeze=False,**kwargs)4.5數據分組與聚合4.5數據分組與聚合5725二月20244.5.1數據分組參數名稱參數說明by可以傳入函數、字典、Series等,用于確定分組的依據axis接收int,表示操作的軸方向,默認為0level接收int或索引名,代表標簽所在級別,默認為Noneas_index接收boolean,表示聚合后的標簽是否以DataFrame索引輸出sort接收boolean,表示對分組依據和分組標簽排序,默認為Truegroup_keys接收boolean,表示是否顯示分組標簽的名稱,默認為Truesqueeze接收boolean,表示是否在允許情況下對返回數據降維,默認False表4-4.groupby方法的參數及其說明4.5數據分組與聚合5825二月20244.5.1數據分組4.5數據分組與聚合5925二月20242.按列名分組DataFrame數據的列索引名可以作為分組鍵,但需要注意的是用于分組的對象必須是DataFrame數據本身,否那么搜索不到索引名稱會報錯。4.5數據分組與聚合6025二月20243.按列表或元組分組分組鍵還可以是長度和DataFrame行數相同的列表或元組,相當于將列表或元組看做DataFrame的一列,然后將其分組。4.5數據分組與聚合6125二月20244.按字典分組

如果原始的DataFrame中的分組信息很難確定或不存在,可以通過字典結構,定義分組信息。4.5數據分組與聚合6225二月20245.按函數分組

函數作為分組鍵的原理類似于字典,通過映射關系進行分組,但是函數更加靈活。4.5數據分組與聚合6325二月20244.5.2數據聚合函數使用說明count計數sum求和mean求平均值median求中位數std、var無偏標準差和方差min、max求最小值最大值prod求積first、last第一個和最后一個值1.聚合函數除了之前例如中的mean函數外,常用的聚合運算還有count和sum等。表4-5.聚合運算方法4.5數據分組與聚合2.使用agg方法聚合數據agg、aggregate方法都支持對每個分組應用某個函數,包括Python內置函數或自定義函數。同時,這兩個方法也能夠直接對DataFrame進行函數應用操作。在正常使用過程中,agg和aggregate函數對DataFrame對象操作的功能根本相同,因此只需掌握一個即可。6425二月20244.5數據分組與聚合6525二月20244.5.3分組運算1.transform方法通過transform方法可以將運算分布到每一行。2.使用apply方法聚合數據apply方法類似于agg方法,能夠將函數應用于每一列。4.6數據透視表25二月20244.6.1透視表pivot_table函數格式:pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True,margins_name='All')數據透視表〔PivotTable〕是數據分析中常見的工具之一,根據一個或多個鍵值對數據進行聚合,根據列或行的分組鍵將數據劃分到各個區域。4.6數據透視表25二月2024參數使用說明dat

溫馨提示

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

評論

0/150

提交評論