更新時(shí)間:2022年08月12日11時(shí)01分 來(lái)源:傳智教育 瀏覽次數(shù):
在Python工作中,我們經(jīng)常要對(duì)數(shù)據(jù)進(jìn)行清洗與轉(zhuǎn)換。數(shù)據(jù)的清洗轉(zhuǎn)換是指將抽取到的數(shù)據(jù)源表中的數(shù)據(jù),根據(jù)數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)模型的要求進(jìn)行數(shù)據(jù)的清洗、轉(zhuǎn)換等操作,保證來(lái)自不同系統(tǒng)、不同格式數(shù)據(jù)的一致性和完整性,并且要按照業(yè)務(wù)要求加載到目標(biāo)表中。
數(shù)據(jù)的清洗轉(zhuǎn)換是ETL中最為復(fù)雜的篇章,主要的任務(wù)是過(guò)濾掉不符合要求的數(shù)據(jù)。不符合要求的數(shù)據(jù)主要是有不完整的數(shù)據(jù)、錯(cuò)誤的數(shù)據(jù)、重復(fù)的數(shù)據(jù)三大類。下面針對(duì)不符合要求的三大類數(shù)據(jù)進(jìn)行詳細(xì)介紹。
1.不完整的數(shù)據(jù)
數(shù)據(jù)上報(bào)、接口調(diào)用時(shí)都會(huì)產(chǎn)生大量的不完整數(shù)據(jù),不完整數(shù)據(jù)的產(chǎn)生是不可避免的現(xiàn)象,而不完整的數(shù)據(jù)對(duì)大數(shù)據(jù)環(huán)境下的決策具有一定的影響。不完整數(shù)據(jù)主要包括缺失部分信息的數(shù)據(jù)。檢測(cè)不完整數(shù)據(jù)的方法具體如下。
缺失部分或全部?jī)?nèi)容的數(shù)據(jù)主要是采用計(jì)算機(jī)和人工相結(jié)合的方法進(jìn)行查找,并對(duì)缺失的內(nèi)容進(jìn)行填充處理。不完整數(shù)據(jù)的清洗流程如圖2-2所示。
圖2-2 不完整數(shù)據(jù)的清洗流程
在圖2-2中,不完整數(shù)據(jù)的清洗流程主要分為3個(gè)步驟,具體如下。
(1)對(duì)獲得的數(shù)據(jù)源進(jìn)行不完整數(shù)據(jù)檢測(cè),為后續(xù)的數(shù)據(jù)處理提供所需的數(shù)據(jù)。
(2)對(duì)檢測(cè)出來(lái)的不完整數(shù)據(jù)進(jìn)行處理,如修復(fù)缺失部分或全部?jī)?nèi)容的數(shù)據(jù)。
(3)輸出處理后的符合要求的完整數(shù)據(jù)。
2.錯(cuò)誤的數(shù)據(jù)
大數(shù)據(jù)環(huán)境下數(shù)據(jù)量的劇增使得獲取到的數(shù)據(jù)源會(huì)由于各種原因存在大量的錯(cuò)誤數(shù)據(jù)。
錯(cuò)誤數(shù)據(jù)產(chǎn)生的原因是業(yè)務(wù)系統(tǒng)不夠健全,在接收輸入數(shù)據(jù)后沒(méi)有進(jìn)行過(guò)濾判斷,而是直接將數(shù)據(jù)寫入后臺(tái)數(shù)據(jù)庫(kù)造成的,如數(shù)值數(shù)據(jù)輸成全角數(shù)字字符、字符串?dāng)?shù)據(jù)后面出現(xiàn)一個(gè)回車操作、日期格式不正確、日期越界等錯(cuò)誤。錯(cuò)誤數(shù)據(jù)的清洗流程如圖2-3所示。
圖2-3 錯(cuò)誤數(shù)據(jù)的清洗流程
在圖2-3中,錯(cuò)誤數(shù)據(jù)的清洗流程主要分為3個(gè)步驟,具體如下。
(1)將數(shù)據(jù)源按照規(guī)定的數(shù)據(jù)格式進(jìn)行檢測(cè),并執(zhí)行數(shù)據(jù)預(yù)處理,為后續(xù)的處理步驟做準(zhǔn)備。
(2)對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行一致性檢測(cè),如果預(yù)處理后的數(shù)據(jù)與原始數(shù)據(jù)存在完整性不一致的問(wèn)題,則通過(guò)數(shù)據(jù)修改過(guò)程使數(shù)據(jù)統(tǒng)一。為避免再次出現(xiàn)該問(wèn)題,應(yīng)重復(fù)進(jìn)行檢測(cè)與修改過(guò)程,直到符合要求為止。
(3)輸出修改后的數(shù)據(jù)
北京校區(qū)