數據清洗案例 OpenRefine入門

文本過濾

當想找一些包含具體值的數據的時候,需要用到文本過濾。

針對Object Title進行過濾,點擊文本過濾器:
在這裏插入圖片描述
查看Title中有多少與美國有關的數據;
在文本過濾框輸入USA,可以看到有935條匹配。
在這裏插入圖片描述

還可以查看其他格式的數據,比如:輸入(空格)USA(空格)看到匹配的記錄有95條
在這裏插入圖片描述

正則表達式匹配
  1. 通過前面的實驗可以看出,取值都是USA,卻有不同的寫法,這可能是因爲數據錄入問題,但這種情況不利於數據處理和統計
  2. 使用正則表達式,可以匹配所有相關的數據
  3. \b用來匹配邊界,防止一個單詞的中間出現USA也被匹配成功
  4. ?用來表示前面的字符出現0次或1次,所以. ?用來表示可以出現或不出現
  5. 正則表達式爲: \bU. ?S. ?A\b

在這裏插入圖片描述

常用轉換

●移除首尾空白:在數據清洗時,移除文本首尾的空格會提高數據質量
●收起連續空白:在進行數據輸入的時候,有時候會鍵入很多空格
●反轉義HTML字符:從網頁上採集下來的數據會包含HTML字符
●首字母大寫、全大寫、全小寫
●數字化、日期化、文本化
在這裏插入圖片描述

移除匹配的行

實際中會將不符合要求的數據刪除,比如沒有ID的數據記錄
在這裏插入圖片描述
刪除沒有ID的數據
在這裏插入圖片描述

移除重複的數據

●選擇複數歸類後,將所有具有副本的數據和副本數據都標記爲True
●我們不能進行直接刪除,否則會將原數據也刪掉
●排序→相同空白填充→按空白歸類→刪除匹配的行

排序

在這裏插入圖片描述

相同空白填充

在這裏插入圖片描述

按空白歸類

在這裏插入圖片描述

刪除匹配的行

在這裏插入圖片描述

多值數據處理

●現實中我們常會遇到一個問題,就是一個單元格中有多 個值,比如記錄客戶的信息,包括姓名、電話和地址
●當一個客戶有兩個地址和兩個電話時,該如何記錄,有三種方式:

  1. 只添加一條信息,這是最簡單的處理方式,只登記客戶的一個地址和一個電話,但是這樣就損失一半的信息
  2. 在客戶登記表中登記爲兩行,這樣信息就完整保留。會存在一個問題, 系統或者管理員會當做同姓名的兩個人
  3. 在一行中登記所有的信息,可以把這個單元格當做一個信封, 這個信封是隻屬於某個人的

OpenRefine提供分離多值單元格的接口:
在這裏插入圖片描述
輸入豎線進行分割:
在這裏插入圖片描述

在分離後的界面中,在展示方式處選擇記錄:
在這裏插入圖片描述

將展示方式切換爲行,可以看到行數遠多於之前:
在這裏插入圖片描述

在多值化處理後,再次進行文本歸類,可以看到類別的種類:
在這裏插入圖片描述

按數量進行排序,查看每一個類別的數量:
在這裏插入圖片描述

聚類處理

在Categoreis右上角點擊簇集

在這裏插入圖片描述
●點擊簇集後,OpenRefine運行聚類算法
●將拼寫相近的類別聚集爲個類別,並在後面給出建議的類名
●如果認爲聚類結果都正確可以選擇全選,也可以根據實際的需求進行勾選
在這裏插入圖片描述

●當然,並不是所有的聚類結果都正確,比如下圖是另外一個數據集的聚類結果,算法將Shirts和T-shirts認爲是相同的類,但是事實上這是不同的類別
●仔細檢查OpenRefine聚類的結果, 並根據實際進行勾選
在這裏插入圖片描述
聚類結束後,可以合併多值單元格:
在這裏插入圖片描述

聚類方法

●關鍵詞碰接:通過keying函數,將相似的關鍵詞歸爲-類
●比如AB C,AB C,ABC都爲歸爲同一類,因爲它們裏面都有ABC
●就近原則:通過兩類的距離進行歸類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章