為什么我們需要數(shù)據(jù)預(yù)處理?
原標(biāo)題:為什么我們需要數(shù)據(jù)預(yù)處理?
作者 | 邱雅婷
責(zé)編| 郭芮
數(shù)據(jù)挖掘的核心是什么?這個(gè)的答案是算法應(yīng)該沒(méi)什么疑問(wèn)。那數(shù)據(jù)挖掘的基石又是什么呢?那就是今天我們要來(lái)說(shuō)的數(shù)據(jù)預(yù)處理。
什么是數(shù)據(jù)預(yù)處理?
數(shù)據(jù)科學(xué)家們一直想為數(shù)據(jù)預(yù)處理賦予一個(gè)定義。其實(shí)簡(jiǎn)單地說(shuō),數(shù)據(jù)預(yù)處理就是一種數(shù)據(jù)挖掘技術(shù),本質(zhì)就是為了將原始數(shù)據(jù)轉(zhuǎn)換為可以理解的格式或者符合我們挖掘的格式。
為什么需要數(shù)據(jù)預(yù)處理?
在真實(shí)世界中,數(shù)據(jù)通常是不完整的(缺少某些感興趣的屬性值)、不一致的(包含代碼或者名稱的差異)、極易受到噪聲(錯(cuò)誤或異常值)的侵?jǐn)_的。因?yàn)閿?shù)據(jù)庫(kù)太大,而且數(shù)據(jù)集經(jīng)常來(lái)自多個(gè)異種數(shù)據(jù)源,低質(zhì)量的數(shù)據(jù)將導(dǎo)致低質(zhì)量的挖掘結(jié)果。就像一個(gè)大廚現(xiàn)在要做美味的蒸魚(yú),如果不將魚(yú)進(jìn)行去鱗等處理,一定做不成我們口中美味的魚(yú)。
數(shù)據(jù)預(yù)處理就是解決上面所提到的數(shù)據(jù)問(wèn)題的可靠方法。
那它是怎么做到的呢?
就像大廚準(zhǔn)備處理魚(yú)的刀具一樣,數(shù)據(jù)預(yù)處理也是如此。它準(zhǔn)備原始數(shù)據(jù)以便進(jìn)一步處理。下面是數(shù)據(jù)預(yù)處理要采取的步驟,如圖:
下面這張圖很形象得把這四個(gè)步驟的作用表現(xiàn)出來(lái),挺有意思的。
數(shù)據(jù)預(yù)處理任務(wù)
應(yīng)用
是時(shí)候采取一些簡(jiǎn)單的實(shí)際應(yīng)用來(lái)了解數(shù)據(jù)預(yù)處理是如何完成的。
下面的例子我們用 Python 來(lái)處理,還需要用到兩個(gè)庫(kù),分別是 Numpy、Pandas。
準(zhǔn)備數(shù)據(jù)
在這里,我們有一個(gè)數(shù)據(jù)集,其中包括IT專(zhuān)業(yè)人員的信息,比如國(guó)家、工資、性別,如下:
我們可以隨意創(chuàng)建此數(shù)據(jù)集的副本。
我們可以觀察到上面的數(shù)據(jù)集包含一些空值,這是故意的。后面很快可以看到它發(fā)揮的作用
導(dǎo)入庫(kù)
簡(jiǎn)單說(shuō)下 Numpy、Pandas 這兩個(gè)庫(kù)的作用:Numpy 庫(kù)包含數(shù)學(xué)工具,它可以用于在我們代碼中的任何類(lèi)型的數(shù)學(xué);Pandas 庫(kù)用于導(dǎo)入和管理數(shù)據(jù)集。
下面是我們導(dǎo)入庫(kù)的方法:
importpandas aspd
importnumpy asnp
導(dǎo)入數(shù)據(jù)集
我們已經(jīng)導(dǎo)入庫(kù)了,接下來(lái)我們需要獲取數(shù)據(jù)集。在我本地里,我將我的數(shù)據(jù)集文件命名為‘profess',它的格式為.csv。
#讀取數(shù)據(jù)(我的數(shù)據(jù)集文件跟我的python文件在同一目錄下)
data= pd.read_csv( "profess.csv")
導(dǎo)入數(shù)據(jù)集后,我們輸出看下它的格式如何:
print(data)
Good!我們成功得將數(shù)據(jù)集導(dǎo)入測(cè)試環(huán)境中。
數(shù)據(jù)清洗——查看缺失值
為了成功管理數(shù)據(jù),缺失值的概念很重要。如果工程師沒(méi)有正確處理缺失值,可能最后得出關(guān)于數(shù)據(jù)的推斷是不準(zhǔn)確的。我們?cè)賮?lái)仔細(xì)看下我們的數(shù)據(jù)的缺失值情況,用 Pandas 庫(kù)的 isnull 函數(shù)來(lái)看看。
print( data.isnull() .sum())
我們可以發(fā)現(xiàn) Age,Salary 列都有缺失值(就是為空的值),缺失值數(shù)量都為1。處理缺失值有7種處理方法,我們這里說(shuō)說(shuō)比較常用的兩種。
1、此方法經(jīng)常用于處理空值,如果某行有特定特征d的空值,就刪除此行。如果特定列具有超過(guò)75%的缺失值,就刪除特定列。不過(guò)我們要在確保樣本數(shù)據(jù)足夠多的情況下,采用這個(gè)方法。因?yàn)槲覀円_保刪除數(shù)據(jù)后,不會(huì)增加偏差。
data.dropna(inplace= True)
print(data.isnull().sum())
2、這個(gè)方法適用于具有年份或者年齡,金額等數(shù)字?jǐn)?shù)據(jù)的功能。我們可以計(jì)算特征的均值,中值或眾數(shù),將其替換為缺失值。與第一種方法相比,這種可以抵消數(shù)據(jù)的缺失,產(chǎn)生更好的效果。
我們用來(lái)看一下操作:
# 將 Age 列中為空的值替換為 Age 的中位數(shù)。
# medain()是 pandas 庫(kù)的求中位數(shù)的方法
data[ Age] = data[ Age]
.replace(np.NaN, data[ Age]
.median())
print( data[ Age])
我們成功替換掉了。
數(shù)據(jù)歸約
為了滿足挖掘需求,我們需要知道這些工程師們的薪水分布區(qū)間,但是我們只有‘Salary' 薪水這一列,所以為了方便挖掘,我們給我們的數(shù)據(jù)集增加‘薪水等級(jí)' level 這一列,通過(guò) Salary 列進(jìn)行區(qū)間歸約,這種方法叫做“屬性構(gòu)造”。我們看看操作:
#數(shù)據(jù)歸約
defsection(d):
if50000> d:
return"50000以下"
if100000> d >= 5000:
return"50000-100000"
ifd > 100000:
return"100000以上"
data[ level] = data[ Salary]
.apply( lambdax: section(x))
print(data[ level])
我們定義一個(gè)‘?dāng)?shù)據(jù)變換'的函數(shù)給,根據(jù) Salary 判斷選擇區(qū)間進(jìn)行變換并賦值給 level。
數(shù)據(jù)變換
我們可以看到 Salary 列也有空值,從業(yè)務(wù)上理解它應(yīng)該是數(shù)字?jǐn)?shù)值才是。但是我們發(fā)現(xiàn)我們的數(shù)據(jù)集中是貨幣格式,我們需要對(duì)它進(jìn)行‘?dāng)?shù)據(jù)變換',轉(zhuǎn)換成我們所需的數(shù)字格式。來(lái)看下實(shí)際操作:
#數(shù)據(jù)變換
def convert_currency(d):
new_value = str(d).replace( ",", "")
.replace( "$", "")
returnfloat(new_value)
data[ Salary] = data[ Salary].apply(convert_currency)
# mean()是 pandas 庫(kù)的求平均值的方法
data[ Salary] = data[ Salary]
.replace(np.NaN, data[ Salary]
.mean())
print( data[ Salary])
變換成功:
我們定義一個(gè)“數(shù)據(jù)變換”的函數(shù),然后將它應(yīng)用再 Salary 列上,最后同數(shù)據(jù)清洗那一步同樣的替換操作,我們這里用平均值替換。
寫(xiě)在最后
至此我們算走完數(shù)據(jù)預(yù)處理的一個(gè)基本流程。
這是比較基礎(chǔ)的一個(gè)小應(yīng)用,但是相信我們以后處理數(shù)據(jù)的時(shí)候能有一個(gè)基本清晰的解決思路,以及如何選擇處理方法以及為什么選擇有所了解。
相關(guān)文章
- 臺(tái)灣3名男子拼命自殘 共詐保800多萬(wàn)臺(tái)幣遭判刑
- 小伙買(mǎi)大樂(lè)透中千萬(wàn)大獎(jiǎng)表示:要上班冷靜一下
- 女孩朋友圈向300人各借千元,一夜湊夠!而還款過(guò)程更讓人感動(dòng)
- 蘭州警方破獲特大運(yùn)毒案,繳獲毒品海洛因15公斤
- 以微信好友數(shù)算成績(jī),網(wǎng)友吐槽:微商學(xué)院?
- 好好學(xué)球,也能安心讀書(shū) 中國(guó)羽協(xié)青少年注冊(cè)新政接地氣
- 沒(méi)有C羅的皇馬,齊達(dá)內(nèi)回歸復(fù)原了心臟 佛爺卻稱還想要他!
- 372斤小伙決定做切胃手術(shù)減肥 醫(yī)生陪他逛街、玩游戲、吃飯
- 名字帶電的股票全漲停?這波行情讓文科生看蒙
- 迪士尼以713億美元收購(gòu)?怂 X戰(zhàn)警等IP將歸漫威
- 郭京飛求生欲上線!姚晨?jī)鹤有⊥炼箍刺K明玉被打落淚要找叔叔報(bào)仇 郭京飛馬上發(fā)微博“認(rèn)慫”求原諒
- 奧運(yùn)冠軍何姿購(gòu)房糾紛 二審維持原判賣(mài)方退賠230萬(wàn)
- 魯能亞冠激戰(zhàn)鹿島 佩萊破門(mén)與隊(duì)友慶祝
- 歐文高效兩雙難阻綠軍慘敗 高難后仰引全場(chǎng)驚嘆
- WTA球后之爭(zhēng)再成“二人轉(zhuǎn)” 哈勒普能否掀翻大坂?
- 哈登狂浪末節(jié)醒一次就夠 關(guān)鍵6分神來(lái)之筆定勝負(fù)
- 威少賽后揭露與球迷沖突始末 因后者涉嫌種族言論
- 耐克發(fā)布中國(guó)女足世界杯球衣 擁有一個(gè)絢麗多彩的鳳凰圖案
- 韓星勝利卷入丑聞取消來(lái)港計(jì)劃 容祖兒:希望他沒(méi)事
- 員工聚餐后遇車(chē)禍身亡被認(rèn)定工傷 公司:他沒(méi)打卡
網(wǎng)友評(píng)論

