數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包_第1頁(yè)
數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包_第2頁(yè)
數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包_第3頁(yè)
數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包_第4頁(yè)
數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

數(shù)據(jù)分析師常用數(shù)據(jù)清洗工具包一、適用業(yè)務(wù)場(chǎng)景與常見(jiàn)數(shù)據(jù)問(wèn)題數(shù)據(jù)清洗是數(shù)據(jù)分析流程中的基礎(chǔ)環(huán)節(jié),直接關(guān)系到后續(xù)分析結(jié)果的準(zhǔn)確性和可信度。本工具包主要適用于以下場(chǎng)景及對(duì)應(yīng)的數(shù)據(jù)問(wèn)題:1.業(yè)務(wù)數(shù)據(jù)導(dǎo)入后的預(yù)處理場(chǎng)景舉例:將企業(yè)CRM系統(tǒng)導(dǎo)出的客戶信息(包含姓名、聯(lián)系方式、購(gòu)買記錄等)與電商平臺(tái)訂單數(shù)據(jù)(包含訂單號(hào)、商品ID、下單時(shí)間等)進(jìn)行整合分析時(shí),常出現(xiàn)數(shù)據(jù)格式不統(tǒng)一(如手機(jī)號(hào)缺失“+”前綴、日期格式為“YYYY/MM/DD”和“DD-MM-YYYY”混用)、字段重復(fù)(如客戶姓名在“客戶信息表”和“訂單表”中分別存儲(chǔ)為“客戶全名”和“姓名”)等問(wèn)題。2.數(shù)據(jù)采集后的原始數(shù)據(jù)校驗(yàn)場(chǎng)景舉例:通過(guò)爬蟲(chóng)工具采集的用戶評(píng)論數(shù)據(jù),可能存在文本亂碼(如中文顯示為“e2d587”)、無(wú)效值(如評(píng)分字段出現(xiàn)“-1”或“5+”)、非結(jié)構(gòu)化數(shù)據(jù)(如評(píng)論內(nèi)容混含表情符號(hào)和HTML標(biāo)簽)等問(wèn)題,需通過(guò)清洗轉(zhuǎn)換為可分析的結(jié)構(gòu)化數(shù)據(jù)。3.跨部門(mén)數(shù)據(jù)整合時(shí)的格式?jīng)_突場(chǎng)景舉例:市場(chǎng)部的活動(dòng)數(shù)據(jù)(用Excel存儲(chǔ),日期格式為“YYYY年MM月DD日”)和運(yùn)營(yíng)部的用戶行為數(shù)據(jù)(用數(shù)據(jù)庫(kù)存儲(chǔ),日期格式為時(shí)間戳)合并時(shí),需統(tǒng)一日期格式;同時(shí)部門(mén)間對(duì)同一指標(biāo)的命名差異(如“轉(zhuǎn)化率”vs“下單轉(zhuǎn)化率”)需通過(guò)清洗實(shí)現(xiàn)字段對(duì)應(yīng)。二、數(shù)據(jù)清洗標(biāo)準(zhǔn)操作流程數(shù)據(jù)清洗需遵循“從整體到局部、從結(jié)構(gòu)到內(nèi)容”的原則,以下為通用操作步驟,結(jié)合Python(pandas庫(kù))和Excel工具實(shí)現(xiàn):步驟1:數(shù)據(jù)導(dǎo)入與初步摸索操作目的:明確數(shù)據(jù)來(lái)源、格式及整體質(zhì)量,定位核心問(wèn)題字段。具體方法:Excel導(dǎo)入:通過(guò)“數(shù)據(jù)”選項(xiàng)卡→“從表格/區(qū)域”導(dǎo)入,使用“分列”功能統(tǒng)一文本格式(如將“123,456”中的逗號(hào)去除,轉(zhuǎn)為數(shù)值“56”)。Python導(dǎo)入:importpandasaspddf=pd.read_csv(“原始數(shù)據(jù).csv”,encoding=“utf-8”)#若編碼異常,嘗試”gbk”或”latin1”print(())#查看字段類型、非空數(shù)量print(df.describe())#查看數(shù)值型字段分布(均值、標(biāo)準(zhǔn)差、最值等)print(df.head(10))#查看前10行數(shù)據(jù),觀察異常值格式關(guān)鍵輸出:字段類型是否正確(如日期被識(shí)別為“object”)、缺失值字段列表、異常值初步定位。步驟2:缺失值處理操作目的:解決數(shù)據(jù)空白或無(wú)效值問(wèn)題,避免分析偏差。具體方法:定位缺失值:print(df.isnull().sum())#統(tǒng)計(jì)各字段缺失數(shù)量處理策略(根據(jù)業(yè)務(wù)場(chǎng)景選擇):直接刪除:若缺失比例>30%且無(wú)業(yè)務(wù)意義(如用戶ID缺失),或?yàn)闊o(wú)關(guān)字段(如備注欄),使用df.dropna(subset=["字段名"],inplace=True)刪除該字段缺失的行。填充處理:數(shù)值型字段:用均值/中位數(shù)填充(如“年齡”字段用中位數(shù),避免極端值影響),df["年齡"].fillna(df["年齡"].median(),inplace=True)。分類型字段:用眾數(shù)或“未知”填充(如“性別”字段用“未知”),df["性別"].fillna("未知",inplace=True)。時(shí)間型字段:用前后有效值填充(如“下單時(shí)間”用上一行有效時(shí)間),df["下單時(shí)間"].fillna(method="ffill",inplace=True)。步驟3:重復(fù)值處理操作目的:刪除完全或部分重復(fù)的記錄,避免數(shù)據(jù)冗余。具體方法:檢測(cè)重復(fù)值:print(df.duplicated().sum())#統(tǒng)計(jì)完全重復(fù)的行數(shù)print(df.duplicated(subset=[“訂單號(hào)”,“用戶ID”]).sum())#統(tǒng)計(jì)指定字段組合重復(fù)的行數(shù)處理策略:完全重復(fù):直接刪除,df.drop_duplicates(inplace=True)。部分重復(fù)(如同一訂單號(hào)對(duì)應(yīng)多條用戶ID):保留最新/最有效記錄(如按“更新時(shí)間”降序后去重),df=df.sort_values("更新時(shí)間").drop_duplicates(subset=["訂單號(hào)"],keep="last")。步驟4:異常值檢測(cè)與處理操作目的:識(shí)別并修正超出合理范圍的值(如年齡=200歲、訂單金額=-10元)。具體方法:規(guī)則檢測(cè):年齡字段異常值(假設(shè)合理范圍0-120歲)print(df[(df[“年齡”]<0)|(df[“年齡”]>120)])訂單金額異常值(負(fù)值為錯(cuò)誤數(shù)據(jù))print(df[df[“訂單金額”]<0])統(tǒng)計(jì)檢測(cè)(箱線圖法):importmatplotlib.pyplotaspltplt.boxplot(df[“訂單金額”])plt.show()#箱線圖上下須外的點(diǎn)為異常值處理策略:錯(cuò)誤值:直接修正(如“訂單金額=-10元”改為“10元”),或聯(lián)系業(yè)務(wù)方*確認(rèn)原始數(shù)據(jù)。極端值:若為真實(shí)數(shù)據(jù)(如大額訂單),需標(biāo)記異常(新增“是否異?!弊侄?1),避免影響整體分布;若為噪聲數(shù)據(jù),可刪除或用中位數(shù)替換。步驟5:數(shù)據(jù)格式標(biāo)準(zhǔn)化操作目的:統(tǒng)一字段格式,保證數(shù)據(jù)一致性。具體方法:文本格式:去除空格/特殊字符、統(tǒng)一大小寫(xiě)(如“北京”vs“北京市”統(tǒng)一為“北京”,“男”vs“MAN”統(tǒng)一為“男”)。df[“城市”]=df[“城市”].str.strip()#去除首尾空格df[“城市”]=df[“城市”].str.replace(“市”,““)#去除“市”后綴df[“性別”]=df[“性別”].str.upper()#統(tǒng)一大寫(xiě)日期格式:將文本/數(shù)值轉(zhuǎn)為標(biāo)準(zhǔn)日期格式(如“2023/10/01”→“2023-10-01”)。df[“下單時(shí)間”]=pd.to_datetime(df[“下單時(shí)間”],format=“%Y/%m/%d”)#指定原格式df[“下單時(shí)間”]=df[“下單時(shí)間”].dt.strftime(“%Y-%m-%d”)#轉(zhuǎn)為目標(biāo)格式數(shù)值格式:統(tǒng)一單位(如“金額”字段中的“100元”和“1萬(wàn)元”統(tǒng)一為“元”),df["訂單金額"]=df["訂單金額"].apply(lambdax:x*10000if"萬(wàn)"instr(x)elsex)。步驟6:數(shù)據(jù)一致性校驗(yàn)操作目的:保證跨表/跨字段邏輯一致(如“訂單金額=單價(jià)×數(shù)量”“下單時(shí)間≤支付時(shí)間”)。具體方法:邏輯校驗(yàn):檢查“訂單金額”是否等于“單價(jià)×數(shù)量”df[“金額校驗(yàn)”]=df[“單價(jià)”]*df[“數(shù)量”]print(df[df[“訂單金額”]!=df[“金額校驗(yàn)”]])關(guān)聯(lián)校驗(yàn):多表關(guān)聯(lián)時(shí)檢查主外鍵一致性(如“訂單表”的“用戶ID”是否在“用戶表”中存在),df=pd.merge(df,用戶表,on="用戶ID",how="inner",validate="many_to_one")。步驟7:清洗后驗(yàn)證與導(dǎo)出操作目的:確認(rèn)清洗效果,輸出可分析數(shù)據(jù)。具體方法:驗(yàn)證:重新運(yùn)行()、df.describe(),確認(rèn)缺失值、重復(fù)值已處理,字段格式正確。導(dǎo)出:df.to_csv(“清洗后數(shù)據(jù).csv”,index=False,encoding=“utf-8-sig”)#utf-8-sig避免Excel打開(kāi)亂碼三、數(shù)據(jù)清洗記錄表模板為便于追溯清洗過(guò)程及團(tuán)隊(duì)協(xié)作,建議使用以下記錄表模板(以Excel為例):字段填寫(xiě)說(shuō)明示例數(shù)據(jù)來(lái)源原始數(shù)據(jù)獲取渠道(如CRM系統(tǒng)、爬蟲(chóng)、業(yè)務(wù)部門(mén)導(dǎo)出)電商平臺(tái)訂單表(2023年10月)清洗日期完成數(shù)據(jù)清洗的日期2023-10-15清洗人員負(fù)責(zé)數(shù)據(jù)清洗的分析師姓名(用*號(hào)代替)*原始數(shù)據(jù)量清洗前總行數(shù)/列數(shù)100,000行×15列缺失值處理字段記錄存在缺失值的字段及處理方式(刪除/填充/保留)“用戶備注”:缺失率5%,填充“無(wú)備注”重復(fù)值處理情況重復(fù)記錄數(shù)量及處理方式(刪除/保留/合并)完全重復(fù)200行,直接刪除異常值處理字段異常值字段、數(shù)量及處理方式(修正/刪除/標(biāo)記)“年齡”:異常值3個(gè)(=200歲),刪除格式標(biāo)準(zhǔn)化字段需標(biāo)準(zhǔn)化的字段及目標(biāo)格式“手機(jī)號(hào)”:統(tǒng)一為11位數(shù)字,去除“-”清洗后數(shù)據(jù)量清洗后總行數(shù)/列數(shù)(對(duì)比原始數(shù)據(jù)量,驗(yàn)證是否誤刪)99,780行×15列(刪除220行)數(shù)據(jù)質(zhì)量評(píng)估清洗后數(shù)據(jù)質(zhì)量評(píng)分(1-5分)及說(shuō)明(如“核心字段完整率100%,無(wú)邏輯矛盾”)4.5分(日期格式統(tǒng)一,無(wú)重復(fù)記錄)備注其他需說(shuō)明的問(wèn)題(如依賴業(yè)務(wù)方確認(rèn)的異常值、清洗中發(fā)覺(jué)的系統(tǒng)漏洞)“訂單金額”負(fù)值數(shù)據(jù)已提交業(yè)務(wù)方*確認(rèn)四、關(guān)鍵注意事項(xiàng)與風(fēng)險(xiǎn)規(guī)避1.備份原始數(shù)據(jù),避免不可逆操作所有清洗前需對(duì)原始數(shù)據(jù)完整備份(如復(fù)制“原始數(shù)據(jù)_備份.csv”),避免因誤操作(如錯(cuò)誤刪除)導(dǎo)致數(shù)據(jù)丟失。Python中建議使用df.copy()創(chuàng)建副本進(jìn)行清洗,而非直接修改原始數(shù)據(jù):df_clean=df.copy()。2.深入理解業(yè)務(wù)邏輯,避免“機(jī)械清洗”缺失值/異常值處理需結(jié)合業(yè)務(wù)場(chǎng)景:例如“用戶最后一次登錄時(shí)間”缺失可能表示“從未登錄”,而非數(shù)據(jù)錯(cuò)誤,此時(shí)應(yīng)保留缺失值并新增“是否新用戶”字段標(biāo)記。處理前與業(yè)務(wù)方*溝通確認(rèn)規(guī)則(如“訂單金額<1元是否為異?!保苊庖蛑饔^判斷導(dǎo)致分析偏差。3.保留清洗過(guò)程記錄,保證可追溯性清洗記錄表需詳細(xì)記錄每一步操作及理由,便于后續(xù)復(fù)盤(pán)或數(shù)據(jù)溯源。若使用代碼清洗,需保存代碼腳本并添加注釋(如“#用中位數(shù)填充年齡缺失值”)。4.控制清洗力度,避免過(guò)度處理并非所有“異?!睌?shù)據(jù)都需要修正:例如電商大促期間的“訂單金額”異常高值是真實(shí)業(yè)務(wù)反映,若刪除會(huì)導(dǎo)致銷售額統(tǒng)計(jì)失真,此時(shí)應(yīng)保留并標(biāo)記為“大促訂單”而非異常值。清洗后需驗(yàn)證數(shù)據(jù)分布變化(如“年齡”字段清洗前后均值、標(biāo)準(zhǔn)差是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論