




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章Python數(shù)據(jù)處理基礎(chǔ)
2.1Python程序開發(fā)技術(shù)
Python的特點(diǎn):面向?qū)ο髷?shù)據(jù)類型豐富具有功能強(qiáng)大的模塊庫(kù)易拓展可移植性【例】Python語言綜合示例——天天學(xué)習(xí),天天向上。importrandom#包含隨機(jī)數(shù)模塊,以生成隨機(jī)數(shù)#定義fib_loop函數(shù),構(gòu)造斐波那契數(shù)列deffib_loop(n):listNum=[]a,b=0,1#for結(jié)構(gòu),循環(huán)體重復(fù)運(yùn)行n次foriinrange(n):a,b=b,a+blistNum.append(a)print(i,listNum)returnlistNum#返回一個(gè)數(shù)據(jù)列表listNumlistPlan=['吃零食','學(xué)習(xí)','學(xué)習(xí)','學(xué)習(xí)','看電影','學(xué)習(xí)','旅游','睡覺','學(xué)習(xí)']listNum=fib_loop(6)#調(diào)用fib_loop函數(shù)生成斐波那契數(shù)列varIdx=random.randint(0,5)#生成0~4的隨機(jī)數(shù)varIdxvarRandom=listNum[varIdx]print('今日運(yùn)程:宜',listPlan[varRandom])#根據(jù)隨機(jī)編號(hào)抽取今日計(jì)劃2.2基本數(shù)據(jù)類型
Python3中有六個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字)String(字符串)List(列表)Tuple(元組)Set(集合)Dictionary(字典)1.可變類型與不可變類型可變數(shù)據(jù)類型在聲明時(shí)會(huì)開辟一個(gè)內(nèi)存空間,使用Python的內(nèi)置方法對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行修改時(shí),內(nèi)存地址不發(fā)生變化??勺償?shù)據(jù)包括列表、字典和集合。不可變類型不可變數(shù)據(jù)類型在聲明時(shí)候也會(huì)開辟一塊內(nèi)存,不能改變這個(gè)數(shù)據(jù)的值。當(dāng)改變賦值時(shí),會(huì)重新開辟一塊內(nèi)存空間。不可變數(shù)據(jù)有數(shù)字、字符串和元組。Python的六個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類型中:不可變數(shù)據(jù)(3個(gè)):Number(數(shù)字)、String(字符串)、Tuple(元組);可變數(shù)據(jù)(3個(gè)):List(列表)、Dictionary(字典)、Set(集合)【例2.2】數(shù)值類型不可改變。i=3print(id(i))i+=1print(id(i))2.String(字符串)類型Python中的字符串用半角的單引號(hào)或雙引號(hào)括起來,獲取字符串的一部分的操作也稱為切片,截取格式為:
字符串變量[頭下標(biāo):尾下標(biāo)]訪問方法:正序訪問時(shí),可以獲取到頭下標(biāo)到尾下標(biāo)減1位置的字符。也可以逆序讀取,最后一個(gè)字符下標(biāo)為-1。柵欄式位置:Python字符串的首字母下標(biāo)為0,可以認(rèn)為字符串位置與該位置上的數(shù)值交錯(cuò)出現(xiàn),形成“柵欄”式?!纠?.3】字符串的訪問。str='Picture'print(str[1:3])#第二、三個(gè)字符print(str[-3:-1])#倒數(shù)第二、三個(gè)字符print(str[3:-1])#正數(shù)第四個(gè)到倒數(shù)第二個(gè)字符print(str[-6:7])#倒數(shù)第六個(gè)到正數(shù)第七個(gè)字符print(str[2:])#第三個(gè)字符開始的所有字符print(str*2)#輸出字符串兩次print(str+"TEST")#連接字符串由于字符串是不可變類型,所以向字符串某位置賦值會(huì)導(dǎo)致錯(cuò)誤。【例2.4】字符串賦值。word='Python'print(word[0],word[5])print(word[-1],word[-6])如果繼續(xù)添加一行語句:word[0]=Q'由于無法修改word字符串,因此會(huì)導(dǎo)致錯(cuò)誤:“TypeError:'str'objectdoesnotsupportitemassignment”。如果需要修改字符串的內(nèi)容,可以使用重新賦值語句,如下:word='Qython'即生成一個(gè)新的word變量。3.
List(列表)類型List(列表)使用方括號(hào)[]進(jìn)行定義,數(shù)據(jù)項(xiàng)之間用逗號(hào)分隔。列表是Python中使用最頻繁的數(shù)據(jù)類型。列表的數(shù)據(jù)項(xiàng)可以是數(shù)字、字符串,也可以是列表。列表截取語法與字符串類似,格式如下:列表變量[頭下標(biāo):尾下標(biāo)]【例2.5】列表的訪問。list=['a',56,1.13,'HelloWorld',[7,8,9]]print(list)#完整列表print(list[4])#第五個(gè)元素print(list[-2:5])#從倒數(shù)第二個(gè)到正數(shù)第五個(gè)元素print(list[2:])#第三個(gè)元素開始的所有元素列表中的元素可以賦值修改。List還內(nèi)置了很多方法,例如append()、pop()等等?!纠?.6】列表元素的修改。a=[1,2,3,4,5,6]a[0]=9#將第一個(gè)元素設(shè)為9print(a)a.append(7)#在列表末尾追加7print(a)a[2:5]=[]#將第三到五個(gè)元素值設(shè)置為空值print(a)a.pop(2)#將第三個(gè)元素移除print(a)在實(shí)際應(yīng)用中,經(jīng)常需要對(duì)列表中的數(shù)據(jù)項(xiàng)進(jìn)行遍歷(也稱為迭代)。Python中常用的列表迭代方法有三種:for循環(huán)遍歷按索引序列遍歷按下標(biāo)遍歷。【例2.7】列表的遍歷。lis=['螞蚱','螳螂','蟈蟈','蝗蟲','蛐蛐']#(1)直接遍歷foriteminlis:print(item)#(2)按索引遍歷foriinenumerate(lis):print(i)#(3)對(duì)于列表類型,還有一種通過下標(biāo)遍歷的方式,如使用range()函數(shù)foriinrange(len(lis)):print(lis[i])4.Tuple(元組)類型元組寫在小括號(hào)()里,元素之間用逗號(hào)分隔,元素可以具有不同的類型。元組(Tuple)與列表類似,但元組的元素不能修改。元組可以被索引,下標(biāo)索引也是從0開始,-1為從末尾位置?!纠?.8】元組的訪問。tuple=('SpiderMan',2017,33.4,'Homecoming',14)tinytuple=(16,'Marvel')print(tuple)#輸出完整元組print(tuple[0])#輸出元組的第一個(gè)元素print(tuple[3:4])#輸出從第二個(gè)元素開始到第三個(gè)元素print(tuple+tinytuple)#連接元組元組的元素不可改變,但如果元組包含了可變類型的數(shù)據(jù)項(xiàng),則該數(shù)據(jù)項(xiàng)可以修改?!纠?.9】修改元組中的List類型數(shù)據(jù)項(xiàng)。tuple=([16,'Marvel'],'SpiderMan',2017,33.4,'Homecoming',14,)print(tuple[0])tuple[0][0]='Marvel'tuple[0][1]='16'print(tuple)5.Dictionary(字典)字典是一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象。字典使用大括號(hào){}定義,格式如下:d={key1:value1,key2:value2}字典的每個(gè)鍵值(key/value)對(duì)用冒號(hào)分隔,鍵值對(duì)之間用逗號(hào)分隔。鍵一般是唯一的。如果出現(xiàn)了重復(fù),則后面的鍵值對(duì)會(huì)替換前面的鍵值對(duì)。值的數(shù)據(jù)及類型不限,可以是字符串、數(shù)字或元組。1)字典的訪問
訪問字典中的值需要使用字典的鍵值,這個(gè)鍵值用方括號(hào)括起來格式為:dt[‘key’]【例2.10】字典的訪問。dict={'Name':'Mary','Age':7,'Class':'First'};print(dict);print("Name:",dict['Name'])print("Age:",dict['Age'])【例2.11】列表可以作為字典的value值。dict={'Name':['Mary','Tom','Philp'],'Age':[7,8,9],'Class':['1st','2nd','3rd']};print(dict);print("Name:",dict['Name'])dict['Age']=[8,9,10]print("Age:",dict['Age'])2)修改字典可以向字典添加、修改或刪除鍵/值對(duì),如下例:【例2.12】修改字典。dict={'Name':'Zara','Class':'First'};#添加adddict['Gender']="Female"print(dict)#修改updatedict.update({"No":"001"})print(dict)#也可以使用update方法添加/修改多個(gè)數(shù)據(jù)dict.update({'Gender':"F","Id":1})print(dict)3)刪除字典元素刪除一個(gè)字典用del命令,清空字典用clear命令?!纠?.13】刪除字典元素。deldict['Gender']print(dict)dict.clear()print(dict)5.Set(集合)類型Set(集合)由一列無序的、不重復(fù)的數(shù)據(jù)項(xiàng)組成。集合是可變類型。與數(shù)學(xué)中的集合概念相同,集合中每個(gè)元素都是唯一的。集合不設(shè)置順序,每次輸出時(shí)元素的排序可能都不相同。集合使用大括號(hào),形式上和字典類似,但數(shù)據(jù)項(xiàng)不是成對(duì)的。
1)創(chuàng)建set集合創(chuàng)建集合可以使用大括號(hào){}或者set()函數(shù),但創(chuàng)建一個(gè)空集合必須用set()函數(shù)而不能用{},因?yàn)榭盏拇罄ㄌ?hào){}創(chuàng)建的是空的字典。建立一個(gè)由(v1,v2,…)組成的集合mySet,可以使用:mySet={v1,v2,...}。還可以使用List列表來創(chuàng)建集合,列表中的數(shù)據(jù)項(xiàng)直接作為集合的元素。生成的set集合和原List列表相比,數(shù)據(jù)項(xiàng)順序有可能不同,并且會(huì)去除重復(fù)數(shù)據(jù)項(xiàng)?!纠?.14】創(chuàng)建集合。#創(chuàng)建一個(gè)空集合var=set()print(var,type(var))#顯示集合內(nèi)容和類型
#具有數(shù)據(jù)的集合var={'LiLei','HanMeiMei','ZhangHua','LiLei','LiLei'}print(var,type(var))#顯示集合內(nèi)容和類型【例2.15】集合成員檢測(cè)。#判斷元素在集合內(nèi)result='LiLei'invarprint(result)#判斷元素不在集合內(nèi)
result='lilei'notinvar#大小寫敏感print(result)2)集合添加、刪除為集合添加數(shù)據(jù)項(xiàng)有兩種常用方法,是add()和update()。刪除集合項(xiàng)的常用方法是remove()?!纠?.16】增加、刪除集合元素。var={'LiLei','HanMeiMei','ZhangHua'}var.add('LiBai')#add方法添加元素print(var)var.update('DuFu')#update方法首先拆分元素,然后各個(gè)添加print(var)#數(shù)據(jù)項(xiàng)無序,且去除重復(fù)項(xiàng)
var.remove('D')var.remove('F')var.remove('u')print(var)3)SET集合的遍歷集合中的元素也可以使用遍歷進(jìn)行訪問,可以使用直接遍歷,也可以使用enumerate索引進(jìn)行遍歷。不過,集合類型不支持range()方式的遍歷?!纠?.17】有一個(gè)集合anml,其內(nèi)容為{'紫貂','松貂','青鼬','狼獾’},對(duì)anml集合進(jìn)行遍歷。方法一:anml={'紫貂','松貂','青鼬','狼獾'}foriteminanml:print(item)方法二:anml={'紫貂','松貂','青鼬','狼獾'}foriteminenumerate(anml):print(item)4)Python集合操作符號(hào)Python集合類型與數(shù)學(xué)中的集合操作類似,支持集合的交集、并集、差集、包含等數(shù)學(xué)操作。
數(shù)學(xué)集合運(yùn)算符與Python集合操作符對(duì)比表集合操作數(shù)學(xué)符號(hào)Python操作符差集--交集∩&并集∪|不等于≠!=等于===包含于∈in不包含于notin【例2.18】集合的交集、并集(合集)、差集。#分別構(gòu)造獾和貂兩個(gè)集合Huan={'豬獾','蜜獾','狼獾',}Diao={'紫貂','松貂','美洲水鼬','狼獾'}#交集DiaoXiong=Huan&Diaoprint('貂熊是:',DiaoXiong)#并集Youke=Huan|Diaoprint('鼬科的是:',Youke)#差集DiaoT=Diao-Huanprint('除去獾的貂類:',DiaoT)非洲有一種兇猛的小型鼬科動(dòng)物,名為狼獾,也被稱為貂熊。江湖人稱“平頭哥”。2.3數(shù)據(jù)文件讀寫
機(jī)器學(xué)習(xí)的本質(zhì)是數(shù)據(jù)處理,及在此基礎(chǔ)上的算法運(yùn)行。實(shí)際應(yīng)用中,經(jīng)常使用大量的數(shù)據(jù),需要使用數(shù)據(jù)文件。2.3.1打開與關(guān)閉文件1.打開文件打開文件的內(nèi)置函數(shù)是open()函數(shù),打開文件后會(huì)創(chuàng)建一個(gè)文件對(duì)象。對(duì)文件的訪問通過這個(gè)文件對(duì)象進(jìn)行。語法:open(file_name[,access_mode][,buffering])主要參數(shù):file_name:字符串類型,要訪問的文件名稱。access_mode:文件的打開模式,讀取、寫入或追加等??蛇x參數(shù),默認(rèn)為r(只讀模式)。寫數(shù)據(jù)常用的是w’、‘a(chǎn)’模式,分別表示改寫和添加。如:f=open('datafile.txt','w’)2.寫入文件向文件中寫入數(shù)據(jù),使用文件對(duì)象的write()方法,參數(shù)為要寫入文件的字符串。如:f.write(‘somedata’)3.關(guān)閉文件關(guān)閉使用文件對(duì)象的close方法。如:f.close()【例2.19】打開文件并寫入數(shù)據(jù)。filename='INFO.txt'f=open(filename,'w')#清空原文件數(shù)據(jù),文件不存在則創(chuàng)建新文件f.write("IamZhangSanFeng.\n")f.write("IamnowstudyinginECNU.\n")f.close()運(yùn)行后,程序在當(dāng)前目錄生成了一個(gè)INFO.txt文件,內(nèi)容為三行數(shù)據(jù)。文件的讀寫也會(huì)產(chǎn)生錯(cuò)誤。例如讀取一個(gè)不存在的文件或者沒有正常關(guān)閉的文件,會(huì)產(chǎn)生IOError錯(cuò)誤。為了避免此類問題,可以使用try...finally語句,不過更方便的是使用Python提供的with語句。2.3.2讀取文件內(nèi)容
文件對(duì)象中也提供了讀取文件的方法,包括read()、readline()、readlines()等方法。其功能分別如下:file.read([count]):默認(rèn)讀整個(gè)文件。如果設(shè)置了參數(shù)count,則讀取count個(gè)字節(jié),返回值為字符串。file.readline():從當(dāng)前位置開始,讀取文件中的一行,返回值為字符串。file.readlines():從當(dāng)前位置開始讀取文件的所有行,返回值為列表,每行為列表的一項(xiàng)。【例2.21】read()函數(shù)讀取整個(gè)文件。withopen("INFO.txt")asf:#默認(rèn)模式為‘r’,只讀模式ct10=f.read(5)#讀5個(gè)字符print(ct10)print('======')contents=f.read()#從當(dāng)前位置,讀文件全部?jī)?nèi)容print(contents)有時(shí)讀取的數(shù)據(jù)具有特殊字符或需要去掉的空格,如\n(換行)、\r(回車)、\t(制表符)、''(空格)等,常用去空白符函數(shù):strip():去除頭、尾的字符和空白符。lstrip():用來去除開頭字符、空白符。rstrip():用來去除結(jié)尾字符、空白符?!纠?.22】使用readline()函數(shù)逐行讀取。withopen('data.txt')asf:line1=f.readline()#讀取第一行數(shù)據(jù)(此時(shí)已經(jīng)指向第一行末尾)line2=f.readline()#從上一次讀取末尾開始讀?。ǖ诙校﹑rint(line1)print(line2)print(line1.strip())print(line2.strip())print(line1.split())【例2.23】使用readlines()一次讀取多行:withopen('data.txt')asf:lines=f.readlines()#文件數(shù)據(jù)讀到一個(gè)列表,每個(gè)元素對(duì)應(yīng)一行print(lines)#每一行數(shù)據(jù)都包含了換行符print('================================')forlineinlines:print(line.rstrip())#使用rstrip()處理空格【例2.24】使用for循環(huán)逐行讀取文件。#逐行讀取withopen('data.txt')asf:forlineDatainf:print(lineData.rstrip())#去掉每行末尾的換行符2.3.3將數(shù)據(jù)寫入文件
如果需要對(duì)文件寫入數(shù)據(jù),打開方式需要選擇‘w’(寫入)或者‘a(chǎn)’(追加)模式,才能對(duì)文件內(nèi)容進(jìn)行改寫或添加。寫入文件可以使用Python提供的write方法。write方法的語法如下:fileObject.write(byte)其中,參數(shù)byte為待寫入文件的字符串或字節(jié)?!纠?.25】新建文本文件并寫入內(nèi)容。filename='write_data.txt'withopen(filename,'w')asf:#'w'表示寫數(shù)據(jù),會(huì)清空原文件f.write("IamZhangSanFeng.\n")f.write("IamnowstudyinginECNU.\n")2.3.4Pandas存取文件
Pandas的核心功能是數(shù)據(jù)計(jì)算和處理,對(duì)外部文件讀寫數(shù)據(jù)也是Pandas功能的一部分。而且,可以使用Pandas在數(shù)據(jù)讀寫階段對(duì)數(shù)據(jù)做一定的預(yù)處理,為接下來的數(shù)據(jù)分析做準(zhǔn)備。讀函數(shù)寫函數(shù)功能read_csvto_csv將CSV文件讀入DataFrame,默認(rèn)逗號(hào)分隔。read_excelto_excel將Excel文件讀取到PandasDataFrame中。read_sqlto_sql將SQL查詢或數(shù)據(jù)庫(kù)表讀取到DataFrame中。read_jsonto_json讀寫JSON格式文件和字符串。read_htmlto_html可以讀寫HTML字符串/文件/URL,將HTML表解析為Pandas列表DataFrames。表2.2Pandas主要讀寫函數(shù)1.read_csv函數(shù)功能:從文件、URL、文件新對(duì)象中加載帶有分隔符的數(shù)據(jù),默認(rèn)分隔符是逗號(hào)。read_csv的格式如下:pd.read_csv(filepath_or_buffer,sep,header,encoding,index_col,columns…)該函數(shù)有20多個(gè)參數(shù),其主要參數(shù)如下:filepath_or_buffer:字符型,代表文件名或數(shù)據(jù)對(duì)象的路徑,也可以是URL。sep:字符型,數(shù)據(jù)的分隔符。read_csv中默認(rèn)是逗號(hào);read_table中默認(rèn)是tab空格。header:整型或整數(shù)列表,默認(rèn)為None,代表列名的行號(hào)或數(shù)據(jù)的起始行。Pandas讀文件時(shí)默認(rèn)第一行為關(guān)鍵字行。如果數(shù)據(jù)沒有關(guān)鍵字,需要將header設(shè)置為None。encoding:字符型,可選參數(shù),注明數(shù)據(jù)的編碼,默認(rèn)為”utf-8”。index_col:整數(shù),默認(rèn)為None,指定行索引的列號(hào)?!纠?.29】讀取無標(biāo)題數(shù)據(jù)并設(shè)置標(biāo)題名。importpandasaspddata1=pd.read_table('data.txt',sep='',header=None,names=["H","W","C"])print(data1)2.3.5NumPy存取文件
Num
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)采鹽行業(yè)市場(chǎng)運(yùn)營(yíng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)酒店用品行業(yè)運(yùn)行態(tài)勢(shì)及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)過硫酸鹽行業(yè)運(yùn)行狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)輕質(zhì)碳酸鈣行業(yè)競(jìng)爭(zhēng)態(tài)勢(shì)與營(yíng)銷策略研究報(bào)告
- 2025-2030年中國(guó)車輛專用照明及電氣信號(hào)設(shè)備制造市場(chǎng)十三五規(guī)劃與發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)螺絲刀行業(yè)運(yùn)行狀況及前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)船舶租賃市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)膨化食品市場(chǎng)運(yùn)營(yíng)狀況與發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)紙漿產(chǎn)業(yè)運(yùn)行狀況與前景趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)糧食烘干機(jī)械行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景預(yù)測(cè)報(bào)告
- Unit5 What day is it today?(教學(xué)設(shè)計(jì))-2023-2024學(xué)年教科版(廣州)英語四年級(jí)下冊(cè)
- 法院生活費(fèi)申請(qǐng)書
- 2025年益陽醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 醫(yī)用氣體施工方案
- 2024 年陜西公務(wù)員考試行測(cè)試題(B 類)
- 【課件】學(xué)校后勤管理工作
- 2025-2030年中國(guó)聚丙烯酰胺(PAM)市場(chǎng)發(fā)展?fàn)顩r及未來投資戰(zhàn)略決策報(bào)告新版
- 幼兒園師德師風(fēng)培訓(xùn)內(nèi)容
- 課題申報(bào)書:產(chǎn)教融合背景下護(hù)理專業(yè)技能人才“崗課賽證”融通路徑研究
- 住宅小區(qū)消防設(shè)施檢查方案
- 《榜樣9》觀后感心得體會(huì)四
評(píng)論
0/150
提交評(píng)論