python 數(shù)據(jù)的清理行為實(shí)例詳解
數(shù)據(jù)清洗主要是指填充缺失數(shù)據(jù),消除噪聲數(shù)據(jù)等操作,主要還是通過(guò)分析“臟數(shù)據(jù)”產(chǎn)生的原因和存在形式,利用現(xiàn)有的數(shù)據(jù)挖掘手段去清洗“臟數(shù)據(jù)”,然后轉(zhuǎn)化為滿足數(shù)據(jù)質(zhì)量要求或者是應(yīng)用要求的數(shù)據(jù)。
1、try 語(yǔ)句還有另外一個(gè)可選的子句,它定義了無(wú)論在任何情況下都會(huì)執(zhí)行的清理行為。
例如:
>>>try:raiseKeyboardInterruptfinally:print('Goodbye, world!')Goodbye, world!Traceback(most recent call last):File"<pyshell#71>", line 2,in<module>raiseKeyboardInterruptKeyboardInterrupt以上例子不管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 子句):
>>>def divide(x, y):try: result = x / yexceptZeroDivisionError:print("division by zero!")else:print("result is", result)finally:print("executing finally clause")>>> divide(2,1)result is2.0executing finally clause>>> divide(2,0)division by zero!executing finally clause>>> divide("2","1")executing finally clauseTraceback(most recent call last):File"<pyshell#91>", line 1,in<module> divide("2","1")File"<pyshell#88>", line 3,in divide3、預(yù)定義的清理行為
一些對(duì)象定義了標(biāo)準(zhǔn)的清理行為,無(wú)論系統(tǒng)是否成功的使用了它,一旦不需要它了,那么這個(gè)標(biāo)準(zhǔn)的清理行為就會(huì)執(zhí)行。
這面這個(gè)例子展示了嘗試打開(kāi)一個(gè)文件,然后把內(nèi)容打印到屏幕上:
>>>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í)行他的清理方法:
>>>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ì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選