




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章數(shù)據(jù)分析庫(kù)pandas基礎(chǔ)《Python數(shù)據(jù)分析與應(yīng)用:從數(shù)據(jù)獲取到可視化(第2版)》學(xué)習(xí)目標(biāo)/Target
掌握Series的創(chuàng)建方式,能夠通過(guò)Series類的構(gòu)造方法創(chuàng)建Series類的對(duì)象
掌握DataFrame的創(chuàng)建方式,能夠通過(guò)構(gòu)造方法創(chuàng)建DataFrame類的對(duì)象
熟悉索引對(duì)象的類型和特點(diǎn),能夠歸納索引對(duì)象的類型和特點(diǎn)
掌握重置索引的方式,能夠通過(guò)reindex()方法重置對(duì)象的索引學(xué)習(xí)目標(biāo)/Target
掌握索引與切片的基本用法,能夠通過(guò)索引或切片獲取數(shù)據(jù)
掌握l(shuí)oc和iloc屬性的基本用法,能夠使用loc和iloc屬性獲取數(shù)據(jù)
掌握讀寫數(shù)據(jù)的方式,能夠熟練地讀寫不同來(lái)源的數(shù)據(jù)
掌握數(shù)據(jù)的排序方式,能夠使用索引或值對(duì)Series或DataFrame進(jìn)行排序?qū)W習(xí)目標(biāo)/Target
掌握算術(shù)運(yùn)算方式,能夠通過(guò)算術(shù)運(yùn)算符或算術(shù)方法對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算
掌握統(tǒng)計(jì)計(jì)算的方式,能夠通過(guò)統(tǒng)計(jì)方法對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算
掌握統(tǒng)計(jì)描述的方式,能夠通過(guò)describe()方法描述對(duì)象的統(tǒng)計(jì)指標(biāo)
掌握分層索引操作,能夠創(chuàng)建有分層索引的對(duì)象,使用分層索引獲取數(shù)據(jù)章節(jié)概述/Summarypandas是一個(gè)以NumPy為基礎(chǔ),專門為數(shù)據(jù)分析而設(shè)計(jì)的庫(kù),該庫(kù)中不僅提供了一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,而且提供了高效操作大量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),被廣泛地應(yīng)用到諸如金融、統(tǒng)計(jì)等一些領(lǐng)域中。pandas庫(kù)是本書的重點(diǎn)內(nèi)容,本章只介紹一些pandas的基礎(chǔ)知識(shí),更多知識(shí)會(huì)在后面的章節(jié)進(jìn)行介紹。目錄/Contents01020304數(shù)據(jù)結(jié)構(gòu)索引和切片操作讀寫數(shù)據(jù)數(shù)據(jù)排序目錄/Contents05060708算術(shù)運(yùn)算與數(shù)據(jù)對(duì)齊統(tǒng)計(jì)計(jì)算與描述分層索引操作案例:陜西高考分?jǐn)?shù)線統(tǒng)計(jì)分析數(shù)據(jù)結(jié)構(gòu)3.13.1.1
Series掌握Series的結(jié)構(gòu)和創(chuàng)建方式,能夠通過(guò)Series類的構(gòu)造方法創(chuàng)建Series類的對(duì)象學(xué)習(xí)目標(biāo)3.1.1
Series結(jié)構(gòu)Series是類似于一維數(shù)組的數(shù)據(jù)結(jié)構(gòu),主要由一組數(shù)據(jù)和與之相關(guān)的索引兩部分組成,其中數(shù)據(jù)可以是任意類型的,比如整數(shù)、字符串、浮點(diǎn)數(shù)、Python對(duì)象等。默認(rèn)是系統(tǒng)自動(dòng)生成的位置索引,還可以是用戶自定義的標(biāo)簽索引3.1.1
Series構(gòu)造方法我們?nèi)粝M诔绦蛑惺褂肧eries這種數(shù)據(jù)結(jié)構(gòu),就需要先通過(guò)Series類的構(gòu)造方法創(chuàng)建一個(gè)Series類的對(duì)象。in1d(ar1,
ar2,
assume_unique=False,
invert=False)
data:表示數(shù)據(jù),它的值可以是ndarray對(duì)象、列表、字典、標(biāo)量等。index:表示索引,它的值必須是可散列的,且與數(shù)據(jù)的長(zhǎng)度相同。如果沒(méi)有給index參數(shù)傳值,則默認(rèn)會(huì)使用RangeIndex
類的對(duì)象;如果data參數(shù)的值是字典且index參數(shù)的值為None,則字典的鍵會(huì)用做索引。dtype:表示數(shù)據(jù)的類型,它的值可以是numpy.dtype。3.1.1
Series創(chuàng)建Series類的對(duì)象通過(guò)向Series類的構(gòu)造方法中傳入一個(gè)列表創(chuàng)建一個(gè)Series類的對(duì)象。ser_obj=pd.Series(data=['Python','C','Java','JavaScript','PHP','R'])當(dāng)創(chuàng)建Series類的對(duì)象時(shí),也可以顯式地給數(shù)據(jù)指定標(biāo)簽索引。ser_obj=pd.Series(data=['Python','C','Java','JavaScript','PHP','R'],index=['a','b','c','d','e','f'])3.1.1
Series雖然我們現(xiàn)在只能看到用戶指定的標(biāo)簽索引,但是系統(tǒng)仍然會(huì)生成一組位置索引,只是位置索引是隱藏的。創(chuàng)建Series類的對(duì)象3.1.1
Series還可以通過(guò)字典創(chuàng)建一個(gè)Series類的對(duì)象。year_dict={'a':2022,'b':2023,'c':2024,
'd':2025,'e':2026,'f':2027}ser_obj=pd.Series(data=year_dict)創(chuàng)建Series類的對(duì)象3.1.1
Series通過(guò)index屬性獲取Series類對(duì)象的索引。ser_obj.index獲取索引和數(shù)據(jù)通過(guò)values屬性獲取Series類對(duì)象的數(shù)據(jù)。ser_obj.values3.1.2
DataFrame掌握DataFrame的結(jié)構(gòu)和創(chuàng)建方式,能夠通過(guò)DataFrame類的構(gòu)造方法創(chuàng)建DataFrame類的對(duì)象學(xué)習(xí)目標(biāo)3.1.2
DataFrame結(jié)構(gòu)DataFrame是一個(gè)類似于二維數(shù)組或表格的數(shù)據(jù)結(jié)構(gòu),它通過(guò)行列的形式組織數(shù)據(jù),每列數(shù)據(jù)可以是不同的數(shù)據(jù)類型。與Series相比,DataFrame也是由索引和數(shù)據(jù)兩部分組成,不同的是,DataFrame既有行索引又有列索引。DataFrame可以看作多個(gè)Series類對(duì)象的組合,它里面每一列數(shù)據(jù)是一個(gè)Series類的對(duì)象,這些對(duì)象之間共用同一個(gè)行索引。3.1.2
DataFrame構(gòu)造方法我們?nèi)粝M诔绦蛑惺褂肈ataFrame這種數(shù)據(jù)結(jié)構(gòu),就需要先通過(guò)DataFrame類的構(gòu)造方法創(chuàng)建一個(gè)DataFrame類的對(duì)象。DataFrame(data=None,
index=None,
columns=None,
dtype=None,
copy=None)data:表示數(shù)據(jù),該參數(shù)可以接收ndarray對(duì)象、列表、字典或其他DataFrame類的對(duì)象。index:表示行索引。如果沒(méi)有傳入該參數(shù),則默認(rèn)會(huì)自動(dòng)生成0~N的整數(shù)。columns:表示列索引。如果沒(méi)有傳入索引參數(shù),則默認(rèn)會(huì)自動(dòng)生成0~N的整數(shù)。3.1.2
DataFrame創(chuàng)建DataFrame類對(duì)象importnumpyasnpimportpandasaspdarr_2d=np.arange(1,31).reshape((6,5))df_obj=pd.DataFrame(data=arr_2d)df_obj使用系統(tǒng)自動(dòng)生成的索引3.1.2
DataFrame指定列索引系統(tǒng)自動(dòng)生成的索引無(wú)法很好地顯示每列數(shù)據(jù)代表的含義,使數(shù)據(jù)的可讀性比較差,因此我們可以給數(shù)據(jù)指定行索引或列索引,提升數(shù)據(jù)的顯示效果。df_obj=pd.DataFrame(data=arr_2d,
columns=['No1','No2','No3','No4','No5'])df_obj3.1.2
DataFrame獲取一列數(shù)據(jù)如果想要從DataFrame類的對(duì)象中獲取一列數(shù)據(jù),則可以通過(guò)訪問(wèn)屬性的方式獲取,返回的結(jié)果是一個(gè)Series類的對(duì)象。result=df_obj.No2result※如果索引的標(biāo)簽名稱中有一些特殊的字符,比如空格、下畫線等,那么通過(guò)訪問(wèn)屬性的方式獲取數(shù)據(jù)顯得不太合適了,這時(shí)可以使用索引獲取數(shù)據(jù)。3.1.2
DataFrame查看摘要信息為了便于用戶從整體了解數(shù)據(jù)的摘要信息,比如每一列總共有多少個(gè)數(shù)據(jù),每一列數(shù)據(jù)是什么類型的,哪一列缺數(shù)據(jù)等,可以使用info()方法查看。df_obj.info()<class'pandas.core.frame.DataFrame'>RangeIndex:6entries,0to5Datacolumns(total5columns):#ColumnNon-NullCountDtype----------------------------0No16non-nullint321No26non-nullint322No36non-nullint323No46non-nullint324No56non-nullint32dtypes:int32(5)memoryusage:248.0bytes3.1.2
DataFrame查看摘要信息<class'pandas.core.frame.DataFrame'>RangeIndex:6entries,0to5Datacolumns(total5columns):#ColumnNon-NullCountDtype----------------------------0No16non-nullint321No26non-nullint322No36non-nullint323No46non-nullint324No56non-nullint32dtypes:int32(5)memoryusage:248.0bytes對(duì)象的類型、行索引的相關(guān)信息、總列數(shù)3.1.2
DataFrame查看摘要信息<class'pandas.core.frame.DataFrame'>RangeIndex:6entries,0to5Datacolumns(total5columns):#ColumnNon-NullCountDtype----------------------------0No16non-nullint321No26non-nullint322No36non-nullint323No46non-nullint324No56non-nullint32dtypes:int32(5)memoryusage:248.0bytes5行4列的表格,用于描述對(duì)象的每一列數(shù)據(jù)的具體信息3.1.2
DataFrame查看摘要信息<class'pandas.core.frame.DataFrame'>RangeIndex:6entries,0to5Datacolumns(total5columns):#ColumnNon-NullCountDtype----------------------------0No16non-nullint321No26non-nullint322No36non-nullint323No46non-nullint324No56non-nullint32dtypes:int32(5)memoryusage:248.0bytes數(shù)據(jù)類型的統(tǒng)計(jì)信息和內(nèi)存使用情況索引和切片操作3.23.2.1
索引對(duì)象熟悉索引對(duì)象的類型和特點(diǎn),能夠歸納索引對(duì)象的類型和特點(diǎn)學(xué)習(xí)目標(biāo)Index類的子類在pandas中,無(wú)論是位置索引還是標(biāo)簽索引,它們都屬于Index類的對(duì)象,也就是索引對(duì)象。Index類是一個(gè)基類,它派生了很多子類,每個(gè)子類代表不同形式的索引。3.2.1
索引對(duì)象類說(shuō)明示例RangeIndex位置索引(默認(rèn))0、1、2、3……NInt64Index整數(shù)索引1、-5、8、10、-9Float64Index浮點(diǎn)數(shù)索引-1.0、-5.5、10.2、9.8、6.3DatetimeIndex時(shí)間戳索引2022-11-2517:00:00、2022-11-2817:00:00、2022-12-2517:00:00PeriodIndex時(shí)間間隔索引2022-11-2500:00:00、2022-11-2501:00:00、2022-11-2502:00:00……MultiIndex分層索引aa、ab、ac、bd、be特性3.2.1
索引對(duì)象不可變性可重復(fù)性特性3.2.1
索引對(duì)象不可變性索引對(duì)象一旦創(chuàng)建是不可以被修改的,也就是說(shuō),索引的值是固定不變的,這樣做能夠維護(hù)從索引到數(shù)據(jù)的唯一映射關(guān)系,并保證Series或DataFrame中數(shù)據(jù)的安全。importpandasaspdser_obj=pd.Series(range(5),index=['a','b','c','d','e'])ser_index['2']='cc'TypeError:Indexdoesnotsupportmutableoperations特性3.2.1
索引對(duì)象可重復(fù)性索引對(duì)象的值是可以重復(fù)的。importpandasaspdser_obj=pd.Series(range(5),index=['a','a','c','d','e'])ser_index=ser_obj.indexser_index特性3.2.1
索引對(duì)象可重復(fù)性通常情況下,索引的值被要求是唯一的,不過(guò)并非強(qiáng)制的。我們可以使用索引對(duì)象的is_unique屬性判斷索引的值是否唯一。ser_index.is_unique3.2.2
重置索引掌握重置索引的方式,能夠通過(guò)reindex()方法實(shí)現(xiàn)重置索引的功能學(xué)習(xí)目標(biāo)3.2.2
重置索引重置索引是指重新為對(duì)象設(shè)定索引,以構(gòu)建一個(gè)符合新索引的對(duì)象。概念reindex()方法會(huì)對(duì)Series類或DataFrame類對(duì)象的原索引和新索引進(jìn)行匹配,如果新索引跟原索引的值相同,則新索引對(duì)應(yīng)的數(shù)據(jù)會(huì)被設(shè)置為原數(shù)據(jù);如果新索引跟原索引的值不同,則新索引對(duì)應(yīng)的空缺位置會(huì)被填充為NaN或指定的其他值。方法3.2.2
重置索引語(yǔ)法格式下面以DataFrame類的reindex()方法為例,介紹reindex()方法的語(yǔ)法格式。reindex(labels=None,
index=None,
columns=None,
axis=None,
method=None,
copy=True,
level=None,
fill_value=nan,
limit=None,
tolerance=None)index,columns:表示新的行索引、列索引。method:表示空缺位置的填充方式,包括'None'(默認(rèn)值)、'ffill'或'pad'、'bfill或backfill'、'nearest'這幾個(gè)值,其中'None'代表不填充空缺位置;'ffill'或'pad'代表前向填充空缺位置;'bfill或backfill'代表后向填充空缺位置;'nearest'代表根據(jù)最近的值填充空缺位置。3.2.2
重置索引語(yǔ)法格式reindex(labels=None,
index=None,
columns=None,
axis=None,
method=None,
copy=True,
level=None,
fill_value=nan,
limit=None,
tolerance=None)copy:是否返回新的對(duì)象,默認(rèn)值為True。fill_value:表示空缺位置被填充的值,默認(rèn)值為NaN。limit:表示前向或者后向填充時(shí)的最大填充量。下面以DataFrame類的reindex()方法為例,介紹reindex()方法的語(yǔ)法格式。3.2.2
重置索引示例importpandasaspddf_obj=pd.DataFrame({'no1':[1.0,2.0,3.0],'no2':[4.0,5.0,6.0]},index=['a','b','c'])new_df=df_obj.reindex(index=['a','c','e'])new_df1.
重置DataFrame對(duì)象的索引3.2.2
重置索引示例importpandasaspddf_obj=pd.DataFrame({'no1':[1.0,2.0,3.0],'no2':[4.0,5.0,6.0]},index=['a','b','c'])new_df=df_obj.reindex(index=['a','c','e'],
fill_value=9)new_df2.
重置索引時(shí)指定填充值3.2.2
重置索引示例importpandasaspddf_obj=pd.DataFrame({'no1':[1.0,2.0,3.0],'no2':[4.0,5.0,6.0]},index=['a','b','c'])new_df=df_obj.reindex(index=['a','c','e'],
method='ffill')new_df3.
重置索引時(shí)指定填充方式3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)掌握索引與切片的基本用法,能夠通過(guò)索引或切片獲取Series或DataFrame的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)pandas中通過(guò)索引或切片可以獲取Series類和DataFrame類對(duì)象的數(shù)據(jù),由于Series類和DataFrame類對(duì)象的結(jié)構(gòu)有所不同,所以它們的索引和切片操作也會(huì)有所不同。Series的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)Series類對(duì)象與NumPy一維數(shù)組的索引用法相似,不同的是,Series類對(duì)象的索引既可以是位置索引,也可以是標(biāo)簽索引。如果需要獲取Series類對(duì)象的單個(gè)數(shù)據(jù),則可以通過(guò)位置索引和標(biāo)簽索引進(jìn)行獲取。importpandasaspdser_obj=pd.Series([10,20,30,40,50],index=['one','two','three','four','five'])ser_obj[2]ser_obj['three']通過(guò)位置索引獲取單個(gè)數(shù)據(jù)通過(guò)標(biāo)簽索引獲取單個(gè)數(shù)據(jù)Series的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)如果想要獲取Series類對(duì)象的多個(gè)數(shù)據(jù),則可以通過(guò)包含多個(gè)位置索引或標(biāo)簽索引的列表進(jìn)行獲取,此過(guò)程相當(dāng)于利用花式索引獲取一維數(shù)組元素的操作。ser_obj[[0,2,3]]通過(guò)位置索引獲取多個(gè)數(shù)據(jù)ser_obj[['one','three','four']]通過(guò)標(biāo)簽索引獲取多個(gè)數(shù)據(jù)Series的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)布爾索引同樣適用于pandas,具體用法與一維數(shù)組的布爾索引用法相同,即將Series類的對(duì)象中每個(gè)數(shù)據(jù)進(jìn)行邏輯運(yùn)算,只要運(yùn)算結(jié)果為True,就返回Series類對(duì)象中位置為True對(duì)應(yīng)的數(shù)據(jù)。ser_obj[ser_obj>20]Series的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)通過(guò)切片也可以獲取Series類的對(duì)象中的部分?jǐn)?shù)據(jù)。如果切片使用的索引是位置索引,則切片結(jié)果包含起始位置但不包含結(jié)束位置對(duì)應(yīng)的數(shù)據(jù);如果切片使用的索引是標(biāo)簽索引,則切片結(jié)果既包含起始位置又包含結(jié)束位置對(duì)應(yīng)的數(shù)據(jù)。ser_obj[1:3]通過(guò)位置索引進(jìn)行切片操作ser_obj['two':'four']通過(guò)標(biāo)簽索引進(jìn)行切片操作DataFrame的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)DataFrame類對(duì)象與NumPy二維數(shù)組的索引用法相似,它里面每一列數(shù)據(jù)都是一個(gè)Series類的對(duì)象,可以通過(guò)列索引進(jìn)行獲取。importnumpyasnpimportpandasaspdarr=np.arange(12).reshape(3,4)df_obj=pd.DataFrame(arr,index=['row_1','row_2',
'row_3'],columns=['col_1','col_2','col_3','col_4'])df_obj['col_2']DataFrame的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)如果想要從DataFrame類對(duì)象中獲取多列數(shù)據(jù),那么可以將多個(gè)索引存放到列表中,再分別根據(jù)列表里面的每個(gè)索引進(jìn)行獲取,此過(guò)程相當(dāng)于利用花式索引獲取二維數(shù)組元素的操作。df_obj[['col_1','col_3']]DataFrame的索引和切片操作3.2.3
通過(guò)索引和切片獲取數(shù)據(jù)如果想要從DataFrame類對(duì)象中獲取多行數(shù)據(jù),那么可以通過(guò)切片完成。df_obj[1:3]
還可以通過(guò)切片獲取部分行部分列的數(shù)據(jù)。df_obj[1:3][['col_1','col_3']]3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)掌握l(shuí)oc和iloc屬性的基本用法,能夠使用loc和iloc屬性獲取Series或DataFrame的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)前面介紹索引和切片的相關(guān)操作時(shí),既可以單獨(dú)使用位置索引或標(biāo)簽索引來(lái)獲取數(shù)據(jù),也可以混合使用位置索引、標(biāo)簽索引進(jìn)行獲取,這對(duì)剛接觸pandas的開(kāi)發(fā)人員來(lái)說(shuō)是十分混亂的。為了從嚴(yán)格意義上區(qū)分位置索引和標(biāo)簽索引的相關(guān)操作,pandas中提供了兩個(gè)非常重要的屬性,分別是loc和iloc,其中l(wèi)oc是基于標(biāo)簽索引的索引器,iloc是基于位置索引的索引器。3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)loc屬性獲取數(shù)據(jù)loc屬性用于根據(jù)標(biāo)簽索引來(lái)獲取數(shù)據(jù)。Series.loc[參數(shù)]DataFrame.loc[參數(shù)1,參數(shù)2]單個(gè)標(biāo)簽索引,比如a、No1、row_1、col_1等。標(biāo)簽索引構(gòu)成的列表或數(shù)組,比如['a','b','c']、['col_1','col_3']等?;跇?biāo)簽索引的切片,比如'a':'c'、'two':'four'。布爾類型的列表或數(shù)組,比如[True,False,True]?!鶇?shù)1和參數(shù)2中涉及的索引分別是行索引和列索引,如果省略參數(shù)2,則此時(shí)獲取的結(jié)果是DataFrame類的對(duì)象的一行或多行數(shù)據(jù)。3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)loc屬性獲取數(shù)據(jù)importpandasaspdser_obj=pd.Series([10,20,30,40,50],index=['row1','row2','row3','row4','row5'])1.
獲取Series類對(duì)象的數(shù)據(jù)ser_obj.loc['row2']ser_obj.loc[['row2','row5']]ser_obj.loc['row3':'row5']ser_bool=ser_obj<30ser_obj.loc[ser_bool]獲取單個(gè)數(shù)據(jù)獲取多個(gè)數(shù)據(jù)獲取多個(gè)連續(xù)數(shù)據(jù)獲取符合條件的數(shù)據(jù)3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)loc屬性獲取數(shù)據(jù)arr=np.arange(12).reshape(3,4)df_obj=pd.DataFrame(arr,index=['row_1','row_2','row_3'],
columns=['col_1','col_2','col_3','col_4'])2.
獲取DataFrame類對(duì)象的數(shù)據(jù)df_obj.loc['row_1']df_obj.loc[['row_1','row_3']]df_obj.loc['row_1':'row_2']df_obj.loc[[True,False,True]]獲取一行數(shù)據(jù)獲取多行數(shù)據(jù)獲取連續(xù)多行數(shù)據(jù)獲取符合條件多行數(shù)據(jù)3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)loc屬性獲取數(shù)據(jù)arr=np.arange(12).reshape(3,4)df_obj=pd.DataFrame(arr,index=['row_1','row_2','row_3'],
columns=['col_1','col_2','col_3','col_4'])2.
獲取DataFrame類對(duì)象的數(shù)據(jù)df_obj.loc['row_3','col_3']df_obj.loc['row_1':'row_3',['col_1','col_3']]獲取單個(gè)數(shù)據(jù)獲取多列數(shù)據(jù)3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)iloc屬性獲取數(shù)據(jù)iloc屬性用于根據(jù)位置索引來(lái)獲取數(shù)據(jù)。Series.iloc[參數(shù)]DataFrame.iloc[參數(shù)1,參數(shù)2]單個(gè)位置索引,比如0、1、2、3等。位置索引構(gòu)成的列表或數(shù)組,比如[0,2,3]等?;谖恢盟饕那衅热?:2、2:5。布爾類型的列表或數(shù)組,比如[True,False,True]。3.2.4
通過(guò)loc和iloc屬性獲取數(shù)據(jù)通過(guò)iloc屬性獲取數(shù)據(jù)df_obj.iloc[0]df_obj.iloc[[0,2]]df_obj.iloc[0:2]df_obj.iloc[[True,False,True]]獲取一行數(shù)據(jù)獲取多行數(shù)據(jù)獲取連續(xù)多行數(shù)據(jù)獲取符合條件多行數(shù)據(jù)df_obj.iloc[2,2]df_obj.iloc[0:3,[0,2]]獲取單個(gè)數(shù)據(jù)獲取多列數(shù)據(jù)讀寫數(shù)據(jù)3.33.3.1
讀寫CSV和TXT文件的數(shù)據(jù)掌握讀寫數(shù)據(jù)的方式,能夠熟練地讀寫CSV文件、TXT文件的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)CSV和TXT文件是日常生活中常用的純文本文件,它們只能保存文本的內(nèi)容,不能保存文本的樣式,其中CSV文件通常以逗號(hào)或制表符為分隔符,可以通過(guò)Excel、記事本等文本編輯器進(jìn)行查看。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)pandas中提供了一個(gè)read_csv()函數(shù),該函數(shù)用于從CSV或TXT文件中讀取數(shù)據(jù),pandas的Series
和DataFrame類中還提供了一個(gè)to_csv()方法,該方法用于向CSV或TXT文件中寫入數(shù)據(jù)。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過(guò)to_csv()方法向文本文件寫入數(shù)據(jù)to_csv()方法會(huì)向指定路徑下的CSV或TXT文件中寫入部分或全部數(shù)據(jù),如果文件不存在,則會(huì)新建一個(gè)文件;如果文件已經(jīng)存在,則會(huì)覆蓋文件中的內(nèi)容。to_csv(path_or_buf=None,
sep=',',
na_rep='',
float_format=None,
columns=None,
header=True,
...,
storage_options=None)path_or_buf:表示文件路徑,文件路徑可以是絕對(duì)路徑和相對(duì)路徑。如果該參數(shù)的值是一個(gè)文件的名稱,則該文件會(huì)被保存到當(dāng)前路徑。sep:表示文件使用的字段分隔符,默認(rèn)值是','。分隔符的長(zhǎng)度必須為1。na_rep:表示缺失數(shù)據(jù)的表示方式,默認(rèn)值是空字符串。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過(guò)to_csv()方法向文本文件寫入數(shù)據(jù)to_csv()方法會(huì)向指定路徑下的CSV或TXT文件中寫入部分或全部數(shù)據(jù),如果文件不存在,則會(huì)新建一個(gè)文件;如果文件已經(jīng)存在,則會(huì)覆蓋文件中的內(nèi)容。to_csv(path_or_buf=None,
sep=',',
na_rep='',
float_format=None,
columns=None,
header=True,
...,
storage_options=None)columns:表示向文件中寫入哪幾列的數(shù)據(jù)。header:表示文件顯示的列標(biāo)題。index:表示是否向文件中寫入行索引,默認(rèn)值為True。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過(guò)read_csv()函數(shù)從文本文件中讀取數(shù)據(jù)read_csv()函數(shù)會(huì)從指定路徑下的CSV或TXT文件中讀取數(shù)據(jù),讀取成功后會(huì)根據(jù)數(shù)據(jù)形式轉(zhuǎn)換成一個(gè)Series或DataFrame類的對(duì)象。read_csv(filepath_or_buffer,
sep=NoDefault.no_default,
delimiter=None,
header='infer',
...,
storage_options=None)filepath_or_buffer:表示文件的路徑。sep:表示文件使用的分隔符。如果沒(méi)有指定分隔符,則會(huì)嘗試使用逗號(hào)進(jìn)行分隔。header:指定文件中的哪一行作為列索引以及數(shù)據(jù)的開(kāi)頭。names:表示要使用的列名稱的列表。encoding:表示讀取文件時(shí)使用的編碼格式。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過(guò)read_csv()函數(shù)從文本文件中讀取數(shù)據(jù)除了使用read_csv()函數(shù)讀取TXT文件外,還可以使用read_table()函數(shù)讀取TXT文件,兩者的區(qū)別在于默認(rèn)使用的分隔符不同,前者使用的分隔符是逗號(hào),后面使用的分隔符是制表符(\t)。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)多學(xué)一招:預(yù)覽部分?jǐn)?shù)據(jù)當(dāng)從文件中讀取完數(shù)據(jù)后,如果想知道數(shù)據(jù)是否真正地讀取成功,可以挑選出幾行數(shù)據(jù)進(jìn)行快速預(yù)覽。pandas中提供了兩個(gè)常用的方法head()和tail(),其中head()方法用于預(yù)覽前N行數(shù)據(jù),默認(rèn)是前5行數(shù)據(jù);tail()方法用于預(yù)覽后N行數(shù)據(jù),默認(rèn)是后5行數(shù)據(jù)。3.3.2
讀寫Excel文件的數(shù)據(jù)掌握讀寫數(shù)據(jù)的方式,能夠熟練地讀寫Excel文件的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.2
讀寫Excel文件的數(shù)據(jù)Excel文件是數(shù)據(jù)分析工作中比較常用的存儲(chǔ)數(shù)據(jù)的文件,它里面可以添加若干個(gè)工作表(Sheet),每個(gè)工作表都是以表格的形式顯示數(shù)據(jù),并支持對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析等操作。3.3.2
讀寫Excel文件的數(shù)據(jù)pandas中提供了讀寫Excel文件數(shù)據(jù)的功能,分別是to_excel()方法和read_excel()函數(shù),其中to_excel()方法用于向Excel文件中寫入數(shù)據(jù),read_excel()函數(shù)用于從Excel文件中讀取數(shù)據(jù)3.3.2
讀寫Excel文件的數(shù)據(jù)通過(guò)to_excel()向Excel文件寫入數(shù)據(jù)to_excel()方法會(huì)將Series或DataFrame類的對(duì)象寫入到Excel文件中,如果Excel文件不存在,則會(huì)新建一個(gè)文件,反之則會(huì)將原文件中的內(nèi)容進(jìn)行覆蓋。to_excel(excel_writer,
sheet_name='Sheet1',
na_rep='',
float_format=None,
columns=None,
header=True,
...,
storage_options=None)excel_writer:表示寫入文件的路徑。sheet_name:表示工作表的名稱,可以接收字符串,默認(rèn)值為“Sheet1”。na_rep:表示缺失數(shù)據(jù)的表現(xiàn)形式。index:表示是否向文件中寫入行索引,默認(rèn)為True。3.3.2
讀寫Excel文件的數(shù)據(jù)通過(guò)read_excel()從Excel文件讀取數(shù)據(jù)read_excel()函數(shù)用于讀取Excel文件中的數(shù)據(jù),并根據(jù)數(shù)據(jù)的形式轉(zhuǎn)換成Series或DataFrame類的對(duì)象。read_excel(io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
squeeze=None,
dtype=None,
...,
storage_options=None)io:表示文件的路徑。sheet_name:指定要讀取的工作表的名稱,默認(rèn)值為0,說(shuō)明讀取第一個(gè)工作表。header:指定文件中的哪一行數(shù)據(jù)作為DataFrame類對(duì)象的列索引。names:表示要使用的列名稱。3.3.2
讀寫Excel文件的數(shù)據(jù)通過(guò)read_excel()從Excel文件讀取數(shù)據(jù)read_excel()函數(shù)用于讀取Excel文件中的數(shù)據(jù),并根據(jù)數(shù)據(jù)的形式轉(zhuǎn)換成Series或DataFrame類的對(duì)象。read_excel(io,
sheet_name=0,
header=0,
names=None,
index_col=None,
usecols=None,
squeeze=None,
dtype=None,
...,
storage_options=None)index_col:指定文件中的哪一列數(shù)據(jù)作為DataFrame的行索引。usecols:指定讀取哪幾列的數(shù)據(jù),默認(rèn)值為None,說(shuō)明會(huì)讀取所有列的數(shù)據(jù)。該參數(shù)可以接收一個(gè)列表,列表中的元素分別對(duì)應(yīng)列的編號(hào),編號(hào)從0開(kāi)始。3.3.3
讀取網(wǎng)頁(yè)表格的數(shù)據(jù)掌握讀取網(wǎng)頁(yè)表格的方式,能夠熟練地通過(guò)read_html()函數(shù)讀取網(wǎng)頁(yè)表格的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.3
讀取網(wǎng)頁(yè)表格的數(shù)據(jù)在瀏覽網(wǎng)頁(yè)時(shí),有些數(shù)據(jù)會(huì)在HTML網(wǎng)頁(yè)中以表格的形式進(jìn)行展示,對(duì)于這部分?jǐn)?shù)據(jù),我們可以使用pandas中的read_html()函數(shù)讀取,讀取成功后會(huì)返回一個(gè)列表,該列表中包含對(duì)應(yīng)網(wǎng)頁(yè)表格的DataFrame類的對(duì)象。read_html(io,
match='.+',
flavor=None,
header=None,
index_col=None,
skiprows=None,
attrs=None,
...,
displayed_only=True)io:表示HTML網(wǎng)頁(yè)的字符串、路徑對(duì)象或類似文件的對(duì)象。若參數(shù)io的值是字符串,則字符串的內(nèi)容可以是URL,也可以是HTML。match:表示返回包含與正則表達(dá)式或字符串匹配的文本的一組表格,默認(rèn)值為'.+',說(shuō)明匹配任何非空字符串。header:用于指定列標(biāo)題所在的行。index_col:用于指定行標(biāo)題所在的列。3.3.3
讀取網(wǎng)頁(yè)表格的數(shù)據(jù)TIOBE排行榜是根據(jù)互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的程序員、課程和第三方廠商的數(shù)量,并使用搜索引擎統(tǒng)計(jì)出排名數(shù)據(jù),用于反映編程語(yǔ)言的熱門程度。2022年發(fā)布的歷年最佳編程語(yǔ)言排行榜(部分)3.3.4
讀寫數(shù)據(jù)庫(kù)掌握讀寫數(shù)據(jù)庫(kù)的方式,能夠熟練讀寫數(shù)據(jù)庫(kù)的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.4
讀寫數(shù)據(jù)庫(kù)大多數(shù)情況下,海量的數(shù)據(jù)是使用數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)的,這主要是依賴于數(shù)據(jù)庫(kù)的數(shù)據(jù)共享性、獨(dú)立性等一些特點(diǎn)。因此,在實(shí)際生產(chǎn)環(huán)境中,絕大數(shù)的數(shù)據(jù)是存儲(chǔ)在數(shù)據(jù)庫(kù)中的。pandas
支持MySQL、Oracle、SQLite等主流數(shù)據(jù)庫(kù)的讀寫操作,本書介紹的是MySQL數(shù)據(jù)庫(kù)。3.3.4
讀寫數(shù)據(jù)庫(kù)讀寫函數(shù)或方法函數(shù)/方法說(shuō)明read_sql_table()根據(jù)數(shù)據(jù)表名稱讀取數(shù)據(jù)庫(kù)的數(shù)據(jù),并將讀取的結(jié)果轉(zhuǎn)換成一個(gè)DataFrame類的對(duì)象后返回read_sql_query()根據(jù)SQL語(yǔ)句讀取數(shù)據(jù)庫(kù)的數(shù)據(jù),并將讀取的結(jié)果轉(zhuǎn)換成一個(gè)DataFrame類的對(duì)象后返回read_sql()上述兩個(gè)函數(shù)的結(jié)合,可以根據(jù)數(shù)據(jù)表名稱或SQL語(yǔ)句讀取數(shù)據(jù)庫(kù)的數(shù)據(jù)to_sql()將Series類或DataFrame類的對(duì)象寫入到數(shù)據(jù)庫(kù)中※read_sql_table()和read_sql_query()函數(shù)都可以將讀取的數(shù)據(jù)轉(zhuǎn)換為DataFrame對(duì)象,前者表示將整張表的數(shù)據(jù)轉(zhuǎn)換成DataFrame類的對(duì)象,后者則表示將執(zhí)行SQL語(yǔ)句的結(jié)果轉(zhuǎn)換為DataFrame類的對(duì)象。3.3.4
讀寫數(shù)據(jù)庫(kù)讀寫函數(shù)或方法在連接MySQL數(shù)據(jù)庫(kù)時(shí)需要用到SQLAlchemy、PyMySQL模塊,其中SQLAlchemy模塊提供了與不同數(shù)據(jù)庫(kù)連接的功能,而PyMySQL模塊提供了Python操作MySQL數(shù)據(jù)庫(kù)的功能。如果當(dāng)前的Python環(huán)境中沒(méi)有這兩個(gè)模塊,則需要分別使用“pipinstallsqlalchemy==1.4.39”“pipinstallpymysql==1.0.2”命令安裝這幾個(gè)模塊。3.3.4
讀寫數(shù)據(jù)庫(kù)通過(guò)to_sql()方法向數(shù)據(jù)庫(kù)寫入數(shù)據(jù)to_sql()方法的功能是將Series類或DataFrame類的對(duì)象以數(shù)據(jù)表的形式寫入到數(shù)據(jù)庫(kù)中。to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None)name:表示數(shù)據(jù)表的名稱。con:表示數(shù)據(jù)庫(kù)的連接信息。該參數(shù)的值可以是Engine類或Connection類的對(duì)象。若希望創(chuàng)建一個(gè)Engine類的對(duì)象,則需要通過(guò)create_engine()函數(shù)實(shí)現(xiàn),該函數(shù)需要接收一個(gè)符合格式要求的字符串,具體格式為“數(shù)據(jù)庫(kù)類型+數(shù)據(jù)庫(kù)驅(qū)動(dòng)名稱://用戶名:密碼@機(jī)器地址:端口號(hào)/數(shù)據(jù)庫(kù)名”。3.3.4
讀寫數(shù)據(jù)庫(kù)通過(guò)to_sql()方法向數(shù)據(jù)庫(kù)寫入數(shù)據(jù)to_sql()方法的功能是將Series類或DataFrame類的對(duì)象以數(shù)據(jù)表的形式寫入到數(shù)據(jù)庫(kù)中。to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None)if_exists:當(dāng)數(shù)據(jù)表存在時(shí)如何操作數(shù)據(jù)表,該參數(shù)可以取值為fail、replace或append,默認(rèn)值為fail。其中fail表示不執(zhí)行寫入操作;replace表示將原數(shù)據(jù)表刪除后再重新創(chuàng)建;append表示在原數(shù)據(jù)表的基礎(chǔ)上追加數(shù)據(jù)。index:表示是否將DataFrame的行索引作為數(shù)據(jù)傳入數(shù)據(jù)庫(kù),默認(rèn)為True。index_label:表示是否引用索引名稱。如果index設(shè)為True,此參數(shù)為None,表示使用默認(rèn)名稱;如果index為分層索引,則它的值必須是序列類型的。3.3.4
讀寫數(shù)據(jù)庫(kù)通過(guò)to_sql()方法向數(shù)據(jù)庫(kù)寫入數(shù)據(jù)使用to_sql()方法向數(shù)據(jù)庫(kù)寫入數(shù)據(jù)時(shí),如果要寫入的數(shù)據(jù)表名與數(shù)據(jù)庫(kù)中其他的數(shù)據(jù)表名相同,則會(huì)導(dǎo)致程序出現(xiàn)異常,并反饋該數(shù)據(jù)表已存在的異常信息。3.3.4
讀寫數(shù)據(jù)庫(kù)通過(guò)read_sql()函數(shù)從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)read_sql()函數(shù)既可以讀取整張數(shù)據(jù)表,又可以執(zhí)行SQL語(yǔ)句。read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None)sql:表示被執(zhí)行的SQL語(yǔ)句。con:接收數(shù)據(jù)庫(kù)連接,表示數(shù)據(jù)庫(kù)的連接信息。index_col:表示將數(shù)據(jù)表中的列標(biāo)題作為DataFrame類對(duì)象的行索引。coerce_float:將非字符串、非數(shù)字對(duì)象的值轉(zhuǎn)換為浮點(diǎn)型數(shù)據(jù)。params:傳遞給執(zhí)行方法的參數(shù)列表,如params={‘name’:’value’}?!绻麛?shù)據(jù)中存在空值,則會(huì)使用NaN進(jìn)行補(bǔ)全。數(shù)據(jù)排序3.43.4.1
按索引排序掌握按索引排序的方式,能夠通過(guò)sort_index()方法根據(jù)行索引或列索引排序?qū)W習(xí)目標(biāo)3.4.1
按索引排序sort_index()方法可以根據(jù)行索引或列索引的大小對(duì)Series類和DataFrame類的對(duì)象進(jìn)行排序。sort_index(axis=0,
level=None,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last',
sort_remaining=True,
ignore_index=False,
key=None)axis:表示沿著哪個(gè)方向的軸排序,該參數(shù)的取值可以是0或'index'、1或'columns',其中0或'index'表示按行方向排序,1或'columns'表示按列方向排序。ascending:表示是否升序排列,默認(rèn)值為True。kind:表示排序算法,可以取值為‘quicksort’,‘mergesort’,‘heapsort’,‘stable’,其中‘quicksort’表示快速排序算法,‘mergesort’表示歸并排序算法,‘heapsort’表示堆排序算法,‘stable’表示穩(wěn)定排序算法。3.4.2
按值排序掌握按值排序的方式,能夠通過(guò)sort_values()方法根據(jù)值的大小排序?qū)W習(xí)目標(biāo)3.4.2
按值排序pandas中為Series類和DataFrame類的對(duì)象提供了按值排序的方法sort_values()。以DataFrame類的方法為例,sort_values()方法的語(yǔ)法格式如下。sort_values(by,
axis=0,
ascending=True,
inplace=False,
kind='quicksort',
na_position='last',
ignore_index=False,
key=None)by:表示排序的列。na_position:表示NaN值的位置,它只有first和last兩種取值,默認(rèn)值為last。若設(shè)為first,則會(huì)將NaN值放在開(kāi)頭;若設(shè)為False,則會(huì)將NaN值放在最后。3.4.2
按值排序若sort_values()方法操作的對(duì)象是一個(gè)DataFrame類的對(duì)象,則可以根據(jù)該對(duì)象中一列或多列的值進(jìn)行排序,不過(guò)需要將一個(gè)或多個(gè)列的索引傳遞給by參數(shù)才行。df_obj=pd.DataFrame([[0.4,-0.1,-0.3,0.0],
[0.2,0.6,-0.1,-0.7],
[0.8,0.6,-0.5,0.1]])df_obj.sort_values(by=2)算術(shù)運(yùn)算與數(shù)據(jù)對(duì)齊3.53.5
算術(shù)運(yùn)算與數(shù)據(jù)對(duì)齊掌握算術(shù)運(yùn)算操作,能夠通過(guò)算術(shù)運(yùn)算符或算術(shù)方法實(shí)現(xiàn)算術(shù)運(yùn)算操作學(xué)習(xí)目標(biāo)3.5
算術(shù)運(yùn)算與數(shù)據(jù)對(duì)齊在pandas中,Series類或DataFrame類的對(duì)象進(jìn)行算術(shù)運(yùn)算時(shí),會(huì)先將索引相同的數(shù)據(jù)按位置對(duì)齊,對(duì)齊以后再進(jìn)行相應(yīng)的運(yùn)算,沒(méi)有對(duì)齊的位置會(huì)用NaN進(jìn)行補(bǔ)齊。obj_one=pd.Series(range(10,13),index=range(3))obj_oneobj_two=pd.Series(range(20,25),index=range(5))obj_twoobj_one+obj_two010111212dtype:int64020121222323424dtype:int32030.0132.0234.03NaN4NaNdtype:float643.5
算術(shù)運(yùn)算與數(shù)據(jù)對(duì)齊如果希望不使用NAN補(bǔ)齊,則可以在調(diào)用add()方法時(shí)給fill_value參數(shù)傳值,fill_value將會(huì)使用對(duì)象中存在的數(shù)據(jù)進(jìn)行補(bǔ)充。obj_one.add(obj_two,fill_value=0)統(tǒng)計(jì)計(jì)算與描述3.63.6.1
統(tǒng)計(jì)計(jì)算掌握統(tǒng)計(jì)計(jì)算的方式,能夠通過(guò)統(tǒng)計(jì)方法對(duì)DataFrame中的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算學(xué)習(xí)目標(biāo)3.6.1
統(tǒng)計(jì)計(jì)算統(tǒng)計(jì)計(jì)算方法方法說(shuō)明sum()計(jì)算和mean()計(jì)算平均值median()計(jì)算中位數(shù)max()、min()計(jì)算最大值和最小值idxmax()計(jì)算最大索引值idxmin()計(jì)算最小索引值count()計(jì)算非NaN值的個(gè)數(shù)3.6.1
統(tǒng)計(jì)計(jì)算統(tǒng)計(jì)計(jì)算方法方法說(shuō)明var()計(jì)算樣本值的方差std()計(jì)算樣本值的標(biāo)準(zhǔn)差skew()計(jì)算樣本值的偏度(三階矩)kurt()計(jì)算樣本值的峰度(四階矩)cumsum()計(jì)算樣本值的累加和cummin()、cummax()計(jì)算樣本值的累積最小值和累積最大值cumprod()計(jì)算樣本值的累乘積3.6.2
統(tǒng)計(jì)描述掌握統(tǒng)計(jì)描述的方式,能夠通過(guò)describe()方法描述DataFrame類的對(duì)象的統(tǒng)計(jì)指標(biāo)學(xué)習(xí)目標(biāo)3.6.2
統(tǒng)計(jì)描述如果希望一次性描述Series類或DataFrame類對(duì)象的多個(gè)統(tǒng)計(jì)指標(biāo),比如平均值、最大值、最小值、求和等,則我們可以調(diào)用describe()方法實(shí)現(xiàn),而不用逐個(gè)調(diào)用各個(gè)統(tǒng)計(jì)計(jì)算方法計(jì)算。describe(percentiles=None,
include=None,
exclude=None)percentiles:表示結(jié)果包含的百分?jǐn)?shù),位于[0,1]之間。若不設(shè)置該參數(shù),則默認(rèn)為[0.25,0.5,0.75],即展示25%、50%、75%分位數(shù)。include:表示結(jié)果中包含數(shù)據(jù)類型的白名單,默認(rèn)為None。exclude:表示結(jié)果中忽略數(shù)據(jù)類型的黑名單,默認(rèn)為None。分層索引操作3.73.7.1
創(chuàng)建分層索引掌握分層索引的創(chuàng)建方式,能夠通過(guò)多種方式創(chuàng)建分層索引學(xué)習(xí)目標(biāo)3.7.1
創(chuàng)建分層索引分層索引分層索引可以理解為單層索引的延伸,即在一個(gè)軸方向上具有兩層或兩層以上的索引。外層索引內(nèi)層索引3.7.1
創(chuàng)建分層索引創(chuàng)建分層索引的方法根據(jù)嵌套列表創(chuàng)建MultiIndex類的對(duì)象。from_arrays()根據(jù)元組列表創(chuàng)建MultiIndex類的對(duì)象。from_tuples()從多個(gè)集合的笛卡爾乘積中創(chuàng)建MultiIndex類的對(duì)象。from_product()在pandas中,分層索引其實(shí)就是一個(gè)MultiIndex類的對(duì)象。MultiIndex類中提供了一些創(chuàng)建分層索引的方法。3.7.1
創(chuàng)建分層索引創(chuàng)建分層索引的方法frompandasimportMultiIndexlist_tuples=[('A','A1'),('A','A2'),('B','B1'),
('B','B2'),('B','B3')]multi_index=MultiIndex.from_tuples(tuples=list_tuples,
names=['外層索引','內(nèi)層索引'])multi_index1.
通過(guò)from_tuples()方法創(chuàng)建MultiIndex類的對(duì)象from_tuples()方法可以根據(jù)包含若干個(gè)元組的列表創(chuàng)建MultiIndex類的對(duì)象,其中元組的第一個(gè)元素作為外層索引,元組的第二個(gè)元素作為內(nèi)層索引。3.7.1
創(chuàng)建分層索引創(chuàng)建分層索引的方法frompandasimportMultiIndexmulti_array=MultiIndex.from_arrays(arrays=
[['A','B','A','B','B'],['A1','A2','B1','B2','B3']],names=['外層索引','內(nèi)層索引'])multi_array2.
通過(guò)from_arrays()方法創(chuàng)建MultiIndex類的對(duì)象from_arrays()方法用于根據(jù)一個(gè)嵌套列表創(chuàng)建MultiIndex類的對(duì)象,其中嵌套的第一個(gè)列表將作為外層索引,嵌套的第二個(gè)列表將作為內(nèi)層索引。3.7.1
創(chuàng)建分層索引創(chuàng)建分層索引的方法frompandasimportMultiIndeximportpandasaspdnumbers=[0,1,2]colors=['green','purple']multi_product=pd.MultiIndex.from_product(iterables=[numbers,colors],names=['number','color'])multi_product3.
通過(guò)from_product()方法創(chuàng)建MultiIndex類的對(duì)象from_product()方法用于從多個(gè)集合的笛卡爾乘積創(chuàng)建一個(gè)MultiIndex類的對(duì)象。3.7.1
創(chuàng)建分層索引多學(xué)一招:笛卡爾乘積在數(shù)學(xué)中,兩個(gè)集合X和Y的笛卡尓積,又稱直積,表示為X
×
Y,第一個(gè)對(duì)象是X的成員,而第二個(gè)對(duì)象是Y的所有可能有序?qū)Φ钠渲幸粋€(gè)成員
。3.7.1
創(chuàng)建分層索引多學(xué)一招:笛卡爾乘積假設(shè)集合A={a,b},集合B={0,1,2},則兩個(gè)集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}。012ab(a,0)(a,1)(a,2)(b,2)(b,1)(b,0)BAA×B3.7.2
創(chuàng)建有分層索引的對(duì)象掌握有分層索引對(duì)象的創(chuàng)建方式,能夠通過(guò)兩種方式創(chuàng)建有分層索引的對(duì)象學(xué)習(xí)目標(biāo)3.7.2
創(chuàng)建有分層索引的對(duì)象常見(jiàn)方式importnumpyasnpimportpandasaspdmulitindex_series=pd.Series([14530,13829,12047,7813,7568,
6239,15236,8291],
index=[['河北省
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 皖西衛(wèi)生職業(yè)學(xué)院《臨床疾病概要》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海市外國(guó)語(yǔ)附屬外國(guó)語(yǔ)學(xué)校2025屆高三下學(xué)期第3次月考生物試題含解析
- 濟(jì)南大學(xué)《數(shù)學(xué)建模軟件》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西省長(zhǎng)治市潞州區(qū)第二中學(xué)2025屆高三二模數(shù)學(xué)試題(詳細(xì)答案版)含解析
- 江西省宜春市宜春中學(xué)2025年高三高考生物試題系列模擬卷(10)含解析
- 2025年心理健康教育課程考試試卷及答案
- 2025年幼兒園教師招聘考試試卷及答案
- 2025年現(xiàn)代漢語(yǔ)與寫作課程考試試卷及答案
- 晉中市榆次區(qū)2025屆四下數(shù)學(xué)期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 濟(jì)南護(hù)理職業(yè)學(xué)院《工程制圖(CAD)》2023-2024學(xué)年第二學(xué)期期末試卷
- 小型貨物提升機(jī)的設(shè)計(jì)
- GA/T 2015-2023芬太尼類藥物專用智能柜通用技術(shù)規(guī)范
- 埃里克森的人格發(fā)展八階段
- 霧都孤兒讀書報(bào)告
- 志愿服務(wù)證明(多模板)
- 職業(yè)生涯規(guī)劃家庭影響因素
- 潔凈環(huán)境監(jiān)測(cè)課件
- 疼痛科護(hù)理的現(xiàn)狀與發(fā)展趨勢(shì)
- 用戶思維培訓(xùn)課件
- 企業(yè)反商業(yè)賄賂法律法規(guī)培訓(xùn)
- 安心護(hù)行 從個(gè)案分析看創(chuàng)傷骨科患者VTE管理低分子肝素合理應(yīng)用版本
評(píng)論
0/150
提交評(píng)論