




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章數(shù)據(jù)分析庫pandas基礎(chǔ)《Python數(shù)據(jù)分析與應(yīng)用:從數(shù)據(jù)獲取到可視化(第2版)》學(xué)習(xí)目標(biāo)/Target
掌握Series的創(chuàng)建方式,能夠通過Series類的構(gòu)造方法創(chuàng)建Series類的對象
掌握DataFrame的創(chuàng)建方式,能夠通過構(gòu)造方法創(chuàng)建DataFrame類的對象
熟悉索引對象的類型和特點,能夠歸納索引對象的類型和特點
掌握重置索引的方式,能夠通過reindex()方法重置對象的索引學(xué)習(xí)目標(biāo)/Target
掌握索引與切片的基本用法,能夠通過索引或切片獲取數(shù)據(jù)
掌握loc和iloc屬性的基本用法,能夠使用loc和iloc屬性獲取數(shù)據(jù)
掌握讀寫數(shù)據(jù)的方式,能夠熟練地讀寫不同來源的數(shù)據(jù)
掌握數(shù)據(jù)的排序方式,能夠使用索引或值對Series或DataFrame進(jìn)行排序?qū)W習(xí)目標(biāo)/Target
掌握算術(shù)運算方式,能夠通過算術(shù)運算符或算術(shù)方法對數(shù)據(jù)進(jìn)行算術(shù)運算
掌握統(tǒng)計計算的方式,能夠通過統(tǒng)計方法對數(shù)據(jù)進(jìn)行統(tǒng)計計算
掌握統(tǒng)計描述的方式,能夠通過describe()方法描述對象的統(tǒng)計指標(biāo)
掌握分層索引操作,能夠創(chuàng)建有分層索引的對象,使用分層索引獲取數(shù)據(jù)章節(jié)概述/Summarypandas是一個以NumPy為基礎(chǔ),專門為數(shù)據(jù)分析而設(shè)計的庫,該庫中不僅提供了一些標(biāo)準(zhǔn)的數(shù)據(jù)模型,而且提供了高效操作大量數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),被廣泛地應(yīng)用到諸如金融、統(tǒng)計等一些領(lǐng)域中。pandas庫是本書的重點內(nèi)容,本章只介紹一些pandas的基礎(chǔ)知識,更多知識會在后面的章節(jié)進(jìn)行介紹。目錄/Contents01020304數(shù)據(jù)結(jié)構(gòu)索引和切片操作讀寫數(shù)據(jù)數(shù)據(jù)排序目錄/Contents05060708算術(shù)運算與數(shù)據(jù)對齊統(tǒng)計計算與描述分層索引操作案例:陜西高考分?jǐn)?shù)線統(tǒng)計分析數(shù)據(jù)結(jié)構(gòu)3.13.1.1
Series掌握Series的結(jié)構(gòu)和創(chuàng)建方式,能夠通過Series類的構(gòu)造方法創(chuàng)建Series類的對象學(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ù)、字符串、浮點數(shù)、Python對象等。默認(rèn)是系統(tǒng)自動生成的位置索引,還可以是用戶自定義的標(biāo)簽索引3.1.1
Series構(gòu)造方法我們?nèi)粝M诔绦蛑惺褂肧eries這種數(shù)據(jù)結(jié)構(gòu),就需要先通過Series類的構(gòu)造方法創(chuàng)建一個Series類的對象。in1d(ar1,
ar2,
assume_unique=False,
invert=False)
data:表示數(shù)據(jù),它的值可以是ndarray對象、列表、字典、標(biāo)量等。index:表示索引,它的值必須是可散列的,且與數(shù)據(jù)的長度相同。如果沒有給index參數(shù)傳值,則默認(rèn)會使用RangeIndex
類的對象;如果data參數(shù)的值是字典且index參數(shù)的值為None,則字典的鍵會用做索引。dtype:表示數(shù)據(jù)的類型,它的值可以是numpy.dtype。3.1.1
Series創(chuàng)建Series類的對象通過向Series類的構(gòu)造方法中傳入一個列表創(chuàng)建一個Series類的對象。ser_obj=pd.Series(data=['Python','C','Java','JavaScript','PHP','R'])當(dāng)創(chuàng)建Series類的對象時,也可以顯式地給數(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)仍然會生成一組位置索引,只是位置索引是隱藏的。創(chuàng)建Series類的對象3.1.1
Series還可以通過字典創(chuàng)建一個Series類的對象。year_dict={'a':2022,'b':2023,'c':2024,
'd':2025,'e':2026,'f':2027}ser_obj=pd.Series(data=year_dict)創(chuàng)建Series類的對象3.1.1
Series通過index屬性獲取Series類對象的索引。ser_obj.index獲取索引和數(shù)據(jù)通過values屬性獲取Series類對象的數(shù)據(jù)。ser_obj.values3.1.2
DataFrame掌握DataFrame的結(jié)構(gòu)和創(chuàng)建方式,能夠通過DataFrame類的構(gòu)造方法創(chuàng)建DataFrame類的對象學(xué)習(xí)目標(biāo)3.1.2
DataFrame結(jié)構(gòu)DataFrame是一個類似于二維數(shù)組或表格的數(shù)據(jù)結(jié)構(gòu),它通過行列的形式組織數(shù)據(jù),每列數(shù)據(jù)可以是不同的數(shù)據(jù)類型。與Series相比,DataFrame也是由索引和數(shù)據(jù)兩部分組成,不同的是,DataFrame既有行索引又有列索引。DataFrame可以看作多個Series類對象的組合,它里面每一列數(shù)據(jù)是一個Series類的對象,這些對象之間共用同一個行索引。3.1.2
DataFrame構(gòu)造方法我們?nèi)粝M诔绦蛑惺褂肈ataFrame這種數(shù)據(jù)結(jié)構(gòu),就需要先通過DataFrame類的構(gòu)造方法創(chuàng)建一個DataFrame類的對象。DataFrame(data=None,
index=None,
columns=None,
dtype=None,
copy=None)data:表示數(shù)據(jù),該參數(shù)可以接收ndarray對象、列表、字典或其他DataFrame類的對象。index:表示行索引。如果沒有傳入該參數(shù),則默認(rèn)會自動生成0~N的整數(shù)。columns:表示列索引。如果沒有傳入索引參數(shù),則默認(rèn)會自動生成0~N的整數(shù)。3.1.2
DataFrame創(chuàng)建DataFrame類對象importnumpyasnpimportpandasaspdarr_2d=np.arange(1,31).reshape((6,5))df_obj=pd.DataFrame(data=arr_2d)df_obj使用系統(tǒng)自動生成的索引3.1.2
DataFrame指定列索引系統(tǒng)自動生成的索引無法很好地顯示每列數(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類的對象中獲取一列數(shù)據(jù),則可以通過訪問屬性的方式獲取,返回的結(jié)果是一個Series類的對象。result=df_obj.No2result※如果索引的標(biāo)簽名稱中有一些特殊的字符,比如空格、下畫線等,那么通過訪問屬性的方式獲取數(shù)據(jù)顯得不太合適了,這時可以使用索引獲取數(shù)據(jù)。3.1.2
DataFrame查看摘要信息為了便于用戶從整體了解數(shù)據(jù)的摘要信息,比如每一列總共有多少個數(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對象的類型、行索引的相關(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列的表格,用于描述對象的每一列數(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)計信息和內(nèi)存使用情況索引和切片操作3.23.2.1
索引對象熟悉索引對象的類型和特點,能夠歸納索引對象的類型和特點學(xué)習(xí)目標(biāo)Index類的子類在pandas中,無論是位置索引還是標(biāo)簽索引,它們都屬于Index類的對象,也就是索引對象。Index類是一個基類,它派生了很多子類,每個子類代表不同形式的索引。3.2.1
索引對象類說明示例RangeIndex位置索引(默認(rèn))0、1、2、3……NInt64Index整數(shù)索引1、-5、8、10、-9Float64Index浮點數(shù)索引-1.0、-5.5、10.2、9.8、6.3DatetimeIndex時間戳索引2022-11-2517:00:00、2022-11-2817:00:00、2022-12-2517:00:00PeriodIndex時間間隔索引2022-11-2500:00:00、2022-11-2501:00:00、2022-11-2502:00:00……MultiIndex分層索引aa、ab、ac、bd、be特性3.2.1
索引對象不可變性可重復(fù)性特性3.2.1
索引對象不可變性索引對象一旦創(chuàng)建是不可以被修改的,也就是說,索引的值是固定不變的,這樣做能夠維護從索引到數(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
索引對象可重復(fù)性索引對象的值是可以重復(fù)的。importpandasaspdser_obj=pd.Series(range(5),index=['a','a','c','d','e'])ser_index=ser_obj.indexser_index特性3.2.1
索引對象可重復(fù)性通常情況下,索引的值被要求是唯一的,不過并非強制的。我們可以使用索引對象的is_unique屬性判斷索引的值是否唯一。ser_index.is_unique3.2.2
重置索引掌握重置索引的方式,能夠通過reindex()方法實現(xiàn)重置索引的功能學(xué)習(xí)目標(biāo)3.2.2
重置索引重置索引是指重新為對象設(shè)定索引,以構(gòu)建一個符合新索引的對象。概念reindex()方法會對Series類或DataFrame類對象的原索引和新索引進(jìn)行匹配,如果新索引跟原索引的值相同,則新索引對應(yīng)的數(shù)據(jù)會被設(shè)置為原數(shù)據(jù);如果新索引跟原索引的值不同,則新索引對應(yīng)的空缺位置會被填充為NaN或指定的其他值。方法3.2.2
重置索引語法格式下面以DataFrame類的reindex()方法為例,介紹reindex()方法的語法格式。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'這幾個值,其中'None'代表不填充空缺位置;'ffill'或'pad'代表前向填充空缺位置;'bfill或backfill'代表后向填充空缺位置;'nearest'代表根據(jù)最近的值填充空缺位置。3.2.2
重置索引語法格式reindex(labels=None,
index=None,
columns=None,
axis=None,
method=None,
copy=True,
level=None,
fill_value=nan,
limit=None,
tolerance=None)copy:是否返回新的對象,默認(rèn)值為True。fill_value:表示空缺位置被填充的值,默認(rèn)值為NaN。limit:表示前向或者后向填充時的最大填充量。下面以DataFrame類的reindex()方法為例,介紹reindex()方法的語法格式。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對象的索引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.
重置索引時指定填充值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.
重置索引時指定填充方式3.2.3
通過索引和切片獲取數(shù)據(jù)掌握索引與切片的基本用法,能夠通過索引或切片獲取Series或DataFrame的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.2.3
通過索引和切片獲取數(shù)據(jù)pandas中通過索引或切片可以獲取Series類和DataFrame類對象的數(shù)據(jù),由于Series類和DataFrame類對象的結(jié)構(gòu)有所不同,所以它們的索引和切片操作也會有所不同。Series的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)Series類對象與NumPy一維數(shù)組的索引用法相似,不同的是,Series類對象的索引既可以是位置索引,也可以是標(biāo)簽索引。如果需要獲取Series類對象的單個數(shù)據(jù),則可以通過位置索引和標(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']通過位置索引獲取單個數(shù)據(jù)通過標(biāo)簽索引獲取單個數(shù)據(jù)Series的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)如果想要獲取Series類對象的多個數(shù)據(jù),則可以通過包含多個位置索引或標(biāo)簽索引的列表進(jìn)行獲取,此過程相當(dāng)于利用花式索引獲取一維數(shù)組元素的操作。ser_obj[[0,2,3]]通過位置索引獲取多個數(shù)據(jù)ser_obj[['one','three','four']]通過標(biāo)簽索引獲取多個數(shù)據(jù)Series的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)布爾索引同樣適用于pandas,具體用法與一維數(shù)組的布爾索引用法相同,即將Series類的對象中每個數(shù)據(jù)進(jìn)行邏輯運算,只要運算結(jié)果為True,就返回Series類對象中位置為True對應(yīng)的數(shù)據(jù)。ser_obj[ser_obj>20]Series的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)通過切片也可以獲取Series類的對象中的部分?jǐn)?shù)據(jù)。如果切片使用的索引是位置索引,則切片結(jié)果包含起始位置但不包含結(jié)束位置對應(yīng)的數(shù)據(jù);如果切片使用的索引是標(biāo)簽索引,則切片結(jié)果既包含起始位置又包含結(jié)束位置對應(yīng)的數(shù)據(jù)。ser_obj[1:3]通過位置索引進(jìn)行切片操作ser_obj['two':'four']通過標(biāo)簽索引進(jìn)行切片操作DataFrame的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)DataFrame類對象與NumPy二維數(shù)組的索引用法相似,它里面每一列數(shù)據(jù)都是一個Series類的對象,可以通過列索引進(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
通過索引和切片獲取數(shù)據(jù)如果想要從DataFrame類對象中獲取多列數(shù)據(jù),那么可以將多個索引存放到列表中,再分別根據(jù)列表里面的每個索引進(jìn)行獲取,此過程相當(dāng)于利用花式索引獲取二維數(shù)組元素的操作。df_obj[['col_1','col_3']]DataFrame的索引和切片操作3.2.3
通過索引和切片獲取數(shù)據(jù)如果想要從DataFrame類對象中獲取多行數(shù)據(jù),那么可以通過切片完成。df_obj[1:3]
還可以通過切片獲取部分行部分列的數(shù)據(jù)。df_obj[1:3][['col_1','col_3']]3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)掌握loc和iloc屬性的基本用法,能夠使用loc和iloc屬性獲取Series或DataFrame的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)前面介紹索引和切片的相關(guān)操作時,既可以單獨使用位置索引或標(biāo)簽索引來獲取數(shù)據(jù),也可以混合使用位置索引、標(biāo)簽索引進(jìn)行獲取,這對剛接觸pandas的開發(fā)人員來說是十分混亂的。為了從嚴(yán)格意義上區(qū)分位置索引和標(biāo)簽索引的相關(guān)操作,pandas中提供了兩個非常重要的屬性,分別是loc和iloc,其中l(wèi)oc是基于標(biāo)簽索引的索引器,iloc是基于位置索引的索引器。3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)通過loc屬性獲取數(shù)據(jù)loc屬性用于根據(jù)標(biāo)簽索引來獲取數(shù)據(jù)。Series.loc[參數(shù)]DataFrame.loc[參數(shù)1,參數(shù)2]單個標(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,則此時獲取的結(jié)果是DataFrame類的對象的一行或多行數(shù)據(jù)。3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)通過loc屬性獲取數(shù)據(jù)importpandasaspdser_obj=pd.Series([10,20,30,40,50],index=['row1','row2','row3','row4','row5'])1.
獲取Series類對象的數(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]獲取單個數(shù)據(jù)獲取多個數(shù)據(jù)獲取多個連續(xù)數(shù)據(jù)獲取符合條件的數(shù)據(jù)3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)通過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類對象的數(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
通過loc和iloc屬性獲取數(shù)據(jù)通過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類對象的數(shù)據(jù)df_obj.loc['row_3','col_3']df_obj.loc['row_1':'row_3',['col_1','col_3']]獲取單個數(shù)據(jù)獲取多列數(shù)據(jù)3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)通過iloc屬性獲取數(shù)據(jù)iloc屬性用于根據(jù)位置索引來獲取數(shù)據(jù)。Series.iloc[參數(shù)]DataFrame.iloc[參數(shù)1,參數(shù)2]單個位置索引,比如0、1、2、3等。位置索引構(gòu)成的列表或數(shù)組,比如[0,2,3]等。基于位置索引的切片,比如0:2、2:5。布爾類型的列表或數(shù)組,比如[True,False,True]。3.2.4
通過loc和iloc屬性獲取數(shù)據(jù)通過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]]獲取單個數(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文件通常以逗號或制表符為分隔符,可以通過Excel、記事本等文本編輯器進(jìn)行查看。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)pandas中提供了一個read_csv()函數(shù),該函數(shù)用于從CSV或TXT文件中讀取數(shù)據(jù),pandas的Series
和DataFrame類中還提供了一個to_csv()方法,該方法用于向CSV或TXT文件中寫入數(shù)據(jù)。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過to_csv()方法向文本文件寫入數(shù)據(jù)to_csv()方法會向指定路徑下的CSV或TXT文件中寫入部分或全部數(shù)據(jù),如果文件不存在,則會新建一個文件;如果文件已經(jīng)存在,則會覆蓋文件中的內(nèi)容。to_csv(path_or_buf=None,
sep=',',
na_rep='',
float_format=None,
columns=None,
header=True,
...,
storage_options=None)path_or_buf:表示文件路徑,文件路徑可以是絕對路徑和相對路徑。如果該參數(shù)的值是一個文件的名稱,則該文件會被保存到當(dāng)前路徑。sep:表示文件使用的字段分隔符,默認(rèn)值是','。分隔符的長度必須為1。na_rep:表示缺失數(shù)據(jù)的表示方式,默認(rèn)值是空字符串。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過to_csv()方法向文本文件寫入數(shù)據(jù)to_csv()方法會向指定路徑下的CSV或TXT文件中寫入部分或全部數(shù)據(jù),如果文件不存在,則會新建一個文件;如果文件已經(jīng)存在,則會覆蓋文件中的內(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ù)通過read_csv()函數(shù)從文本文件中讀取數(shù)據(jù)read_csv()函數(shù)會從指定路徑下的CSV或TXT文件中讀取數(shù)據(jù),讀取成功后會根據(jù)數(shù)據(jù)形式轉(zhuǎn)換成一個Series或DataFrame類的對象。read_csv(filepath_or_buffer,
sep=NoDefault.no_default,
delimiter=None,
header='infer',
...,
storage_options=None)filepath_or_buffer:表示文件的路徑。sep:表示文件使用的分隔符。如果沒有指定分隔符,則會嘗試使用逗號進(jìn)行分隔。header:指定文件中的哪一行作為列索引以及數(shù)據(jù)的開頭。names:表示要使用的列名稱的列表。encoding:表示讀取文件時使用的編碼格式。3.3.1
讀寫CSV和TXT文件的數(shù)據(jù)通過read_csv()函數(shù)從文本文件中讀取數(shù)據(jù)除了使用read_csv()函數(shù)讀取TXT文件外,還可以使用read_table()函數(shù)讀取TXT文件,兩者的區(qū)別在于默認(rèn)使用的分隔符不同,前者使用的分隔符是逗號,后面使用的分隔符是制表符(\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中提供了兩個常用的方法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ù)分析工作中比較常用的存儲數(shù)據(jù)的文件,它里面可以添加若干個工作表(Sheet),每個工作表都是以表格的形式顯示數(shù)據(jù),并支持對數(shù)據(jù)進(jìn)行統(tǒng)計、分析等操作。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ù)通過to_excel()向Excel文件寫入數(shù)據(jù)to_excel()方法會將Series或DataFrame類的對象寫入到Excel文件中,如果Excel文件不存在,則會新建一個文件,反之則會將原文件中的內(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ù)通過read_excel()從Excel文件讀取數(shù)據(jù)read_excel()函數(shù)用于讀取Excel文件中的數(shù)據(jù),并根據(jù)數(shù)據(jù)的形式轉(zhuǎn)換成Series或DataFrame類的對象。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,說明讀取第一個工作表。header:指定文件中的哪一行數(shù)據(jù)作為DataFrame類對象的列索引。names:表示要使用的列名稱。3.3.2
讀寫Excel文件的數(shù)據(jù)通過read_excel()從Excel文件讀取數(shù)據(jù)read_excel()函數(shù)用于讀取Excel文件中的數(shù)據(jù),并根據(jù)數(shù)據(jù)的形式轉(zhuǎn)換成Series或DataFrame類的對象。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,說明會讀取所有列的數(shù)據(jù)。該參數(shù)可以接收一個列表,列表中的元素分別對應(yīng)列的編號,編號從0開始。3.3.3
讀取網(wǎng)頁表格的數(shù)據(jù)掌握讀取網(wǎng)頁表格的方式,能夠熟練地通過read_html()函數(shù)讀取網(wǎng)頁表格的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.3
讀取網(wǎng)頁表格的數(shù)據(jù)在瀏覽網(wǎng)頁時,有些數(shù)據(jù)會在HTML網(wǎng)頁中以表格的形式進(jìn)行展示,對于這部分?jǐn)?shù)據(jù),我們可以使用pandas中的read_html()函數(shù)讀取,讀取成功后會返回一個列表,該列表中包含對應(yīng)網(wǎng)頁表格的DataFrame類的對象。read_html(io,
match='.+',
flavor=None,
header=None,
index_col=None,
skiprows=None,
attrs=None,
...,
displayed_only=True)io:表示HTML網(wǎng)頁的字符串、路徑對象或類似文件的對象。若參數(shù)io的值是字符串,則字符串的內(nèi)容可以是URL,也可以是HTML。match:表示返回包含與正則表達(dá)式或字符串匹配的文本的一組表格,默認(rèn)值為'.+',說明匹配任何非空字符串。header:用于指定列標(biāo)題所在的行。index_col:用于指定行標(biāo)題所在的列。3.3.3
讀取網(wǎng)頁表格的數(shù)據(jù)TIOBE排行榜是根據(jù)互聯(lián)網(wǎng)上有經(jīng)驗的程序員、課程和第三方廠商的數(shù)量,并使用搜索引擎統(tǒng)計出排名數(shù)據(jù),用于反映編程語言的熱門程度。2022年發(fā)布的歷年最佳編程語言排行榜(部分)3.3.4
讀寫數(shù)據(jù)庫掌握讀寫數(shù)據(jù)庫的方式,能夠熟練讀寫數(shù)據(jù)庫的數(shù)據(jù)學(xué)習(xí)目標(biāo)3.3.4
讀寫數(shù)據(jù)庫大多數(shù)情況下,海量的數(shù)據(jù)是使用數(shù)據(jù)庫進(jìn)行存儲的,這主要是依賴于數(shù)據(jù)庫的數(shù)據(jù)共享性、獨立性等一些特點。因此,在實際生產(chǎn)環(huán)境中,絕大數(shù)的數(shù)據(jù)是存儲在數(shù)據(jù)庫中的。pandas
支持MySQL、Oracle、SQLite等主流數(shù)據(jù)庫的讀寫操作,本書介紹的是MySQL數(shù)據(jù)庫。3.3.4
讀寫數(shù)據(jù)庫讀寫函數(shù)或方法函數(shù)/方法說明read_sql_table()根據(jù)數(shù)據(jù)表名稱讀取數(shù)據(jù)庫的數(shù)據(jù),并將讀取的結(jié)果轉(zhuǎn)換成一個DataFrame類的對象后返回read_sql_query()根據(jù)SQL語句讀取數(shù)據(jù)庫的數(shù)據(jù),并將讀取的結(jié)果轉(zhuǎn)換成一個DataFrame類的對象后返回read_sql()上述兩個函數(shù)的結(jié)合,可以根據(jù)數(shù)據(jù)表名稱或SQL語句讀取數(shù)據(jù)庫的數(shù)據(jù)to_sql()將Series類或DataFrame類的對象寫入到數(shù)據(jù)庫中※read_sql_table()和read_sql_query()函數(shù)都可以將讀取的數(shù)據(jù)轉(zhuǎn)換為DataFrame對象,前者表示將整張表的數(shù)據(jù)轉(zhuǎn)換成DataFrame類的對象,后者則表示將執(zhí)行SQL語句的結(jié)果轉(zhuǎn)換為DataFrame類的對象。3.3.4
讀寫數(shù)據(jù)庫讀寫函數(shù)或方法在連接MySQL數(shù)據(jù)庫時需要用到SQLAlchemy、PyMySQL模塊,其中SQLAlchemy模塊提供了與不同數(shù)據(jù)庫連接的功能,而PyMySQL模塊提供了Python操作MySQL數(shù)據(jù)庫的功能。如果當(dāng)前的Python環(huán)境中沒有這兩個模塊,則需要分別使用“pipinstallsqlalchemy==1.4.39”“pipinstallpymysql==1.0.2”命令安裝這幾個模塊。3.3.4
讀寫數(shù)據(jù)庫通過to_sql()方法向數(shù)據(jù)庫寫入數(shù)據(jù)to_sql()方法的功能是將Series類或DataFrame類的對象以數(shù)據(jù)表的形式寫入到數(shù)據(jù)庫中。to_sql(name,con,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None)name:表示數(shù)據(jù)表的名稱。con:表示數(shù)據(jù)庫的連接信息。該參數(shù)的值可以是Engine類或Connection類的對象。若希望創(chuàng)建一個Engine類的對象,則需要通過create_engine()函數(shù)實現(xiàn),該函數(shù)需要接收一個符合格式要求的字符串,具體格式為“數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:密碼@機器地址:端口號/數(shù)據(jù)庫名”。3.3.4
讀寫數(shù)據(jù)庫通過to_sql()方法向數(shù)據(jù)庫寫入數(shù)據(jù)to_sql()方法的功能是將Series類或DataFrame類的對象以數(shù)據(jù)表的形式寫入到數(shù)據(jù)庫中。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ù)據(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ù)庫,默認(rèn)為True。index_label:表示是否引用索引名稱。如果index設(shè)為True,此參數(shù)為None,表示使用默認(rèn)名稱;如果index為分層索引,則它的值必須是序列類型的。3.3.4
讀寫數(shù)據(jù)庫通過to_sql()方法向數(shù)據(jù)庫寫入數(shù)據(jù)使用to_sql()方法向數(shù)據(jù)庫寫入數(shù)據(jù)時,如果要寫入的數(shù)據(jù)表名與數(shù)據(jù)庫中其他的數(shù)據(jù)表名相同,則會導(dǎo)致程序出現(xiàn)異常,并反饋該數(shù)據(jù)表已存在的異常信息。3.3.4
讀寫數(shù)據(jù)庫通過read_sql()函數(shù)從數(shù)據(jù)庫讀取數(shù)據(jù)read_sql()函數(shù)既可以讀取整張數(shù)據(jù)表,又可以執(zhí)行SQL語句。read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None)sql:表示被執(zhí)行的SQL語句。con:接收數(shù)據(jù)庫連接,表示數(shù)據(jù)庫的連接信息。index_col:表示將數(shù)據(jù)表中的列標(biāo)題作為DataFrame類對象的行索引。coerce_float:將非字符串、非數(shù)字對象的值轉(zhuǎn)換為浮點型數(shù)據(jù)。params:傳遞給執(zhí)行方法的參數(shù)列表,如params={‘name’:’value’}?!绻麛?shù)據(jù)中存在空值,則會使用NaN進(jìn)行補全。數(shù)據(jù)排序3.43.4.1
按索引排序掌握按索引排序的方式,能夠通過sort_index()方法根據(jù)行索引或列索引排序?qū)W習(xí)目標(biāo)3.4.1
按索引排序sort_index()方法可以根據(jù)行索引或列索引的大小對Series類和DataFrame類的對象進(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:表示沿著哪個方向的軸排序,該參數(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
按值排序掌握按值排序的方式,能夠通過sort_values()方法根據(jù)值的大小排序?qū)W習(xí)目標(biāo)3.4.2
按值排序pandas中為Series類和DataFrame類的對象提供了按值排序的方法sort_values()。以DataFrame類的方法為例,sort_values()方法的語法格式如下。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,則會將NaN值放在開頭;若設(shè)為False,則會將NaN值放在最后。3.4.2
按值排序若sort_values()方法操作的對象是一個DataFrame類的對象,則可以根據(jù)該對象中一列或多列的值進(jìn)行排序,不過需要將一個或多個列的索引傳遞給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ù)運算與數(shù)據(jù)對齊3.53.5
算術(shù)運算與數(shù)據(jù)對齊掌握算術(shù)運算操作,能夠通過算術(shù)運算符或算術(shù)方法實現(xiàn)算術(shù)運算操作學(xué)習(xí)目標(biāo)3.5
算術(shù)運算與數(shù)據(jù)對齊在pandas中,Series類或DataFrame類的對象進(jìn)行算術(shù)運算時,會先將索引相同的數(shù)據(jù)按位置對齊,對齊以后再進(jìn)行相應(yīng)的運算,沒有對齊的位置會用NaN進(jìn)行補齊。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ù)運算與數(shù)據(jù)對齊如果希望不使用NAN補齊,則可以在調(diào)用add()方法時給fill_value參數(shù)傳值,fill_value將會使用對象中存在的數(shù)據(jù)進(jìn)行補充。obj_one.add(obj_two,fill_value=0)統(tǒng)計計算與描述3.63.6.1
統(tǒng)計計算掌握統(tǒng)計計算的方式,能夠通過統(tǒng)計方法對DataFrame中的數(shù)據(jù)進(jìn)行統(tǒng)計計算學(xué)習(xí)目標(biāo)3.6.1
統(tǒng)計計算統(tǒng)計計算方法方法說明sum()計算和mean()計算平均值median()計算中位數(shù)max()、min()計算最大值和最小值idxmax()計算最大索引值idxmin()計算最小索引值count()計算非NaN值的個數(shù)3.6.1
統(tǒng)計計算統(tǒng)計計算方法方法說明var()計算樣本值的方差std()計算樣本值的標(biāo)準(zhǔn)差skew()計算樣本值的偏度(三階矩)kurt()計算樣本值的峰度(四階矩)cumsum()計算樣本值的累加和cummin()、cummax()計算樣本值的累積最小值和累積最大值cumprod()計算樣本值的累乘積3.6.2
統(tǒng)計描述掌握統(tǒng)計描述的方式,能夠通過describe()方法描述DataFrame類的對象的統(tǒng)計指標(biāo)學(xué)習(xí)目標(biāo)3.6.2
統(tǒng)計描述如果希望一次性描述Series類或DataFrame類對象的多個統(tǒng)計指標(biāo),比如平均值、最大值、最小值、求和等,則我們可以調(diào)用describe()方法實現(xiàn),而不用逐個調(diào)用各個統(tǒng)計計算方法計算。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)建方式,能夠通過多種方式創(chuàng)建分層索引學(xué)習(xí)目標(biāo)3.7.1
創(chuàng)建分層索引分層索引分層索引可以理解為單層索引的延伸,即在一個軸方向上具有兩層或兩層以上的索引。外層索引內(nèi)層索引3.7.1
創(chuàng)建分層索引創(chuàng)建分層索引的方法根據(jù)嵌套列表創(chuàng)建MultiIndex類的對象。from_arrays()根據(jù)元組列表創(chuàng)建MultiIndex類的對象。from_tuples()從多個集合的笛卡爾乘積中創(chuàng)建MultiIndex類的對象。from_product()在pandas中,分層索引其實就是一個MultiIndex類的對象。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.
通過from_tuples()方法創(chuàng)建MultiIndex類的對象from_tuples()方法可以根據(jù)包含若干個元組的列表創(chuàng)建MultiIndex類的對象,其中元組的第一個元素作為外層索引,元組的第二個元素作為內(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.
通過from_arrays()方法創(chuàng)建MultiIndex類的對象from_arrays()方法用于根據(jù)一個嵌套列表創(chuàng)建MultiIndex類的對象,其中嵌套的第一個列表將作為外層索引,嵌套的第二個列表將作為內(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.
通過from_product()方法創(chuàng)建MultiIndex類的對象from_product()方法用于從多個集合的笛卡爾乘積創(chuàng)建一個MultiIndex類的對象。3.7.1
創(chuàng)建分層索引多學(xué)一招:笛卡爾乘積在數(shù)學(xué)中,兩個集合X和Y的笛卡尓積,又稱直積,表示為X
×
Y,第一個對象是X的成員,而第二個對象是Y的所有可能有序?qū)Φ钠渲幸粋€成員
。3.7.1
創(chuàng)建分層索引多學(xué)一招:笛卡爾乘積假設(shè)集合A={a,b},集合B={0,1,2},則兩個集合的笛卡爾積為{(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)建有分層索引的對象掌握有分層索引對象的創(chuàng)建方式,能夠通過兩種方式創(chuàng)建有分層索引的對象學(xué)習(xí)目標(biāo)3.7.2
創(chuàng)建有分層索引的對象常見方式importnumpyasnpimportpandasaspdmulitindex_series=pd.Series([14530,13829,12047,7813,7568,
6239,15236,8291],
index=[['河北省
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度村民委員會房產(chǎn)租賃合同示例
- 長期糧食訂購合同協(xié)議
- 陶瓷捆綁銷售合同協(xié)議
- 食品合同附加協(xié)議范本
- 陪護服務(wù)協(xié)議合同模板
- 門窗安裝租房合同協(xié)議
- 雇傭清潔人員合同協(xié)議
- 防爆檢測合同協(xié)議書范本
- 集體餐飲配送合同協(xié)議
- 預(yù)應(yīng)力勞務(wù)分包合同協(xié)議
- 疼痛科護理的現(xiàn)狀與發(fā)展趨勢
- 用戶思維培訓(xùn)課件
- 企業(yè)反商業(yè)賄賂法律法規(guī)培訓(xùn)
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 軟件質(zhì)量保證與測試技術(shù)智慧樹知到課后章節(jié)答案2023年下青島工學(xué)院
- 學(xué)前教育畢業(yè)論文5000字【6篇】
- 醫(yī)生護士進(jìn)修匯報康復(fù)科
- 賓館酒店打造品牌服務(wù)員
- 中國鐵路發(fā)展史介紹課件
- 六年級下冊英語說課稿-Unit 3 Lesson 17 人教(精通版)
- 中國稅制第4版課后部分參考答案劉穎
評論
0/150
提交評論