一、介紹
在進行數(shù)據(jù)分析之前,自己拿到的數(shù)據(jù)大部分情況下都是不能夠直接用的,會存在很多數(shù)據(jù)質(zhì)量的問題,這個時候就需要我們先過濾一遍。
數(shù)據(jù)清洗是整個數(shù)據(jù)分析鏈路中非常重要的一個環(huán)節(jié),能夠提供更高的質(zhì)量的數(shù)據(jù),同時供應(yīng)挖掘材料。
二、解決質(zhì)量問題
解決各種數(shù)據(jù)質(zhì)量問題的目的,包括但不限于:
數(shù)據(jù)的完整性 —— 例如,人的屬性中缺少性別、籍貫、年齡等
數(shù)據(jù)的唯一性 —— 例如,不同來源的數(shù)據(jù)重復(fù)出現(xiàn)的情況
數(shù)據(jù)的權(quán)威性 —— 例如,同一個指標(biāo)出現(xiàn)多個來源的數(shù)據(jù),且數(shù)值不一樣
數(shù)據(jù)的合法性 —— 例如,獲取的數(shù)據(jù)與常識不符,年齡大于150歲。
數(shù)據(jù)的一致性 —— 例如,不同來源的不同指標(biāo),實際內(nèi)涵是一樣的,或是同一指標(biāo)內(nèi)涵不一致。
數(shù)據(jù)清洗的結(jié)果是對各種臟數(shù)據(jù)進行對應(yīng)方式的處理,得到標(biāo)準(zhǔn)的、干凈的、連續(xù)的數(shù)據(jù),提供給數(shù)據(jù)統(tǒng)計、數(shù)據(jù)挖掘等使用。
三、解決辦法
首先判斷能不能從源頭上直接補上,這部分的數(shù)據(jù)缺失太多,是否研發(fā)那邊某個埋點的功能異常,導(dǎo)致一些數(shù)據(jù)無法上報,這個時候需要找研發(fā)對接。
如果是正常的數(shù)據(jù)丟失率例如1%-2%左右,那么可以具體通過一下一些方式不上數(shù)據(jù):
通過其他信息補全,例如使用身份證件號推算性別、籍貫、出生日期、年齡等
通過前后數(shù)據(jù)補齊,例如時間序列數(shù)據(jù)確實了,可以使用前后的均值,缺的多了,可以使用平滑等處理。均值、中位數(shù),或者自動向上或者向下補齊都是比較常用的方法。
實在補不全的,雖然很可惜,但也必須要剔除。但是不要刪掉,沒準(zhǔn)以后用的上。
sql處理方式
#查看comm字段缺失數(shù)量
select sum(comm is null) from emp;
# 平均值填充
select ifnull(comm,(select avg(comm) from emp)) from emp;
# 也可以使用coalesce()函數(shù),該函數(shù)將多個表達(dá)式或列作為參數(shù),并返回第一個非空的值
select coalesce(comm,0) from emp; # 將null值填充為0
去重的方法有:
按主鍵去重,用sql 『去除重復(fù)記錄』即可。
按規(guī)則去重,編寫一系列規(guī)則,對重復(fù)情況復(fù)雜的數(shù)據(jù)進行去重。例如不同渠道來的客戶數(shù)據(jù),可以通過相同的關(guān)鍵信息進行匹配,合并去重。
sql處理方式
# 去重單個字段
select distinct comm from emp;
# 使用group by + 聚合函數(shù)例如max,min,any_value
# 去重多個字段,設(shè)定一個student表,其中,同一個學(xué)生可能有兩個age值
select name,any_value(age) from student group by name
select name,max(age) from student group by name
any_value()會選擇被分到同一組的數(shù)據(jù)里第一條數(shù)據(jù)的指定列值作為返回數(shù)據(jù)
方法:對不同渠道設(shè)定權(quán)威級別
設(shè)定強制合法規(guī)則,凡是不在此規(guī)則范圍內(nèi)的,強制設(shè)為最大值,或者判為無效,剔除
字段類型合法規(guī)則:日期字段格式為『2010-10-10』
字段內(nèi)容合法規(guī)則:性別 in (男、女、未知);出生日期<=今天
設(shè)定告警規(guī)則,凡是不再此規(guī)則范圍內(nèi)的,進行告警,然后人工處理
告警規(guī)則:年齡 > 110
離群值人工特殊處理,使用分箱、聚類、回歸、等方法發(fā)現(xiàn)離群值
sql處理方式
# 使用where條件進行限制
select name,sex,age from student
where sex in ("男","女","未知")
and age between 0 and 110
tips:如果數(shù)據(jù)質(zhì)量問題比較嚴(yán)重,建議跟技術(shù)團隊好好聊聊。
暫時沒有評論,有什么想聊的?
理解高效學(xué)習(xí)編程的基礎(chǔ) 明確學(xué)習(xí)目標(biāo)與方向 確定你的興趣領(lǐng)域 在開始編程之旅之前,首先要對自己感興趣的領(lǐng)域有所了解。這可能涉及到前端開發(fā)、后端服務(wù)、移動應(yīng)用或是游
...理解Python程序啟動執(zhí)行的方式 啟動Python程序的基本概念 什么是Python環(huán)境 Python環(huán)境指的是安裝了Python解釋器及相關(guān)庫文件的計算機系統(tǒng),它為運行Python代碼提供了必要
...Python語言分類概述 Python的發(fā)展歷史 起源與早期版本 Python由Guido van Rossum于1989年圣誕節(jié)期間開始構(gòu)思,并在1991年首次發(fā)布。最初的設(shè)計目的是為了提高ABC語言的可讀
...?? 微信聊 -->
銷售溝通:17190186096(微信同號)
售前電話:15050465281
微信聊 -->
阿帥: 我們經(jīng)常會遇到表格內(nèi)容顯示不完整的問題。 回復(fù)
理理: 使用自動換行功能,以及利用條件格式和數(shù)據(jù)分析工具等。回復(fù)