機器學習 資料清洗

2021-09-11 10:58:03 字數 1802 閱讀 6583

本文由brzhang發表

資料清洗的工作絕壁是非常枯燥的,做資料研究的的人絕對無法避開這個環節,其根本原因是因為我們從各種渠道拿到的資料可能會出現:

1、不合理的資料,你比如,樣本中有些人的年齡超過了120歲,樓層的高度達到了1000層,以及其他的一些非常不合理的場景。

2、錯誤的型別,你比如,樣例中,幾乎所有的資料都是整形,然而,有一些是字串型別,如果不進行處理,將這些資料直接餵給演算法,一般情況下是要崩潰的。

3、計算機對於處理字串型別比較吃力,有時候,需要我們將他轉化為數字型別,這樣就設計到乙個對映關係,比如,樣例性別,【男,女】,我們可以轉化為1,2,房屋的型別【單間,一房一廳,二房一廳,三房一廳,商鋪】可以對應的列舉出來,比如我在處理房屋朝向上的示例

#提取房屋的朝向

def parse_orientation(row):

if '朝西南' in row:

return 1

elif '朝東北' in row:

return 2

elif '朝東' in row:

return 3

elif '朝南' in row:

return 4

elif '朝西北' in row:

return 5

elif '朝北' in row:

return 6

elif '朝東南' in row:

return 7

elif '朝南北' in row:

return 8

elif '朝西' in row:

return 9

else:

return 10

複製**

等等等等,我想說的是絕對還有很多你意想不到的場景,需要你耐心的打磨資料,將蒐集到的原始資料,清洗成為可用的資料。

jupyter筆記

為了讓我們能夠更好的玩資料清洗,我也不吝嗇的貢獻出了乙份非常全面的pandas的操作cheatsheet乙份,以及後面你一定會用到乙個萬能的cheatsheet。

來來,簡單的了解一下pandas的一些常用的api了,舉例就用:

示例資料一行

1、取子集常用操作

取子集

其中,loc是支援按照列名字串的方式來取子集,iloc支援的是使用陣列索引(從0開始)的方式來取子集,通常,逗號前面是行相關的一些條件限制,逗號右邊則是列相關的限制。比如,我取得

我就取前兩列

2、處理空白資料行

處理空白資料

這種就很簡單愉快了,乙個api就可以刪除或者填充有空白資料的樣本了。

這個就不演示了,因為我是爬蟲爬取資料,所以在爬取的過程中,我已經對資料進行了一些基礎的處理,程式控制不可能出現空白資料了,所以,我也是建議,自己寫爬蟲去獲取資料,這些減輕資料清洗環節的壓力。

實際上,這個操作完全可用map來做:

df['ege'] = df['ege'].map(parse_house_age)

df.head(5)

複製**

結果完全一樣,因為我們只取了一列。

1、使用散點圖

房屋總面積對應總價圖

2、房價熱力值圖:

房價區間熱力圖

圖描述了房間分布區間,可以清洗看出一些問題。

3、頻率直方圖幫助我們迅速找到一些特例獨行的豬,因為他出現的次數少嘛,不得不讓人懷疑這種資料的真實性。

利用直方圖快速找出毛刺點

ok,總的來說,這個過程需要開動自己的腦經,把你拿到的原始資料,慢慢慢慢的,變成可以給你下面演算法需要的資料。

機器學習 資料清洗

本文由brzhang發表 資料清洗的工作絕壁是非常枯燥的,做資料研究的的人絕對無法避開這個環節,其根本原因是因為我們從各種渠道拿到的資料可能會出現 1 不合理的資料,你比如,樣本中有些人的年齡超過了120歲,樓層的高度達到了1000層,以及其他的一些非常不合理的場景。2 錯誤的型別,你比如,樣例中,...

機器學習 資料清洗和特徵選擇

第二部分 特徵提取 1.概念 莊家 坐莊的人,負責收發金錢 賠率 表示發生的話可以獲得本金的倍數,例如小明下注10兩,事件a賠率為3,則發生事件a後,小明可獲得30兩,淨賺20兩 事件發生概率與賠率的關係 p y 1,p為概率,y為賠率 盈利率 下注金額 賠付期望 下注金額 2.賠率分析 假定事件有...

機器學習 資料清洗及工具OpenRefine

資料分析中,首先要進行資料清洗,才可以繼續訓練模型,等操作。資料清洗從名字上也看的出就是把 髒 的 洗掉 指發現並糾正資料檔案中可識別的錯誤的最後一道程式,包括檢查資料一致性,處理無效值和缺失值等。我們要按照一定的規則把 髒資料 洗掉 這就是資料清洗。而資料清洗的任務是過濾那些不符合要求的資料,過濾...