數據清洗神器Open Refine簡明入門

Print More

數據一多,就有可能出現數據名目不統一、殘缺或者冗餘等情況,且數據量越大錯誤可能越多。如何才能使雜亂無章的數據變得清晰有致?免費開源的數據清洗工具Open Refine就是你的好幫手,不但可以清洗數據、轉換格式,藉助網絡服務和外部數據幫你擴展,而且還能鏈接數據庫。深度君經授權分享數據新聞網編寫的《中國數據新聞工作坊培訓手冊》,為你總結Open Refine的簡明使用方法。


深度君資料卡:何為Open Refine?

OpenRefine是一款數據清洗軟件,它的主要目的是幫你在使用數據之前挖掘、清洗數據。它以你的網頁瀏覽器作為運行界面,這就意味着它看上去是在網上運行,但所有數據其實保存在你電腦里。

openrefine

Open Refine免費開源,可供所有人使用。最新版本是Google Refine2.5。

以下由數據新聞工作坊編寫的教學材料部分根據 OpenRefine Tutorial 改編。你可以到此網址了解有關 Open Refine 的更多情況。

第一部分:歸類

在該部分中,你會學到如何使用 Open Refine 的歸類功能來清理國家名。我們的測試數據是一個來自不同國家的大學名稱單,大學名稱信息是從維基百科抓取來的。

首先我們得載入數據文件
打開Open Refine, 點擊屏幕左側的“新建項目” (Create Project)

1

 

 

 

 

先點擊“這台電腦” (This Computer),然後點擊“選擇文件”(Choose Files)。 在你的數據文件中選擇UniversityData.csv。你就會看到數據。

2

該文件中有些中文文字(列的名字)。如果中文顯示不對,你也許需要告訴Open Refine使用正確的字符集。要做到這一點,點擊“字符編碼” (Character encoding) 旁邊的空白空間,從中選擇UTF-8。

3

然後點擊右邊的“新建項目” (Create Project) 鍵。

2. 你可以看到country (“國家”)這一列中, 國家名字不統一。例如,美國即叫 United States,也叫USA。我們要通過創立一個文字歸類, 讓Open Refine 給我們看 country 一列中所有的值。摁下 country旁邊的小下箭頭,選擇 歸類 Facet -> 文本歸類 Text Facet

4

片刻後,該歸類中所有國家的值就會在屏幕左側顯示出來。

5

你可以看到美國有多個不同叫法, 還有一些錯誤的名字,比如有一行美國叫United States ), 還有一個捏造的國家叫Utopia(烏托邦)!每個不同的國家名叫一個歸類, Open Refine 給你顯示了每一個歸類里有多少行數據。

點擊任何歸類名字,你會只看到那個歸類里的行。在我們這個例子里,你只會看到那些國家列里數據和你點擊的名字相符的行。

你只要點擊任何一個歸類名,就能對其進行編輯。現在我們來把美國所有不同的叫法都變成United States。 你鼠標指向 US 這一歸類時,一個的“編輯”edit 選項就會出現。點擊 編輯 edit6

請打入United States, 然後點擊 應用 Apply

7

現在所有是 US 的2609行都變成了United States。 對每一個別的叫法都同樣進行編輯,直到美國所有的叫法都變成United States。 你做完後,你的歸類應該如下:

8

第二部分 – 清理數字

我們現在來清理有關學生數目的數據。這些數據里,有的值不是數字,很多值里除了學生數目的數字外,還包含有文字片段。要找出那些條目需要清理,我們需要使用 數值歸類 Numeric facet:

9

如果你看不到數字Numeric facet 的選項,你可能首先需要將學生數那一列轉換成數字。你可以通過選擇編輯欄Edit cells->一般轉換Common transforms->到數字To number

這兒顯示的是值的直方圖,並列出每種類型 numeric (數值型), non-numeric (非數值),blank (空白)或者error (錯誤))條目的數目。你一定要只選擇非數字型的行,這可以通過把numeric, blank 和error排除掉來實現。

10

我們已經可以看出有問題了,因為有的格里包含有+和~符號。要解決這個問題,我們需要做 編輯單元格Edit cells -> 轉換 Transform

11

這使得我們可以打入替換字符序列的命令:

value.replace(“+”, “”)

每格里的現值總是由value (“值”)這個名稱代表的。replace (“替換”)這個命令做的是讓系統針對value進行文字搜索和替換運作,把+換成什麼都沒有 (兩個引號里什麼都沒有)。

12

做這個命令時,你其實是在用一點編程語言。系統還有很多高級功能(本教學材料中沒包括),如果你想在此方面獲得更多知識,可以參考Google Refine Expression Language (GREL) reference

如果你發現有多個東西需要被替換,沒有必要通過不斷點擊編輯單元格 Edit cells -> 轉換 Transform 來逐個替換。相反,你可以將這些命令連在一起,同時來解決多個問題,不管你有多少問題都行:

value.replace(“~”, “”).replace(“,”,””)

為了更新對非數字型值的選擇,有時候有必要將各列的值轉變為數字 (編輯單元格 Edit cells -> 常用轉換 Common transforms -> 數字化 To number)。你做完這一步以後,應該看到非數字型值少了。

13

第三部分 – 自己動手

在該部分里,你會得到一個從新浪微博網站剪貼來的文件, 然後將其轉換為有關PM2.5 值的Excel電子表格。

文件名是Weibo air pollution data.txt 。你可以以跟以前同樣的方式載入。文件是這樣:

14

你必須首先刪除不包含PM2.5的所有的行,然後把數據按時間、PM2.5值、和健康警告級別分成不同的列。你做完以後文件應該像這樣:

15

如果還想學習更多功能,深度君還推薦以下資源:

Git-Hub OpenRefine

數據學院-Cleaning data with Refine

Big Data University的線上課程

RefinePro提供的OpenRefine使用建議/方法合集

Free Your Metadata的教學指南

參考原文:《中國數據新聞工作坊培訓手冊》第四章 – 實操:使用Open Refine清理數據

來源:數據新聞網
(djchina.org)
數據新聞網以引介全球範圍內最頂尖的數據新聞實踐為初衷,以推動數據開放及媒體革新為宗旨,面向中國的新聞從業者、媒體管理者、新傳教育者以及對傳媒感興趣的設計師、程序員,提供線上信息平台與線下交流機會。

深度網編輯/周煒樂

Print Friendly, PDF & Email

1 thoughts on “數據清洗神器Open Refine簡明入門

發表回復

您的電子郵箱地址不會被公開。 必填項已用 * 標註