推廣鏈接
最新文章快讀
文章隨機(jī)推薦
- 鄞州奧迪車(chē)因亂停車(chē)擋道被貼滿衛(wèi)生巾現(xiàn)場(chǎng)照片曝光
- 羅志祥搶歐弟女友事件真相揭秘 歐弟當(dāng)時(shí)女朋友是誰(shuí)?川島末樹(shù)代個(gè)人資料照片
- 濟(jì)南公交女色狼資料遭人肉 對(duì)男乘客又摸又抱
- 北京遇上西雅圖2最新票房統(tǒng)計(jì)及精彩豆瓣影評(píng)匯總
- 千金女賊什么時(shí)候播出 千金女賊播出時(shí)間在哪個(gè)臺(tái)播一周更新幾集
- 雙聯(lián)屏內(nèi)飾/明年3月上市 長(zhǎng)安全新CS15亮相
- 長(zhǎng)沙撞死人跑車(chē)車(chē)主疑似女主播尚玥 事故現(xiàn)場(chǎng)慘不忍睹
- 第二期中國(guó)好聲音學(xué)員大扒皮:劉雅婷文靜背后,姚貝娜真實(shí)身份。。。
- 周文斌嚴(yán)重違紀(jì)事件最新消息
- 2014宅男女神熊熊是誰(shuí)? 童顏G乳全裸艷照揭秘卓毓彤個(gè)人資料比基尼照胸圍床照早期照片微博
- 泉港6.97噸碳九泄漏 漁民掉入污染海域住進(jìn)ICU
- 神秘嘉賓驚喜造訪《美味獵手》領(lǐng)隊(duì)田亮荒島尬舞
- 壞家伙們第4集收視率破紀(jì)錄 壞家伙們第4集劇情激烈收視率飆升
- 千金女賊什么時(shí)候上映在哪個(gè)臺(tái)上映 千金女賊預(yù)告片視頻劇照及角色介紹
- 章子怡產(chǎn)女 汪峰離婚2次曾育有倆女兒,汪峰離婚為了章子怡