




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章
數(shù)據(jù)統(tǒng)計(jì)分析目錄3.1引例3.2Pandas數(shù)據(jù)結(jié)構(gòu)與基本操作3.3數(shù)據(jù)加載與保存3.4數(shù)據(jù)預(yù)處理3.5數(shù)據(jù)統(tǒng)計(jì)分析3.1引例3.1引例【例3-1】某超市某一天飲料和牛奶的銷售數(shù)據(jù)如下,要求找出銷售額大于200元的商品,并分別統(tǒng)計(jì)飲料和牛奶的銷售額。序號商品名稱類別數(shù)量單價(jià)/元1NFC橙汁飲料169.92雪碧飲料105.23可口可樂飲料154.84味全每日C(橙汁)飲料1223.95山楂氣泡水飲料69.96光明優(yōu)倍牛奶2523.97味全嚴(yán)選牧場牛奶921.98椰樹椰汁飲料1011.89光明致優(yōu)牛奶329.910紅牛飲料85.911蒙牛現(xiàn)代牧場牛奶62012馬蹄爽飲料86.813優(yōu)諾牛奶519.93.1引例分析:先將數(shù)據(jù)讀入到了DataFrame對象sales中,為sales添加了“小計(jì)”列,小計(jì)=數(shù)量*單價(jià),即為商品的銷售額;篩選出銷售額大于200元的數(shù)據(jù)行,存放于DataFrame對象sales200中;按照“類別”對數(shù)據(jù)進(jìn)行了分組,在每個(gè)分組上使用sum函數(shù)計(jì)算3.1引例代碼:importpandasaspd#引入pandas庫sales=pd.read_csv("d:\\ds\\sales.csv",index_col="序號",header=0,encoding='gbk’)#讀入文件中的數(shù)據(jù),保存到DataFrame對象sales中sales[‘小計(jì)’]=sales[‘?dāng)?shù)量’]*sales[‘單價(jià)/元']#為sales添加“小計(jì)”列print("銷售額大于200元的商品有:")sales200=sales[sales.小計(jì)>200]#篩選出銷售額大于200的數(shù)據(jù)行fori,rowinsales200.iterrows():#輸出銷售額大于200的“商品名稱”“print(row['商品名稱'])grouped=sales.groupby('類別')#按照“類別”分組print("飲料,牛奶的銷售額分別為:")print(grouped['小計(jì)'].agg([('銷售額/元','sum')]))#統(tǒng)計(jì)飲料、牛奶的銷售額3.1引例運(yùn)行結(jié)果:小結(jié):要使用Pandas進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析,先要導(dǎo)入Pandas庫,并將數(shù)據(jù)集加載到Pandas提供的數(shù)據(jù)結(jié)構(gòu)中。Pandas庫中提供了豐富的數(shù)據(jù)結(jié)構(gòu)和函數(shù)用于統(tǒng)計(jì)分析3.2Pandas數(shù)據(jù)結(jié)構(gòu)
與基本操作Series&DataFramepandas是優(yōu)秀的Python數(shù)據(jù)分析工具包,提供了能快速便捷處理結(jié)構(gòu)化數(shù)據(jù)的大量數(shù)據(jù)結(jié)構(gòu)和函數(shù),兼具numpy高性能數(shù)組計(jì)算功能和電子表格、關(guān)系數(shù)據(jù)庫的靈活數(shù)據(jù)處理功能,使數(shù)據(jù)分析任務(wù)變得更加簡潔。pandas中的兩種重要數(shù)據(jù)結(jié)構(gòu)Series和DataFrame
導(dǎo)入本地命名空間:frompandasimportsSeries,DataFrame3.2Pandas數(shù)據(jù)結(jié)構(gòu)與基本操作#表示一組學(xué)生成績的Series對象
indexvalues1850011優(yōu)1850015良1850013中1850017優(yōu)1850012良說明:Series是一種類似于一維數(shù)組的對象,每個(gè)Series對象都由兩個(gè)數(shù)組組成:index:是從numpy數(shù)組繼承的Index對象,用于保存標(biāo)簽信息;values:保存值的numpy數(shù)組,值的數(shù)據(jù)類型沒有限制,可以是各種numpy數(shù)據(jù)類型。通常可將一組樣本數(shù)據(jù)組織成Series3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)思考:要用Series存放某城市最近20年的GDP數(shù)據(jù),索引是?,值是?1
SeriesSeries(data,[參數(shù)列表])data:傳入的數(shù)據(jù),可以是列表、元祖、字典、numpy數(shù)組。index:指定索引,要求是一個(gè)列表。如果沒有指定索引,系統(tǒng)自動(dòng)創(chuàng)建0~n-1(n為data中元素的個(gè)數(shù))的整數(shù)型索引。使用字典創(chuàng)建Series對象時(shí),字典的key作為索引。dtype:指定數(shù)據(jù)的類型,沒有指定該參數(shù),系統(tǒng)會(huì)自己判斷數(shù)據(jù)的類型。name:設(shè)置Series對象的名稱。創(chuàng)建Series對象marks=Series(['優(yōu)','良','中','優(yōu)','良’],
index=['1850011','1850015','1850013','1850017','1850012’])marks=Series(['優(yōu)','良','中','優(yōu)','良’],
index=['1850011','1850015','1850013','1850017','1850012’],
dtype='object',name='scores')
3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)查看Series對象屬性通過對象的index和values屬性,可獲取索引對象和值的數(shù)組表示形式marks.index輸出:Index(['1850001','1850005','1850003','1850007','1850002'],dtype='object')marks.values輸出:array([90,88,78,95,80],dtype=int64)通過Series對象的dtype屬性,可查看對象的數(shù)據(jù)類型marks.dtype輸出:dtype('O')
3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)說明:DataFrame是pandas中表格型的數(shù)據(jù)結(jié)構(gòu),含有一組有序的列,每列可以是不同的數(shù)據(jù)類型。每個(gè)DataFrame對象由三部分組成:行索引、列索引和值
2DataFrame3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)DataFrame(data,[參數(shù)列表])data:用于創(chuàng)建DataFrame的數(shù)據(jù),不可缺省。可以是ndarry二維數(shù)組、由等長列表或numpy數(shù)組組成的字典、由Series組成的字典、由列表或元組組成的列表或其它DataFrame對象。index:行標(biāo)簽,列表類型。若沒有指定行索引,自動(dòng)生成0~n-1的整數(shù)型索引。n為數(shù)據(jù)的行數(shù)。columns:列標(biāo)簽,列表類型。若沒有指定列索引,自動(dòng)生成0~m-1的整數(shù)型索引。m為數(shù)據(jù)的列數(shù)。使用字典創(chuàng)建DataFrame對象時(shí),字典的key用作列標(biāo)簽創(chuàng)建DataFrame對象3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)輸出:
姓名
專業(yè)
性別
成績1850001張海
交通工程
男901850002段霞
金融學(xué)
女881850003敬衛(wèi)華
土木工程
男911850004李明
交通工程
男541850005王丹
金融學(xué)
女67data=[['張海','交通工程','男',90],['段霞','金融學(xué)','女',88],['敬衛(wèi)華','土木工程','男',91],['李明','交通工程','男',54],['王丹','金融學(xué)','女',67]]index=['1850001','1850002','1850003','1850004','1850005']column=['姓名','專業(yè)','性別','成績']students=DataFrame(data,index=index,columns=column)print(students)創(chuàng)建DataFrame對象時(shí),全部列會(huì)被自動(dòng)有序排序,如果指定了columns參數(shù),則各列按該參數(shù)指定的順序進(jìn)行排序。3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)通過對象的index、columns和values屬性,可獲取行、列索引和值的數(shù)組表示形式列的數(shù)據(jù)類型系統(tǒng)會(huì)自動(dòng)推斷各列的數(shù)據(jù)類型要知道列的數(shù)據(jù)類型,查看該列的dtype屬性,例如: students['成績'].dtype;要查看所有列的數(shù)據(jù)類型,查看對象的dtypes屬性,例如 students.dtypes。要轉(zhuǎn)換列的類型,使用astype()方法,例如將“成績”列的數(shù)據(jù)類型轉(zhuǎn)換為浮點(diǎn)型:
students['成績']=students['成績'].astype(float)
獲取索引和值數(shù)組3.2.1Pandas數(shù)據(jù)結(jié)構(gòu)3.2.2數(shù)據(jù)訪問17Series數(shù)據(jù)訪問類似于ndarray一維數(shù)組,可以通過值的位置序號訪問,也可以通過索引來訪問。DataFrame數(shù)據(jù)訪問類似于ndarray二維數(shù)組,既可以通過值的位置序號訪問,也可以通過行、列的索引來訪問。位置序號從0開始。選取某個(gè)值,只需要指定它的索引或者位置序號,
數(shù)據(jù)的位置序號從0開始1Series數(shù)據(jù)選擇#查詢序號為1的學(xué)生的成績marks[1] 輸出:'良'#查詢學(xué)號為“1850002”的學(xué)生的成績marks['1850015'] 輸出:'良'#marks
indexvalues1850011優(yōu)1850015良1850013中1850017優(yōu)1850012良3.2.2數(shù)據(jù)訪問選取多個(gè)值,用列表指定一組位置序號或索引,或使用切片操作marks[[1,3]] #查詢位置序號為1和3的兩名學(xué)生的成績
輸出:1850015良1850017優(yōu)#查詢學(xué)號為“1850001”和“1850007”的學(xué)生的成績marks[['18500011','18500017']] 輸出:1850011優(yōu)1850017優(yōu)#使用切片操作,查詢位置序號為1,2的學(xué)生成績marks[1:3] 輸出:1850015良1850013中3.2.2數(shù)據(jù)訪問根據(jù)條件,選擇滿足條件的所有值marks[marks=='良']輸出:1850015良1850012良3.2.2數(shù)據(jù)訪問2
DataFrame數(shù)據(jù)選擇
方法說明查詢某行某列的單個(gè)數(shù)據(jù)obj.iloc[iloc,cloc]根據(jù)位置序號查詢某行某列的數(shù)據(jù)obj.loc[index,col]/obj.at[index,col]根據(jù)索引查詢某行某列的數(shù)據(jù)查詢某些行某些列的數(shù)據(jù)obj.iloc[iloclist,cloclist]根據(jù)位置序號查詢某些行某些列的數(shù)據(jù),省略cloclist,查詢所有列obj.iloc[a:b,c:d]根據(jù)位置序號,查詢a~b-1行,c~d-1列的數(shù)據(jù),行或列用:替代,表示查詢所有行或列obj.loc[indexlist,collist]根據(jù)索引查詢某些行某些列的數(shù)據(jù),省略collist,查詢所有列obj[col]/obj.col根據(jù)索引查詢某列(全部行)的數(shù)據(jù)
obj[collist]根據(jù)索引查詢多個(gè)列(全部行)的數(shù)據(jù)obj[a:b]根據(jù)位置序號,查詢a~b-1行所有列的數(shù)據(jù)根據(jù)條件查詢數(shù)據(jù)obj.loc[condition,collist]根據(jù)所構(gòu)造的條件表達(dá)式,查詢滿足條件的數(shù)據(jù)3.2.2數(shù)據(jù)訪問選取單個(gè)值,指定行、列位置序號或行、列索引#查詢第1行第2列的數(shù)據(jù)students.iloc[1,2] 輸出:'女'#查詢學(xué)號為“1850002”的學(xué)生的專業(yè)students.loc['1850002','專業(yè)']輸出:'金融學(xué)'students
姓名
專業(yè)
性別
成績1850001張海
交通工程
男901850002段霞
金融學(xué)
女881850003敬衛(wèi)華
土木工程
男911850004李明
交通工程男541850005王丹
金融學(xué)
女673.2.2數(shù)據(jù)訪問選取多個(gè)值,用列表指定一組位置序號或索引,或使用切片操作#查詢第1、3行第1,2列的數(shù)據(jù)students.iloc[[1,3],[1,2]]輸出:
專業(yè)
性別1850002金融學(xué)
女1850004交通工程
男#查詢前3行最后2列的數(shù)據(jù)students.iloc[:3,-2:]輸出:
性別
成績1850001男 901850002女 881850003男 91#查詢“1850003”和“1850005”的兩位同學(xué)的姓名、性別students.loc[['1850003','1850005'],['姓名','性別’]]輸出:
姓名
性別1850003敬衛(wèi)華
男1850005王丹
女3.2.2數(shù)據(jù)訪問直接給出列名或列名的列表,選擇某列或某些列所有行的數(shù)據(jù)
#查詢所有學(xué)生的成績students['成績']或:students.成績#查詢所有學(xué)生的姓名、成績students[['姓名','成績’]]輸出:
姓名
成績1850001張海901850002段霞881850003敬衛(wèi)華911850004李明541850005王丹673.2.2數(shù)據(jù)訪問根據(jù)條件表達(dá)式選擇滿足條件的數(shù)據(jù)#查詢成績大于等于90分的學(xué)生的姓名、成績students.loc[students['成績']>=90,['姓名','成績']]輸出:
姓名
成績1850001張海901850003敬衛(wèi)華91也可以先創(chuàng)建一個(gè)掩模(mask),利用掩模篩選數(shù)據(jù)。掩模是一系列的布爾值,說明數(shù)據(jù)行是否被選中。mask=students['成績']>=90students.loc[mask,['姓名','成績']]3.2.2數(shù)據(jù)訪問對于Series對象和DataFrame對象,在選取了數(shù)據(jù)之后,就可以對選擇的數(shù)據(jù)進(jìn)行修改了。可以一次修改一個(gè)值,也可以一次修改多個(gè)值。3數(shù)據(jù)修改
#將marks中學(xué)號“1850011”的成績修改為'中'marks['1850011']=‘中‘#將marks中成績成績?yōu)閮?yōu)的標(biāo)注“*”marks[marks=="優(yōu)"]=marks+"*"#將students中第2個(gè)學(xué)生的成績修改為85分students.iloc[1,-1]=85#將“交通工程”專業(yè)修改為“交通類”students.loc[students.專業(yè)=='交通工程','專業(yè)']='交通類'3.2.2數(shù)據(jù)訪問Series對象和DataFrame對象的drop方法用于刪除數(shù)據(jù)。要?jiǎng)h除一個(gè)或多個(gè)數(shù)據(jù),只需要有一個(gè)索引數(shù)組或列表就可以
drop方法不刪除原始對象的數(shù)據(jù),而是根據(jù)刪除后的數(shù)據(jù)生成新對象。如果要用新對象替換原對象,使用drop方法時(shí),設(shè)置參數(shù)inplace=True。4刪除數(shù)據(jù)#刪除marks中學(xué)號為“18500013”,“1850015”的學(xué)生成績marks.drop(['1850013','1850015'],inplace=True)#刪除students中學(xué)號為“1850003”和“1850005”的學(xué)生students.drop(['1850003','1850005'],inplace=True)#刪除students中的“性別”列:students.drop(‘性別',axis=1,inplace=True)說明:DataFrame對象的drop方法,用參數(shù)axis指明按行或列刪除數(shù)據(jù)。axis=0,刪除數(shù)據(jù)的行,axis=1,刪除數(shù)據(jù)的列。默認(rèn)axis=0drop方法產(chǎn)生副本,在副本中刪除數(shù)據(jù)。要?jiǎng)h除原始對象中的數(shù)據(jù),使用drop方法時(shí),設(shè)置參數(shù)inplace=True3.2.2數(shù)據(jù)訪問5添加數(shù)據(jù)#在marks中添加學(xué)號為“1850010”的學(xué)生marks['1850010']="及格"#給students添加“年齡”列students[‘年齡’]=[17,18,17]Series對象可以直接添加數(shù)據(jù)DataFrame對象可以添加新的列3.2.2數(shù)據(jù)訪問3.2.3算術(shù)運(yùn)算與數(shù)據(jù)對齊29pandas可以對具有不同索引的兩個(gè)對象進(jìn)行算術(shù)運(yùn)算,運(yùn)算時(shí)自動(dòng)按照索引進(jìn)行數(shù)據(jù)對齊,結(jié)果的索引是兩個(gè)對象索引的并集。mark1=Series([90,88,78,95,80],index=['1850011','1850015','1850013','1850017','1850012’])mark2=Series([5,7,9],index=['1850011','1850015','1850010’])mark1+mark2輸出:1850010NaN185001195.01850012NaN1850013NaN185001595.01850017NaNSeries對象相加時(shí),會(huì)自動(dòng)進(jìn)行數(shù)據(jù)對齊操作。在重疊的索引處,對應(yīng)值相加;在不重疊的索引處,使用NA(NaN)值進(jìn)行填充。1Series的加法運(yùn)算30mark3=DataFrame({'Math':[90,85,88],'English':[85,92,87],'Computer':[90,80,82]},index=['1850001','1850003','1850005'])bouns=DataFrame({'Math':[5,5,2],'Physics':[4,3,2]},index=['1850001','1850002','1850003'])mark3+bouns輸出:ComputerEnglishMathPhysics1850001NaNNaN95.0NaN1850002NaNNaNNaNNaN1850003NaNNaN87.0NaN1850005NaNNaNNaNNaN2DataFrame的加法運(yùn)算3.2.3算術(shù)運(yùn)算與數(shù)據(jù)對齊可使用對象的add、sub、mul、div方法進(jìn)行算術(shù)運(yùn)算使用這些方法的fill_value參數(shù),可以在算術(shù)運(yùn)算時(shí)指定用于填充的值mark3.add(bouns,fill_value=0)輸出: ComputerEnglishMathPhysics185000190.085.095.04.01850002NaNNaN5.03.0185000380.092.087.02.0185000582.087.088.0NaN說明:數(shù)據(jù)對齊后,對mrk3,bouns中均未出現(xiàn)的1850002的Computer,English,1850005的Physics,用NaN填充,其它值用0填充,然后相加。3算術(shù)運(yùn)算方法3.2.3算術(shù)運(yùn)算與數(shù)據(jù)對齊每個(gè)元素均與標(biāo)量運(yùn)算mark3*0.9輸出:MathEnglishComputer185000181.076.581.0185000376.582.872.0185000579.278.373.84與標(biāo)量的運(yùn)算3.2.3算術(shù)運(yùn)算與數(shù)據(jù)對齊以廣播方式進(jìn)行可以在行上廣播,也可以在列上廣播,通過參數(shù)axis指定bouns1=Series([5,4,3],index=['Math','English','Computer'])mark3+bouns1輸出: MathEnglishComputer185000195899318500038096831850005939185說明:axis=1時(shí),在行上廣播,axis=0時(shí),在列上廣播,axis缺省為1。在列上廣播要使用算術(shù)運(yùn)算方法bouns2=Series([5,4,3],index=['1850001','1850003','1850005'])mark3.add(bouns2,axis=0)輸出:MathEnglishComputer1850001959095185000389968418500059190855DataFrame與Series運(yùn)算3.2.3算術(shù)運(yùn)算與數(shù)據(jù)對齊34使用reindex方法重新排序和指定索引,會(huì)根據(jù)新索引重排數(shù)據(jù)該方法創(chuàng)建一個(gè)適應(yīng)新索引的新對象,原來的DataFrame對象不變students.reindex(index=['1850005','1850004','1850002','1850001','1850003'],columns=['姓名','性別','專業(yè)','成績’])輸出:
姓名性別
專業(yè)
成績1850005王丹
女
金融學(xué)671850004李明
男
交通工程541850002段霞
女
金融學(xué)881850001張海
男
交通工程901850003敬衛(wèi)華
男
土木工程911reindex()3.2.4重建與更換索引rename方法可實(shí)現(xiàn)重新標(biāo)記索引和列名,使用原索引和新索引組成的字典作為參數(shù)說明:數(shù)據(jù)對齊后,對mrk3,bouns中均未出現(xiàn)的1850002的Computer,English,1850005的Physics,用NaN填充,其它值用0填充,然后相加。#列名“姓名”改為“學(xué)生姓名”,“成績”改為“總評成績”:students.rename(columns={'姓名':'學(xué)生姓名','成績':'學(xué)生成績’})輸出:
學(xué)生姓名性別
專業(yè)
學(xué)生成績1850005王丹
女
金融學(xué)671850004李明
男
交通工程541850002段霞
女
金融學(xué)881850001張海
男
交通工程901850003敬衛(wèi)華
男
土木工程912rename(
)3.2.4重建與更換索引DataFrame對象的set_index方法可以重新設(shè)置索引(將數(shù)據(jù)列設(shè)為索引)#列名“姓名”設(shè)置為索引:students.set_index('姓名')輸出:
性別
專業(yè)
學(xué)生成績學(xué)生姓名王丹
女
金融學(xué) 67李明
男
交通工程 54段霞
女
金融學(xué) 88張海
男
交通工程 90敬衛(wèi)華
男
土木工程 913set_index()3.2.4重建與更換索引使用reset_index方法還原索引,重新變?yōu)槟J(rèn)的整型索引#還原為整數(shù)索引:students=students.reset_index(drop=False)print(students)輸出:
學(xué)生姓名
性別
專業(yè)
學(xué)生成績0王丹
女
金融學(xué) 671李明
男
交通工程542段霞
女
金融學(xué) 883張海
男
交通工程904敬衛(wèi)華
男
土木工程91說明:參數(shù)drop默認(rèn)為False,原來的索引會(huì)被當(dāng)做數(shù)據(jù)列,設(shè)置drop=True,刪除原來的索引。4reset_index()3.2.4重建與更換索引unique方法得到Series對象或DataFrame對象某列的唯一值數(shù)組;nunique方法則用于統(tǒng)計(jì)不同值的個(gè)數(shù)#查看students中學(xué)生來自多少個(gè)不同的專業(yè):students['專業(yè)'].nunique()輸出:3#查看不同專業(yè)的名稱:students['專業(yè)'].unique()輸出:array(['交通工程','金融學(xué)','土木工程'],dtype=object)1唯一值3.2.5其它常用操作value_counts方法計(jì)算DataFrame對象某列中每個(gè)值出現(xiàn)的頻率#查看每個(gè)專業(yè)的學(xué)生人數(shù)students['專業(yè)'].value_counts()輸出:交通工程2金融學(xué)2土木工程12值計(jì)數(shù)3.2.5其它常用操作isin方法用來判斷DataFrame對象列的成員資格,可用來選擇列中的數(shù)據(jù)子集#查看“交通工程”和“金融學(xué)”專業(yè)的學(xué)生信息students.loc[students['專業(yè)'].isin(['交通工程','金融學(xué)’])]輸出:
姓名
專業(yè)
性別
成績1850001張海
交通工程
男901850002段霞
金融學(xué)
女881850004李明
交通工程
男541850005王丹
金融學(xué)
女673成員資格3.2.5其它常用操作3.3數(shù)據(jù)加載與保存函數(shù)read_csv讀取以“,”分割的文件到DataFrame對象函數(shù)read_table讀取以“\t”分割的文件到DataFrame對象3.3.1處理CSV/TXT格式文件參數(shù)說明path唯一必填參數(shù),表示文件路徑名、URL、文件型對象的字符串sep用于對文件中各個(gè)字段進(jìn)行拆分的字符序列或正則表達(dá)式,若沒有指定分隔符,默認(rèn)使用逗號作為分隔符header用作DataFrame列名的行號,默認(rèn)為0(第一行)。數(shù)據(jù)中沒有標(biāo)題行時(shí),設(shè)置header=Noneindex_col用作索引的列編號或列名。可以是單個(gè)列名或表示列編號的數(shù)字,也可以是多個(gè)列名(列編號)組成的列表(層次化索引)names用于結(jié)果的列名列表。通常結(jié)合heaer=None使用。如數(shù)據(jù)有標(biāo)題行,但想用新的列名,也可以設(shè)置skiprows需要忽略的行數(shù)(從文件開始處算起),或需要跳過的行號列表nrows需要讀取的行數(shù)iterator返回一個(gè)TextParser對象,以便逐塊讀取文件chunksize文件塊的大小,用于迭代skip_footer需要忽略的行數(shù),從文件尾算起na_values用于替換NA的值encoding文本編碼格式。例如"UTF-8"1加載CSV/TXT格式文件說明:文件開始包含說明性文字,有標(biāo)題行,第5行為空白行,有缺失數(shù)據(jù)加載CSV文件示例data=pd.read_csv(r‘d:\ds\city-pop.csv',skiprows=[0,1,2,4],index_col='時(shí)間',encoding='gbk')data.head()#查看前5行或:data=pd.read_csv(r‘d:\ds\city-pop.csv’,skiprows=[4],header=3,index_col='時(shí)間',encoding='gbk')3.3.1處理CSV/TXT格式文件加載文件示例data.head()#查看前5行輸出:
北京
天津
上海
南京
杭州
合肥
深圳時(shí)間
2016年1362.861044.401450.00662.79736.00729.83384.522015年1345.201026.901442.97653.40723.55717.72354.992014年1333.401016.661438.69648.72715.76712.81332.212013年1316.341003.97NaN 643.09706.61711.50310.472012年1297.46993.201426.93 638.48700.52710.53287.62說明:①數(shù)據(jù)讀入時(shí),若不指定索引,自動(dòng)添加索引,缺省為0~n-1(n為數(shù)據(jù)的行數(shù))。②DataFrame對象的head和tail方法分別用于查看數(shù)據(jù)的前n行和后n行數(shù)據(jù),例如data.head(2),行數(shù)缺省時(shí),默認(rèn)為5。③缺失數(shù)據(jù)用NaN(NotaNumber)替代。若要用其它值替代,通過參數(shù)na_values指定。3.3.1處理CSV/TXT格式文件#每次讀取5行數(shù)據(jù)importpandasaspdchunker=pd.read_csv("d:\\ds\\city-pop.csv",header=3,skiprows=[4], chunksize=5,encoding="gbk")forpieceinchunker:print(piece.shape)print(piece)2大數(shù)據(jù)集的處理如果要加載的數(shù)據(jù)集過大,可以采用加載數(shù)據(jù)到區(qū)塊(chunk)的方式,逐塊讀取數(shù)據(jù)。每個(gè)區(qū)塊是數(shù)據(jù)集的一部分,它包含所有的列(1)加載數(shù)據(jù)集到相同大小的區(qū)塊中。區(qū)塊的行數(shù)可由read_csv函數(shù)的chunksize參數(shù)設(shè)置。3.3.1處理CSV/TXT格式文件(2)動(dòng)態(tài)決定每個(gè)區(qū)塊的大小使用TextParser對象的get_chunk方法,可讀取任意大小的塊,塊的大小作為該方法的參數(shù)傳入。使用這種方法時(shí),需要專門申請一個(gè)迭代器,即將read_csv函數(shù)的參數(shù)iterator設(shè)置為True。#讀取文件的前5行并顯示data_iterator=pd.read_csv('d:\\ds\\city-pop.csv',header=3, skiprows=[4],iterator=True,encoding="gbk")piece=data_iterator.get_chunk(5)print(piece)3.3.1處理CSV/TXT格式文件df.to_csv()3保存到CSV文件data.to_csv(r'd:\ds\pop.csv',mode='w',index=True)說明:默認(rèn)index=True,索引被當(dāng)作列數(shù)據(jù)。不需要保存索引時(shí),使用參數(shù)index=False。參數(shù)說明path唯一必填參數(shù),表示文件路徑名sep分隔符,默認(rèn)為逗號mode導(dǎo)出模式,"w"為導(dǎo)出到新文件,"a"為追加到現(xiàn)有文件末尾index是否導(dǎo)出行索引,默認(rèn)為Trueheader是否導(dǎo)出列索引,默認(rèn)為Trueencoding文本編碼格式3.3.1處理CSV/TXT格式文件從Excel文件中讀取數(shù)據(jù)使用Pandas中read_excel函數(shù)其參數(shù)sheet_name用于指定要讀取的數(shù)據(jù)所在的工作表,其他參數(shù)與read_csv類似sheet_name默認(rèn)為0,讀入的是第一個(gè)工作表中的數(shù)據(jù);sheet_name的值可以是字符串或整數(shù),用于指定工作表名稱或位置;若要從多個(gè)工作表讀取數(shù)據(jù),sheet_name的值是工作表名稱或位置構(gòu)成的列表;要讀取所有工作表的數(shù)據(jù),該參數(shù)設(shè)置為None。data=pd.read_excel("d:\\ds\\city-pop.xlsx",sheet_name='city-pop',header=3,skiprows=[4],encoding='gbk')3.3.2讀取Excel文件3.4數(shù)據(jù)預(yù)處理實(shí)際應(yīng)用中,需要分析的數(shù)據(jù)可能來自不同的數(shù)據(jù)集,因此在開始數(shù)據(jù)分析之前,需要先將不同的數(shù)據(jù)集合并。pandas中提供了三種不同的數(shù)據(jù)合并方式:①pd.merge():數(shù)據(jù)庫方式的數(shù)據(jù)連接,可根據(jù)一個(gè)或多個(gè)鍵,將不同DataFrame對象的行連接起來;②pd.concat():軸向數(shù)據(jù)連接,沿著一條軸,將多個(gè)DataFrame對象堆疊到一起;③bine():用一個(gè)DataFrame對象中的數(shù)據(jù)填充另一個(gè)DataFrame對象中的缺失數(shù)據(jù)。3.4.1數(shù)據(jù)合并pd.merge():數(shù)據(jù)庫方式的數(shù)據(jù)連接,可根據(jù)一個(gè)或多個(gè)鍵,將不同DataFrame對象的行連接起來;1數(shù)據(jù)庫方式的合并學(xué)號姓名性別專業(yè)年齡1850001張海男交通工程171850002段霞女金融學(xué)181850003敬衛(wèi)華男土木工程191850004李明男交通工程171850005王丹女金融學(xué)18學(xué)號課程成績1850001大學(xué)計(jì)算機(jī)801850001數(shù)學(xué)901850002數(shù)學(xué)951850003英語841850003大學(xué)計(jì)算機(jī)820000001大學(xué)計(jì)算機(jī)80studentsscores3.4.1數(shù)據(jù)合并pd.merge()參數(shù)說明left參與合并的左側(cè)DataFrame對象,必填right參與合并的右側(cè)DataFrame對象,必填how連接方式,“inner”、“outer”、“l(fā)eft”、“right”其中之一,默認(rèn)為“inner”inner:內(nèi)連接,連接兩個(gè)DataFrame對象鍵值的交集的行outer:外連接,連接兩個(gè)DataFrame對象鍵值的并集的行l(wèi)eft:左鏈接,取出左側(cè)DataFrame對象的全部行,連接右側(cè)DataFrame對象鍵值匹配的行right:右鏈接,取出右側(cè)DataFrame對象的全部行,連接左側(cè)DataFrame對象鍵值匹配的行3.4.1數(shù)據(jù)合并pd.merge()參數(shù)說明on用于連接的列名(或列名列表)。未指定改參數(shù)時(shí),以左右數(shù)據(jù)集的公共列作為連接鍵left_on左側(cè)DataFrame對象中用于連接的鍵right_on右側(cè)DataFrame對象中用于連接的鍵left_index布爾型,是否將左側(cè)DataFrame對象的行索引用作連接鍵right_index布爾型,是否將右側(cè)DataFrame對象的行索引用作連接鍵sort是否根據(jù)連接鍵對合并后的數(shù)據(jù)排序,默認(rèn)為Truesuffixes字符串值元組,用于追加到重疊列名的末尾,默認(rèn)為‘_x’和‘_y’。3.4.1數(shù)據(jù)合并示例學(xué)號姓名性別專業(yè)年齡1850001張海男交通工程171850002段霞女金融學(xué)181850003敬衛(wèi)華男土木工程191850004李明男交通工程171850005王丹女金融學(xué)18學(xué)號課程成績1850001大學(xué)計(jì)算機(jī)801850001數(shù)學(xué)901850002數(shù)學(xué)951850003英語841850003大學(xué)計(jì)算機(jī)820000001大學(xué)計(jì)算機(jī)80studentsscores3.4.1數(shù)據(jù)合并colnames1=['學(xué)號','姓名','性別','專業(yè)','年齡']data1=[['1850001','張海','男','交通工程',17],['1850002','段霞','女','金融學(xué)',18],['1850003','敬衛(wèi)華','男','土木工程',19],['1850004','李明','男','交通工程',17],['1850005','王丹','女','金融學(xué)',18]]colnames2=['學(xué)號','課程','成績']data2=[['1850001','大學(xué)計(jì)算機(jī)',80],['1850001','數(shù)學(xué)',90],['1850002','數(shù)學(xué)',95],['1850003','英語',84],['1850003','大學(xué)計(jì)算機(jī)',82],['0000001','大學(xué)計(jì)算機(jī)',80]]students=DataFrame(data1,columns=colnames1)scores=DataFrame(data2,columns=colnames2)stu_scores=pd.merge(students,scores,on='學(xué)號',how='left')print(stu_scores)3.4.1數(shù)據(jù)合并輸出:
學(xué)號
姓名
性別
專業(yè)
年齡
課程
成績01850001張海
男
交通工程17大學(xué)計(jì)算機(jī)80.011850001張海
男
交通工程17數(shù)學(xué)90.021850002段霞
女
金融學(xué)18數(shù)學(xué)95.031850003敬衛(wèi)華
男
土木工程19英語84.041850003敬衛(wèi)華
男
土木工程19大學(xué)計(jì)算機(jī)82.051850004李明
男
交通工程17NaNNaN61850005王丹
女
金融學(xué) 18NaNNaN說明:①兩張表的共同字段“學(xué)號”作為連接鍵,將這兩張表中“學(xué)號”匹配的行連接起來。②參數(shù)how=‘left’,設(shè)置了左連接方式,結(jié)果中的鍵來自左邊的DataFrame對象(學(xué)生基本信息),沒有選課記錄的學(xué)號“1850004”和“1850005”,對應(yīng)字段值用NaN替代。自行嘗試how的不同取值3.4.1數(shù)據(jù)合并示例df1=DataFrame({'key1':['a','b','a','c'],'value1':[1,3,5,7]})df2=DataFrame({'key2':['a','c','d'],'value2':[2,4,6]})pd.merge(df1,df2,left_on='key1',right_on='key2')
key1value1key2value20a1a21a5a22c7c4左右兩個(gè)DataFrame對象的連接鍵名稱不同,使用參數(shù)left_on,right_on分別指定左、右數(shù)據(jù)集的鍵且結(jié)果數(shù)據(jù)集中鍵不合并key1value10a11b32a53c7key2value20a21c42d63.4.1數(shù)據(jù)合并2軸向堆疊數(shù)據(jù)常用參數(shù):objs:參與連接的pandas對象列表或字典。axis:連接的軸,默認(rèn)為0。axis=0實(shí)現(xiàn)數(shù)據(jù)按行堆疊,axis=1,按列堆疊。3.4.1數(shù)據(jù)合并pd.concat(……)沿著一條軸,將多個(gè)DataFrame對象堆疊到一起;學(xué)號姓名性別專業(yè)成績1850001張海男交通工程871850002段霞女金融學(xué)881850003敬衛(wèi)華男土木工程79group2colnames=['學(xué)號','姓名','性別','專業(yè)','成績']data1=[['1850001','張海','男','交通工程',90],['1850002','段霞','女','金融學(xué)',88],['1850003','敬衛(wèi)華','男','土木工程',91]]data2=[['1850004','李明','男','交通工程',54],['1850005','王丹','女','金融學(xué)',67]]group1=DataFrame(data1,columns=colnames)group2=DataFrame(data2,columns=colnames)scores=pd.concat([group1,group2])print(scores)學(xué)號姓名性別專業(yè)成績1850004李明男交通工程891850005王丹女金融學(xué)68輸出:
學(xué)號
姓名
性別
專業(yè)
成績01850001張海
男
交通工程8711850002段霞
女
金融學(xué)8821850003敬衛(wèi)華男
土木工程7901850004李明
男
交通工程8911850005王丹
女
金融學(xué)68group1自行嘗試axis=1的情況3.4.1數(shù)據(jù)合并示例df.combine(……)當(dāng)兩個(gè)DataFrame對象的行、列索引相同時(shí),combie_first方法用第二個(gè)數(shù)據(jù)集填充第一個(gè)數(shù)據(jù)集中的缺失值,當(dāng)行、列索引不同時(shí),結(jié)果中的列是兩個(gè)數(shù)據(jù)集列的并集,結(jié)果中的行是兩個(gè)數(shù)據(jù)集行的并集,并用第二個(gè)數(shù)據(jù)集的對應(yīng)值填充第一個(gè)數(shù)據(jù)集中的NA值。3合并重疊數(shù)據(jù)3.4.1數(shù)據(jù)合并示例
姓名性別1850001NaN男1850002NaNNaN1850004李明男stu1stu2data1={'姓名':[np.nan,np.nan,'李明'],'性別':['男',np.nan,'男']}index1=['1850001','1850002','1850004']data2={'姓名':['張海','段霞','敬衛(wèi)華'],'性別':[np.nan,'女','男'],'成績':[90,88,91]}index2=['1850001','1850002','1850003']stu1=DataFrame(data1,index=index1)stu2=DataFrame(data2,index=index2)result_data=bine_first(stu2)print(result_data)
姓名性別成績1850001張海NaN831850002段霞女841850003敬衛(wèi)華男85輸出:
姓名
性別
成績1850001張海
男83.01850002段霞
女84.01850003敬衛(wèi)華
男85.01850004李明
男
NaN3.4.1數(shù)據(jù)合并序號姓名年齡體重/kg身高性別心率(次/分)1張學(xué)兵5674172cm男762趙小紅16481.75mmale503沈安然5255169cm女784楊明宇-150167cm男5沈安然52551.69mfemale786毛謙56男7張海561.75m男788黃紅梅19521.65m女100病人心率數(shù)據(jù)集問題:①缺失數(shù)據(jù):序號為4的行缺失心率數(shù)據(jù),為6的行缺失年齡、身高、心率數(shù)據(jù),為7的行缺失體重?cái)?shù)據(jù);②序號為3的行和序號為5的行重復(fù);③序號為1的行和序號為2的行之間有空行;④身高數(shù)據(jù)的單位不統(tǒng)一;⑤性別的表示方法不統(tǒng)一;⑥序號為4的行年齡小于0。3.4.2數(shù)據(jù)清洗這些意外的情況意味著收集到的數(shù)據(jù)不夠完整或在錄入數(shù)據(jù)的時(shí)候可能發(fā)生了錯(cuò)誤。在開始數(shù)據(jù)分析之前,需要對這些“臟數(shù)據(jù)”進(jìn)行清洗。包括刪除原始數(shù)據(jù)集中的無關(guān)數(shù)據(jù)、重復(fù)數(shù)據(jù),糾正數(shù)據(jù)中存在的錯(cuò)誤,處理缺失值、異常值等,叫做數(shù)據(jù)清洗。數(shù)據(jù)清洗是數(shù)據(jù)分析過程中不可缺少的重要環(huán)節(jié),數(shù)據(jù)分析的大量編程工作都用在數(shù)據(jù)清洗上,數(shù)據(jù)清洗結(jié)果的質(zhì)量直接關(guān)系到模型效果和最終結(jié)論。3.4.2數(shù)據(jù)清洗識別缺失值pandas通常用NaN代表浮點(diǎn)或非浮點(diǎn)數(shù)據(jù)中的缺失值(NA),Python內(nèi)置的None也會(huì)被當(dāng)做NA來處理。可用isnull方法判斷缺失值是否存在。1.處理缺失數(shù)據(jù)patient_data=pd.read_csv('d:\ds\patient_heart_rate.csv',encoding='gbk')
patient_data.isnull()
序號姓名
年齡
體重/kg身高
性別心率(次/分)0FalseFalseFalseFalseFalseFalseFalse1TrueTrueTrueTrueTrueTrueTrue2FalseFalseFalseFalseFalseFalseFalse3FalseFalseFalseFalseFalseFalseFalse4FalseFalseFalseFalseFalseFalseTrue5FalseFalseFalseFalseFalseFalseFalse6FalseFalseTrueFalseTrueFalseTrue7FalseFalseFalseTrueFalseFalseFalse8FalseFalseFalseFalseFalseFalseFalsepatient_data.isnull().any()和patient_data.isnull().any(1)查看所有列、行是否有缺失值。patient_data.isnull().all()和patient_data.isnull().all(1)查看所有列、行是否全部為缺失值。3.4.2數(shù)據(jù)清洗處理缺失值:濾除缺失值填充缺失值參數(shù)說明how取值為“any”或“all“。how=‘a(chǎn)ll’只丟棄全部NA的行(列)axis默認(rèn)為0,丟棄行數(shù)據(jù),傳入axis=1,丟棄列數(shù)據(jù)thresh保留部分觀測數(shù)據(jù),例如thresh=3,則當(dāng)一行(列)有3個(gè)或以上非NA值才保留inplace為True,則修改調(diào)用者而不產(chǎn)生副本①濾除缺失值df.dropna(……)3.4.2數(shù)據(jù)清洗patient_data.dropna(how=‘a(chǎn)ll’)#刪除了全為空的行patient_data.dropna(thresh=6,inplace=True)#只保留有1項(xiàng)缺失值的行
序號
姓名
年齡
體重/kg身高
性別
心率(次/分)01.0張學(xué)兵56.074.0172cm男76.022.0趙小紅16.048.01.75mmale50.033.0沈安然52.055.0169cm女78.044.0楊明宇-1.050.0167cm男
NaN55.0沈安然52.055.01.69mfemal78.077.0張海56.0NaN1.75m男78.088.0黃紅梅19.052.01.65m女100.03.4.2數(shù)據(jù)清洗參數(shù)說明value用于填充缺失值的標(biāo)量值或字典對象method用于填充缺失值的方法。method=‘ffill’前向填充;method=‘bfill’后向填充。也可使用平均值或中位數(shù)等統(tǒng)計(jì)學(xué)方法,例如method=df.mean()axis待填充的軸。默認(rèn)axis=0inplace為True,則修改調(diào)用者而不產(chǎn)生副本②填充缺失值df.fillna(……)3.4.2數(shù)據(jù)清洗patient_data[‘心率(次/分)'].fillna(75)#心率的缺失值用默認(rèn)值75patient_data['心率(次/分)'].fillna(method='ffill')#用前一行心率數(shù)據(jù)替換當(dāng)前行的缺失值patient_data.fillna({‘體重/kg’:patient_data[‘體重/kg’].mean(),’心率(次/分)':75},inplace=True)#把體重的缺失值用該列的均值填充,心率缺失值用默認(rèn)值75填充說明:將不同列的缺失值用不同的數(shù)值來填充,需要構(gòu)造{列索引名:值}形式的字典對象作為參數(shù)3.4.2數(shù)據(jù)清洗輸出:
序號
姓名
年齡
體重/kg身高
性別心率(次/分)01.0張學(xué)兵56.074.000000172cm 男76.022.0趙小紅16.048.0000001.75m male50.033.0沈安然52.055.000000169cm 女78.044.0楊明宇-1.050.000000167cm 男75.055.0沈安然52.055.0000001.69m femal78.077.0張海56.055.6666671.75m 男78.088.0黃紅梅19.052.0000001.65m 女100.0查看重復(fù)值:df.duplicated(),
查看DataFrame對象df中是否有重復(fù)行,返回一個(gè)布爾型的Series;刪除重復(fù)值:df.drop_duplicates(),刪除df中重復(fù)的數(shù)據(jù)行。結(jié)果中默認(rèn)保留第一個(gè)出現(xiàn)的值組合。傳入keep=“l(fā)ast”則保留最后一個(gè)。上面的兩個(gè)方法會(huì)默認(rèn)判斷全部列,也可以對部分列進(jìn)行重復(fù)項(xiàng)判斷或刪除,只需傳入列名或列名的列表。例如, df.drop_duplicates(['a'])數(shù)據(jù)集中多余的與數(shù)據(jù)處理無關(guān)的數(shù)據(jù)行是冗余的,簡單刪除即可2去除重復(fù)數(shù)據(jù)3.4.2數(shù)據(jù)清洗patient_data.duplicated('姓名')patient_data.drop_duplicates('姓名',inplace=True)
序號
姓名
年齡體重/kg身高
性別
心率(次/分)01.0張學(xué)兵56.074.000000172cm男76.022.0趙小紅16.048.0000001.75mmale50.033.0沈安然52.055.000000169cm女78.044.0楊明宇-1.050.000000167cm男75.077.0張海56.055.6666671.75m男78.088.0黃紅梅19.052.0000001.65m女100.00False2False3False4False5True7False8False3.4.2數(shù)據(jù)清洗數(shù)據(jù)集中有可能會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤、內(nèi)容或格式不一致等情況,例如,在病人心率數(shù)據(jù)集中,年齡出現(xiàn)了負(fù)值,性別的表示方法不統(tǒng)一,身高的單位不統(tǒng)一。內(nèi)容與格式的清洗是較繁瑣的工作,可采用半自動(dòng)校驗(yàn)半人工方式找出可能存在的問題,認(rèn)真分析每一問題出現(xiàn)的原因,根據(jù)問題產(chǎn)生的原因,對不同情況采取不同的處理方法。3內(nèi)容與格式的清洗3.4.2數(shù)據(jù)清洗patient_data.replace({'male':'男','female':'女'},inplace=True)patient_data['年齡'].replace(-1,30,inplace=True)(1)將性別male替換為‘男’,female替換為‘女’,將年齡-1替換成30歲說明:df.replace(to_replace,value,[參數(shù)列表])to_replace:要替換掉的值value:替換后的新值inplace:是否修改原始數(shù)據(jù),默認(rèn)為False。一次要修改多個(gè)值,傳入一個(gè)列表和要替換的值:df.replace([270,1400],np.nan)#把270,1400均替換成NaN對不同的值進(jìn)行不同的替換,傳入一個(gè)替換關(guān)系組成的列表或字典:df.replace({'U.S.A.':'USA','U.K.':'UK'})3.4.2數(shù)據(jù)清洗rows_with_cm=patient_data['身高'].str.contains('cm').fillna(False)#獲取身高以cm為單位的行fori,cm_rowinpatient_data[rows_with_cm].iterrows():#使用迭代器height=float(cm_row['身高(m)'][:-2])/100#身高轉(zhuǎn)換為以m為單位patient_data.at[i,'身高']='{}'.format(round(height,2))+’m’patient_data['身高']=patient_data['身高'].str[:-1]patient_data.rename(columns={'身高':'身高/m'},inplace=True)(2)將身高的單位統(tǒng)一成‘m’iterrows()返回值為元組,(index,row)3.4.2數(shù)據(jù)清洗
patient_data.reset_index(drop=True,inplace=True)#重置索引
序號
姓名
年齡
體重/kg身高/m性別心率(次/分)01.0張學(xué)兵56.074.0000001.72男76.012.0趙小紅16.048.0000001.75男50.023.0沈安然52.055.0000001.69女78.034.0楊明宇30.050.0000001.67男75.047.0張海56.055.6666671.75男78.058.0黃紅梅19.052.0000001.65女100.0清洗后的數(shù)據(jù)集3.4.2數(shù)據(jù)清洗1用函數(shù)變換3.4.3數(shù)據(jù)轉(zhuǎn)換函數(shù)變換是對原始數(shù)據(jù)通過數(shù)學(xué)函數(shù)進(jìn)行變換,例如平方、取對數(shù)等,常用來將不具有正態(tài)分布的數(shù)據(jù)變成具有正態(tài)分布的數(shù)據(jù)。Numpy的ufunc(元素級數(shù)組方法)可用于Pandas對象,例如np.abs(df),DataFrame對象的apply方法將函數(shù)應(yīng)用到各列或行形成的一維數(shù)組上,axis為1時(shí),作用于DataFrame對象的行,axis為0時(shí),作用于DataFrame對象的列,axis默認(rèn)為0。applymap方法則將其他函數(shù)套用到DataFrame對象的每個(gè)元素上。數(shù)據(jù)轉(zhuǎn)換的目的是把數(shù)據(jù)轉(zhuǎn)換成想要的格式,以利于數(shù)據(jù)分析的目的。3.4.3數(shù)據(jù)轉(zhuǎn)換
例:4名同學(xué)的3門功課成績存儲(chǔ)在DataFrame對象中,把每位同學(xué)的成績加2分后輸出求每門課程的最高分。frompandasimportDataFramemarks=DataFrame({'高數(shù)':[90,85,85,90],'英語':[85,92,87,95],'程序設(shè)計(jì)':[90,80,82,97]},index=['張楠','吳京','李海明','王華’])deff(x):returnx+2marks=marks.applymap(f)marks['程序設(shè)計(jì)']=marks['程序設(shè)計(jì)'].apply(lambdax:"優(yōu)"ifx>=90else"良")print(marks)3.4.3數(shù)據(jù)轉(zhuǎn)換借助DataFrame對象的map函數(shù)來實(shí)現(xiàn)將數(shù)據(jù)由一種表示形式轉(zhuǎn)換為另一種表示形式。#讀取6朵鳶尾花數(shù)據(jù):iris_data=pd.read
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 患者教育專員年度工作全覽
- 技術(shù)文員面試題及答案
- 電工理論面試題及答案
- 培訓(xùn)店長考試題及答案
- hrbp面試題及答案
- 東陽公司面試題及答案
- 肺動(dòng)脈高壓患者護(hù)理查房
- 智能制造產(chǎn)業(yè)孵化基地建設(shè)與區(qū)域產(chǎn)業(yè)創(chuàng)新生態(tài)構(gòu)建策略研究報(bào)告
- 流程與流程管理
- 對企業(yè)環(huán)境行政處罰培訓(xùn)
- 關(guān)于水表考試題及答案
- 落實(shí)責(zé)任制整體護(hù)理總結(jié)
- 短文選詞填空12篇(新疆中考真題+中考模擬)(解析版)
- 植物化學(xué)保護(hù)學(xué)知到課后答案智慧樹章節(jié)測試答案2025年春華南農(nóng)業(yè)大學(xué)
- 新能源發(fā)展與環(huán)境保護(hù)試題及答案
- 網(wǎng)絡(luò)安全威脅情報(bào)共享-深度研究
- 項(xiàng)目三公示語翻譯
- 《電動(dòng)車充電器教材》課件
- 業(yè)主不讓維修通知函
- 藥店醫(yī)保知識培訓(xùn)課件
- 《中暑的預(yù)防與急救》課件
評論
0/150
提交評論