python 數(shù)據(jù)的清理行為實(shí)例詳解
數(shù)據(jù)清洗主要是指填充缺失數(shù)據(jù),消除噪聲數(shù)據(jù)等操作,主要還是通過(guò)分析“臟數(shù)據(jù)”產(chǎn)生的原因和存在形式,利用現(xiàn)有的數(shù)據(jù)挖掘手段去清洗“臟數(shù)據(jù)”,然后轉(zhuǎn)化為滿(mǎn)足數(shù)據(jù)質(zhì)量要求或者是應(yīng)用要求的數(shù)據(jù)。
1、try 語(yǔ)句還有另外一個(gè)可選的子句,它定義了無(wú)論在任何情況下都會(huì)執(zhí)行的清理行為。
例如:
1
2
3
4
5
6
7
8
9
|
>>> try : raiseKeyboardInterrupt finally : print ( 'Goodbye, world!' ) Goodbye, world! Traceback(most recent call last): File "<pyshell#71>" , line 2 , in <module> raiseKeyboardInterrupt KeyboardInterrupt |
以上例子不管try子句里面有沒(méi)有發(fā)生異常,finally子句都會(huì)執(zhí)行。
2、如果一個(gè)異常在 try 子句里(或者在 except 和 else 子句里)被拋出,而又沒(méi)有任何的 except 把它截住,那么這個(gè)異常會(huì)在 finally 子句執(zhí)行后再次被拋出。
下面是一個(gè)更加復(fù)雜的例子(在同一個(gè) try 語(yǔ)句里包含 except 和 finally 子句):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
>>> def divide(x, y): try : result = x / y exceptZeroDivisionError: print ( "division by zero!" ) else : print ( "result is" , result) finally : print ( "executing finally clause" ) >>> divide( 2 , 1 ) result is2. 0 executing finally clause >>> divide( 2 , 0 ) division by zero! executing finally clause >>> divide( "2" , "1" ) executing finally clause Traceback(most recent call last): File "<pyshell#91>" , line 1 , in <module> divide( "2" , "1" ) File "<pyshell#88>" , line 3 , in divide |
3、預(yù)定義的清理行為
一些對(duì)象定義了標(biāo)準(zhǔn)的清理行為,無(wú)論系統(tǒng)是否成功的使用了它,一旦不需要它了,那么這個(gè)標(biāo)準(zhǔn)的清理行為就會(huì)執(zhí)行。
這面這個(gè)例子展示了嘗試打開(kāi)一個(gè)文件,然后把內(nèi)容打印到屏幕上:
1
2
3
4
5
6
|
>>> for line in open ( "myfile.txt" ): print (line, end = "") Traceback(most recent call last): File "<pyshell#94>" , line 1 , in <module> for line in open ( "myfile.txt" ): FileNotFoundError:[Errno2]No such file or directory: 'myfile.txt' |
以上這段代碼的問(wèn)題是,當(dāng)執(zhí)行完畢后,文件會(huì)保持打開(kāi)狀態(tài),并沒(méi)有被關(guān)閉。
關(guān)鍵詞 with 語(yǔ)句就可以保證諸如文件之類(lèi)的對(duì)象在使用完之后一定會(huì)正確的執(zhí)行他的清理方法:
1
2
3
4
5
6
7
|
>>>with open ( "myfile.txt" )as f: for line in f: print (line, end = "") Traceback(most recent call last): File "<pyshell#98>" , line 1 , in <module> with open ( "myfile.txt" )as f: FileNotFoundError:[Errno2]No such file or directory: 'myfile.txt' |
以上這段代碼執(zhí)行完畢后,就算在處理過(guò)程中出問(wèn)題了,文件 f 總是會(huì)關(guān)閉。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!