版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
完整版請訪問我的博客:/loveyy1010目錄TOC\o"1-3"\h\u7834第一章:初識OpenRefine 35795介紹OpenRefine 423320要點1:安裝OpenRefine 521757WINDOWS 527312MAC 521474LINUX 615393要點2:創(chuàng)建一個新項目 628628OpenRefine支持的文件類型 718329要點3:探索數(shù)據(jù) 932542要點4:操縱列 105573列隱藏和展開 1027928移動列 1223673重命名或刪除列 136335要點5:使用項目操作歷史 1317763要點6:導出項目 1522785要點7:獲取更多的運行內存 1822451Windows 1823657Mac 18921Linux 181796小結 191791第二章:分析和修改數(shù)據(jù) 2018629點1-數(shù)據(jù)排序 2123804對行進行重新排序 2330640點2-數(shù)據(jù)透視 2313758文本透視 2321637數(shù)字透視 278972定制透視 2921974對標星和標旗行進行透視 3217803點3-重復檢測 3329858點4-應用一個文本過濾 3526983點5-使用簡單單元格轉換 3620204點6-刪除匹配行 3913587小結 42:初識OpenRefine本章中,我們會說明OpenRefine是用來干什么的?為什么我們需要用它?并且怎么用它。簡單介紹后,我們會通過七個基本小點讓你初嘗OpenRefine的魅力?!虬惭bOpenRefine◎創(chuàng)建一個項目◎探索你的數(shù)據(jù)◎操縱列◎使用項目歷史◎輸出項目◎充分利用內存雖然每個點都相對獨立,我們還是建議新讀者按照我們的順序學習,最起碼開始的幾點需要如此,因為這幾點中我們提供了軟件操作的重要信息。有經驗的高級讀者可以按照自己喜歡自由選擇。介紹OpenRefine我們需要承認這樣一個事實:你的數(shù)據(jù)是不完美的,所有的數(shù)據(jù)都是不完美的。無論你多么小心地建立數(shù)據(jù),錯誤總會偷偷溜進你的數(shù)據(jù)中。如果是多人共同創(chuàng)建或者已經幾經轉手,那么錯誤更加無法避免。無論你的數(shù)據(jù)本來就是數(shù)字化的,還是通過傳統(tǒng)刊物數(shù)字化轉換而來的,無論它們存儲在excel表中還是數(shù)據(jù)庫中,數(shù)據(jù)中的錯誤總是無法避免。確認錯誤是保證數(shù)據(jù)質量的第一步,主要包括數(shù)據(jù)畫像和數(shù)據(jù)清洗。數(shù)據(jù)畫像Olson定義為:使用統(tǒng)計方法發(fā)現(xiàn)數(shù)據(jù)的結構、內容、質量。換句話說,這是一種對你的數(shù)據(jù)進行畫像,預發(fā)現(xiàn)包含的錯誤信息的方法。數(shù)據(jù)清洗用半自動化的方式改正畫像過程中發(fā)現(xiàn)的錯誤,比如:刪除缺失和重復值、行過濾透視、值聚類及轉換、單元格拆分等等。鑒于后續(xù)章節(jié)都需要保證數(shù)據(jù)已經畫像清洗過,數(shù)據(jù)轉換工具(IDTS)能夠快速廉價的在一個操作界面內處理大量的數(shù)據(jù)問題,即使處理人員缺乏專業(yè)技術背景,所以IDTS也就成為了首選。OpenRefine就是這樣一個IDTS工具,其能夠對數(shù)據(jù)進行可視化操作處理。它很像傳統(tǒng)的excel軟件,但其工作方式更像數(shù)據(jù)庫,因其并不是處理單獨的單元格,而是處理列和字段。這意味著OpenRefine對于增加新行內容表現(xiàn)不佳,但對于探索、清洗、整合數(shù)據(jù)卻功能強大。的要點介紹將幫助您熟悉OpenRefine的主要功能,從導入導出數(shù)據(jù)到數(shù)據(jù)探索,從歷史操作使用到內存管理。要點1:安裝OpenRefine本點中,您將學習如何下載最新版本的OpenRefine和如何在你喜歡的操作系統(tǒng)中運行軟件。讓我們開始吧:請從http://OpenR下載軟件,OpenRefine原來叫做FreebaseGridworks。后來幾年使用名稱為Googlerefine。2012年10月后,這個軟件被社區(qū)接手,使其真正成為開源軟件。OpenRefine2.6是使用新名稱后的第一個版本,如果你對開發(fā)版本感興趣,可以訪問:/OpenRefine。OpenRefine基于JAVA環(huán)境,也就是說和操作系統(tǒng)無關,你只需要保證你的電腦上安裝了最新版的JAVA環(huán)境(可以到/download下載),然后根據(jù)你的操作系統(tǒng)按對應步驟操作:WINDOWS下載zip壓縮包解壓到指定文件夾雙擊OpenRefine.exe運行MAC下載DMG壓縮鏡像文件打開壓縮鏡像文件,把OpenRefine圖標拖到程序文件夾雙擊OpenRefine圖標打開LINUX下載gzipped壓縮包解壓到根目錄在命令行窗口輸入./refine打開我們需要了解,默認情況下,OpenRefine會分配1G內存給JAVA,處理小數(shù)據(jù)集是足夠用了,但是處理大數(shù)據(jù)集就會捉襟見肘。在要點7:充分利用內存中,我們會討論如何讓OpenRefine處理更大的數(shù)據(jù),不同的操作系統(tǒng)有不同的方法。要點2:創(chuàng)建一個新項目在本點中,你會學到如何導入數(shù)據(jù)到OpenRefine,可以是新建一個項目并導入數(shù)據(jù)集,也可以是打開一個項目或者是導入別人創(chuàng)建的項目。如果你按照要點1已經成功安裝了OpenRefine并打開,你會發(fā)現(xiàn)OpenRefine是在你的默認瀏覽器中打開的,但是你需要知道:程序是在本地運行的,除了在本書附錄中要使用額外功能(如正則表達式、openrefine內建函數(shù)語言GREL)外,你并不需要上因特網。在使用因特網時,請確保敏感數(shù)據(jù)不會被在線存儲或分享。OpenRefine使用本地電腦的3333端口,這也意味著,你可以鍵入http://localhost:3333或:3333打開軟件。以下是你第一次打開OpenRefine的界面:左側有三個標簽頁:●CreatePoject(創(chuàng)建項目):這個選項將載入一個數(shù)據(jù)集到OpenRefine中,這也是你第一次使用OpenRefine想要做的,如上圖所示,有多種可選形式讓你導入數(shù)據(jù)?!騎hisComputer(本機):選擇本機中存儲的一個文件◎WebAddresses(URLs)(網址):從在線資源導入數(shù)據(jù)◎Clipboard(剪切板):通過復制-粘帖方式輸入數(shù)據(jù)◎GoogleData(Google數(shù)據(jù)):從Googlesheet或FusionTable導入(這兩個類似于excel,不過是在線的,所以需要有因特網連接)●OpenProject(打開一個項目):這個選項幫助你定位先前創(chuàng)建的項目,下次你打開OpenRefine,會出現(xiàn)一個已存在項目的列表,你可以選擇一個繼續(xù)先前的工作?!馡mportProject(導入一個項目):使用這個選項,我們可以直接導入一個已有的OpenRefine存檔,其可以讓你打開別人創(chuàng)建的項目,并且包含項目創(chuàng)建后所有的數(shù)據(jù)操作記錄。OpenRefine支持的文件類型以下是部分OpenRefine支持的文件格式:●csv、tsv及其他*sv●xls/xlsx、cdf、ods●JSON●XML●行文本格式(比如log文件)如果你需要打開其他格式文件,你可以通過OpenRefine擴展功能打開。創(chuàng)建OpenRefine項目十分簡單,只需要三步:選擇文件、預覽數(shù)據(jù)內容、確認創(chuàng)建。讓我們通過點擊“創(chuàng)建項目”標簽頁、選擇數(shù)據(jù)集、點擊下一步來創(chuàng)建新項目。雖然我們鼓勵你在OpenRefine中使用你自己的數(shù)據(jù)集,不過使用本書中的例子可能學習起來更高效。為了能夠做到這點,案例中的數(shù)據(jù)均基于悉尼的PowerhouseMuseum組織,可以登錄賬戶并在中下載(chapter1.tsv)學習,后續(xù)章節(jié)數(shù)據(jù)也可以下載獲得,如何你是從其他地方購買本書,你也可以在/support注冊并通過email獲得本書數(shù)據(jù)。下一步你會看到一個數(shù)據(jù)集預覽界面,在右側底部,你可以看到如下數(shù)據(jù)解析選項界面:默認情況下,第一行數(shù)據(jù)會被解析為列名稱,我們使用的Powerhouse數(shù)據(jù)集中的數(shù)據(jù)也顯然符合首行為列名稱。OpenRefine同時也會猜測單元格類型,給其賦予整數(shù)、日期、網址等等,這在你后續(xù)整理排列數(shù)據(jù)的時候十分有用(比如如果你將單元格設為文本格式,那么10就會排在2前面)另一個選項是“引號在原數(shù)據(jù)中用來分隔列”選擇項,如果選中,則原數(shù)據(jù)中引號用來分隔列,否則就需要去掉勾選框以使得OpenRefine能夠正確讀取。在Powerhouse數(shù)據(jù)集中,引號是用來表明物體名稱和說明信息,所以此情況下,引號沒有分隔列的意思:所以這里我們需要去掉勾選。剩下的選項在某些情況下需要設置,試著勾選或者去掉勾選來看看如何影響數(shù)據(jù)。另外,請確保編碼正確,以使得顯示正確。當所有都設置好后,點擊創(chuàng)建項目來加載數(shù)據(jù)。要點3:探索數(shù)據(jù)本點中,你將通過查看數(shù)據(jù)界面的所有區(qū)域:總行數(shù)、不同的顯示參數(shù)、列名稱及菜單、實際單元格數(shù)據(jù)來探索數(shù)據(jù)。一旦你的數(shù)據(jù)被加載,你將獲得類似如下的界面內容:上圖中標明1~4的四個區(qū)域,我們按照順序介紹:總行數(shù):如果你沒有忘記去掉“引號有意義”選項(參照要點2-創(chuàng)建一個新項目),那么你會看到Powerhouse文件包含75814行數(shù)據(jù)。當數(shù)據(jù)按照某個參數(shù)進行過篩選,這里的顯示會變成類似于找到123匹配行(總共75814行)。顯示選項:試著點擊下,將行變成記錄來查看區(qū)別,事實上變化并不大,只不過該區(qū)域顯示為75814條記錄而已。行數(shù)量一般情況下等于記錄數(shù)量,但在后續(xù)情況中還是不一樣的。該區(qū)域可以讓你選擇按5、10、25、50每頁顯示,并且你也可以在這里跳轉頁。列名稱及菜單:你會發(fā)現(xiàn)數(shù)據(jù)加載后的第一行被解析為列名稱,在Powerhouse數(shù)據(jù)集中,列包含RecordID,ObjectTitle,RegistrationNumber等等(如果你在創(chuàng)建時去掉了“將第一行解析為列名稱”的勾選,那么列名稱區(qū)域會顯示為Column1、Column2等等)單元格內容:此處顯示實際單元格數(shù)據(jù)在開始剖析清理數(shù)據(jù)前,十分重要的一點是確保OpenRefine較好的載入顯示了數(shù)據(jù):查看列名稱被解析正確(數(shù)據(jù)顯示較寬時請使用水平滑動條)、單元格類型是否正確等等。將行顯示項改為每頁顯示50條以查看數(shù)據(jù)不明顯矛盾(理想情況下,你應該在創(chuàng)建項目前的預覽界面時處理這些工作)。當你已經熟悉了操作界面,你就可以繼續(xù)下一步了。要點4:操縱列本點中,你將學習列在OpenRefine如何隱藏和展開、按需要轉換、以及重命名和刪除。列是OpenRefine中的基本元素:其是具有同一屬性的成千上萬的值的集合,可以按照很多方法查看處理。列隱藏和展開默認情況下,所有的列在OpenRefine中都是展開的,大都數(shù)情況下顯得數(shù)據(jù)太冗長復雜了。如果你想暫時的隱藏一列或幾列以方便觀察操作,那么點擊列下拉菜單,選擇View,有四個可選項:?Collapsethiscolumn隱藏這一列?Collapseallothercolumns隱藏除該列外的所有列?Collapsecolumnstoleft隱藏該列左邊的所有列?Collapsecolumnstoright隱藏該列右邊的所有列下圖就是對Powerhouse數(shù)據(jù)集中Categories列進行View|Collapseallothercolumns處理后的結果。要重新展開列,只需要在列上點擊一下。要展開所有以恢復到初始狀態(tài),參閱下點中的“移動列”移動列有時候改變原數(shù)據(jù)中列的順序十分重要。比如,為了將兩列放在一起比較。為了做到這點,選擇需要處理的一列然后在列菜單中選擇Editcolumn。子菜單中會出現(xiàn)如下四種選項:?Movecolumntobeginning移動該列到開頭?Movecolumntoend移動該列到結尾?Movecolumntoleft向左移動該列?Movecolumntoright向右移動該列如果你對所有列操作,可以使用第一列名稱為ALL的列。這一列可以使你同時操作多列。View菜單可以讓你快速的隱藏和展開列。選擇Editcolumns|Re-order/removecolumns...可以通過通過拖動重新對列進行排列,還可以將將列拖動到右側來去除該列,如下圖所示:重命名或刪除列在Editcolumn菜單中,你還可以做到:?Renamethiscolumn重命名列?Removethiscolumn刪除列你可以使用重命名功能將Description列標題中結尾的“.”刪除。刪除一列比隱藏一列來的徹底,但是就像你將在要點5:使用項目操作歷史中學到,一切都是可以恢復原來的狀態(tài)的。要點5:使用項目操作歷史本點中,你將學習到如何返回到任一個項目歷史操作點,并且學習如何在項目重新打開后查看歷史操作信息。OpenRefine一個特別有用的功能是可以在項目創(chuàng)建后保存所有的操作步驟。這也就意味著你不需要害怕做數(shù)據(jù)變換嘗試:你可以隨意按照自己的想法變換數(shù)據(jù),因為一旦你發(fā)覺做錯了(即使是幾個月前做的),你也可以撤銷該操作以恢復數(shù)據(jù)。為了使用項目操作歷史功能,請單擊左側頂部Facet/Filter旁邊的Undo/Redo標簽頁,如下圖所示:為了恢復歷史數(shù)據(jù),單擊你想保留的最近一個步驟操作。比如,為了取消上圖第3步及以后的操作,可以單擊第2步使其高亮顯示,這樣第3~5步就會變灰。這意味著選中項后的操作都將取消。如果點擊第0步,那么所有操作都將取消。點擊第4步,那么第3和第4步的操作將被執(zhí)行,而第5步將撤銷。請注意,撤銷某幾步操作后再做出新的操作的話,原來的后續(xù)操作內容會丟失.比如,如果你從第5步回退到第2步,然后對Description列執(zhí)行左移操作,那么會顯示第3步操作3.Movecolumndescriptiontoposition1,而先前的灰色操作項(第3-5步)會丟失:因為我們不能在同時擁有兩種互相矛盾的操作歷史記錄。記得多嘗試下上面的步驟,省的以后帶來嚴重的困擾。記住,只有對數(shù)據(jù)有實際影響的操作才會出現(xiàn)在項目歷史操作表中。數(shù)據(jù)透視比如:交換行列視角、在一頁中改變顯示數(shù)目、隱藏或展開列并不改變原來數(shù)據(jù),所以也就不會出現(xiàn)在操作歷史表中。以上操作也就無法隨著項目信息傳遞:當你重新打開一個項目,無論原來是否隱藏,這時所有的列默認都是展開的,但是對于重命名列和刪除列這類操作會出現(xiàn)在操作歷史表中。在第二章,分析和修改數(shù)據(jù)中,我們會看到還有一些類型的操作會存在在操作歷史表中:比如單元格和列的變換、但是過濾和透視操作則不會。操作歷史也可以以JSON格式導出,可以點擊Undo/Redo頁中的Extract...,在打開界面中可以選擇需要導出的步驟(注意只有通用的操作才能夠導出,而對某個特定單元格的操作則無法導出)。上述操作能夠獲得JSON格式代碼從而可以讓你復制粘帖到他處。第1和第2步操作的代碼如下:[{"op":"core/column-move","description":"MovecolumnRegistrationNumbertoposition1","columnName":"RegistrationNumber","index":1},{"op":"core/column-rename","description":"RenamecolumnDescription.toDescription","oldColumnName":"Description.","newColumnName":"Description"}]在上面代碼中,op代表操作,description描述了具體操作是什么,余下的是操作用到的參數(shù)。我們可以點擊Undo/Redo頁中的Apply...按鈕,然后將先前保存的JSON格式的操作代碼粘帖上去,從而可以在不同的項目之間傳遞操作。最后,如果你已經有成百上千個操作記錄,你可以在Filter輸入框中輸入字符來查找某個操作。比如輸入remove或者rem就能夠定位到第3步和第5步。要點6:導出項目本點中,我們將學習如何將修改后的數(shù)據(jù)用到其他項目中,包括將導出的格式定制為模板。雖然你可能已經移動、重命名或者刪除了列,但其實原始數(shù)據(jù)并沒有被修改(也就是要點1:安裝OpenRefine中的文件chapter1.tsv并沒有被修改)。事實上,不像有些電子表格軟件直接將改動寫進文件,OpenRefine只是對數(shù)據(jù)文件的一份拷貝進行操作。因為存在這個保險措施,所以你在需要將數(shù)據(jù)導出分享或者嵌入其他應用程序時,你只需要在界面右上角點擊Export按鈕進行操作:大部分彈出的選項能夠讓你將數(shù)據(jù)導出為常用格式,比如csv、tsv、excel和opendocument格式、還有不常用的RDF格式。讓我們往下看:?Exportproject:這個選項能讓你導出OpenRefine格式的壓縮包,你可以用來和其他人共享或者僅僅用來備份。?HTMLtable:這個選項可以讓你方便的將文件發(fā)布到互聯(lián)網。?Tripleloader和MQLWrite:這個選項有一些擴展功能,能夠讓你將數(shù)據(jù)轉換成支持Freeebase規(guī)則的樣式(參照附錄:正則表達式和GREL)?Customtabularexporterandtemplating:可能這是最吸引你的部分。OpenRefine可以讓你對你的數(shù)據(jù)導出有更精細的控制,比如對列進行選擇和排序、忽略空白行、正確選擇日期格式以得到更有效的數(shù)據(jù)(參見附錄:正則表達式和GREL)。如下圖所示:?Templating...為了獲得更多的控制,你可以使用你自己的代碼來限定格式,其會作用到所有的單元格。如代碼cells["RecordID"].value表示RecordID列的值,下面的代碼表示將列值轉換成JSON格式:{"RecordID":{{jsonize(cells["RecordID"].value)}},"ObjectTitle":{{jsonize(cells["ObjectTitle"].value)}},"RegistrationNumber":{{jsonize(cells["RegistrationNumber"].value)}},"Description.":{{jsonize(cells["Description."].value)}},"Marks":{{jsonize(cells["Marks"].value)}},"ProductionDate":{{jsonize(cells["ProductionDate"].value)}},}要點7:獲取更多的運行內存最后一點,我們將學習如何如何分配更多的運行內存以操作更大的數(shù)據(jù)集。對于大數(shù)據(jù)集,你會發(fā)覺OpenRefine會運行緩慢或者提示內存不夠。這表明你需要分配更多的內存給OpenRefine。和我們上面學習的內容相比,這個內容稍顯復雜,因為這需要牽扯到一點底層修改。但是不要擔心:我們會指導你如何去做。具體的操作步驟根據(jù)不同的操作系統(tǒng)有所不同。注意:你可以分配給OpenRefine多大內存取決于你的電腦和JAVA版本是32位還是64位。如果不清楚究竟需要分配多少才合適,就試著慢慢的增加運行內存數(shù)量來看看效果(如果每次增加1G)。WindowsWindows平臺,你可以在OpenRefine的文件夾中找到openrefine.l4j.ini文件,找到以-Xmx(對于JAVA來說表示最大內存數(shù))開始的那行,默認情況下分配內存為1024M。稍稍改大點,比如2048M。保存后下次你打開OpenRefine就能夠生效。Mac對于Mac平臺就有點復雜,因為Mac電腦的操作系統(tǒng)將配置文件隱藏了。首先關閉OpenRefine,按住control鍵然后點擊OpenRefine圖標,在彈出菜單中選擇Showpackagecontents,然后在Contents文件夾中找到info.plist文件并打開,然后在其中找到VMOptions項(這就是JAVA虛擬機設置項)。找到以-Xmx開頭的設置項,將默認的1024M按你的需要修改,比如-Xmx2048M。Linux你可能會覺得奇怪,修改運行內存在Linux中十分簡單,平時你打開OpenRefine是使用命令./refine,試著使用./refine–m2048M。這里的2048M就是想分配的內存。如果你想永久的修改運行內存,你可以在根目錄中找到隱藏文件.bashrc,然后在其中添加一個alias別名即可,代碼如下:aliasrefine='cdpath_to_refine;./refine-m2048M'這里的path_to_refine是OpenRefine的安裝目錄,下次你依舊只需要使用./refine命令打開OpenRefine,其自動就會分配2048M內存。小結通過本章內容的學習,你已經了解了OpenRefine,一種新的具有數(shù)據(jù)畫像、清洗、轉換等等功能的工具,現(xiàn)在你已經在你的電腦上安裝上了OpenRefine,并且已經了解如何在創(chuàng)建新項目中導入數(shù)據(jù)和如何在完成操作后導出數(shù)據(jù)。行、列的運行機制你也已經了解,并且已知道如何使用項目歷史記錄。另外你也對內存分配進行了操作,這能夠讓你操控更大的數(shù)據(jù)集。雖然在開始操作你的數(shù)據(jù)集前好好的對你的數(shù)據(jù)進行全局性的觀察十分重要,但你可能已經迫不及待了。如果是這樣,那么你已經對第二章:分析和修改數(shù)據(jù)做好了準備,這章中,你將學習到如何分析和修改你的數(shù)據(jù)所需要的基本操作的方方面面。第二章:分析和修改數(shù)據(jù)本章中,我們將更加深入的學習OpenRefine的數(shù)據(jù)分析和修改功能,主要的內容包括下面六點:*點1-數(shù)據(jù)排序*點2-數(shù)據(jù)透視*點3-重復檢測*點4-應用一個文本過濾*點5-使用簡單單元格轉換*點6-移除匹配行和第一章:初識OpenRefine一樣,本章可以讓讀者按照自己的需要或愛好選擇閱讀順序,并不需要按照順序閱讀。按照順序閱讀也可以,但并不是必須的。各個要點內容長短不一,有些很短,但有些卻不止一兩頁,比如要點2-數(shù)據(jù)透視,包括了數(shù)據(jù)透視的方方面面,這個要點包括了很多頁內容并且有很多子內容。本章學習中,我們建議你使用ImportProject導入項目chapter2.openrefine.tar.gz。當然你也可以使用第一章中使用的示例文件chapter1.tsv點1-數(shù)據(jù)排序本點中,我們將學習如何使用排序功能來作為觀察數(shù)據(jù)的手段,以及在進一步處理數(shù)據(jù)前如何對行進行排序。因為排過序的值更加容易理解和分析,某些時候你需要使用OpenRefine的排序功能,你可能是想用來觀察下數(shù)據(jù)或者就是想對數(shù)據(jù)進行排序.我們以RecordID列為例進行排序,選擇列菜單中的Sort...,將彈出如下窗口:單元格值可以按照文本(區(qū)別大小寫或者不區(qū)別)、數(shù)字、日期、布爾值排序,對每個類別有兩種不同的排序方式:?Text:文本:從a到z排序或者從z到a排序?Numbers數(shù)字:升序或者降序?Dates:日期升序或者日期降序?Booleans:false值先于true值或true值先于false值還有我們可以對錯誤值和空值指定排序順序。比如錯誤值可以排在最前面(這樣容易發(fā)現(xiàn)問題),空值排在最后(因為空值一般沒有意義),而有效值居中。對RecordID列通過按數(shù)字升序排列為例,我們就會獲得一列以7、9、14等等標識的列,而打開時是以267220、346260、267098標識順序的,下圖對排序前后的情況做了比對:如果按照Text:文本排序的話,會得到以100、1001、10019開始的一列。同時應該關注的一點是:排序并不會被記錄在項目操作歷史中。你可以在屏幕左側頂部的Undo/Redo頁中確認下。那是因為排序并不會改變數(shù)據(jù),其僅僅是改變了顯示方式,比如行列互換、隱藏不想顯示的列(就像excel的排序過濾功能)。所以每次對某列進行排序,你就會面對三種抉擇:取消排序回到原來狀態(tài)、暫時保持、永久改變。你無法能在列菜單中做到上面三種要求,但是你可以在屏幕頂部的快捷菜單Sort來做到:對行進行重新排序Sort菜單可以讓你移除排序操作或者永久對行進行排序。另外,該功能還能提醒你究竟對哪些列進行了排序,還能夠對多列進行組合排列操作(見上圖)。舉個例子,你可以先對RegistrationNumber排序,然后再對ObjectTitle列排序,過會你還可以去掉按RegistrationNumber排序的操作(通過菜單Sort|ByRegistrationNumber|Removesort),最后再將排序永久保存。每個排序的子菜單還能夠通過點擊一次來改變排序順序(比如升序變降序)。記得如果你想將排序后的結果再進行后續(xù)操作,一定要將排序結果永久保存,比如對于空白單元格或者填充單元格,為了避免前后不一致的錯誤,在點3-重復檢測中,我們將學習如何利用排序的預處理手段來移除重復值。點2-數(shù)據(jù)透視OpenRefine最常用的功能可能就是數(shù)據(jù)透視了。數(shù)據(jù)透視并不改變數(shù)據(jù),但是可以讓你獲得數(shù)據(jù)集的有用信息。你可以把數(shù)據(jù)透視看作是多方面查看數(shù)據(jù)的方法,就像從不同的角度觀察寶石一樣。數(shù)據(jù)透視可以獲得數(shù)據(jù)中一個變化后的子集,比如只顯示某個參數(shù)要求下的行。本點中,我們將學習如何按照你的要求或者數(shù)據(jù)具體的值來透視數(shù)據(jù):對字符串進行文本透視、對數(shù)字和日期進行數(shù)字透視、幾個預定義的透視功能、最后還有標星和標旗功能。OpenRefine的強大之處也在于這些透視功能的組合使用。文本透視如果你的數(shù)據(jù)集中包含城市或者國家名稱的列,而你想大致了解下這個字段都有些什么值和這些值的統(tǒng)計次數(shù)有多少,那么就可以用文本透視。當然,只有該列中的類別總數(shù)不是特別大的時候文本透視才有用,因為文本透視并不是為了列出所有的信息,全部列出并沒有多大意義,同時透視結果也不會出現(xiàn)相同的兩個類別(除非又重復項,我們將在下一點中說明)對于Powerhouse數(shù)據(jù)集中Categories列最適合做文本透視,其是從一個嚴格設計的詞匯中選擇(稱為powerhousemuseumobjectnamethesaurus),簡單來講,Categories列包含了幾千個常用事物的描述信息。讓我們試試看,點擊Categories列菜單,選擇Facet|Textfacet,結果會出現(xiàn)在屏幕左側的Facet/Filter頁中??上У氖?,OpenRefine提醒我們總共有14,805個分類,已經超過了我們的電腦顯示內存。事實上,透視不能超過2000個分類,當然你可以通過點擊Setchoicecountlimit設置成15000,但是這很可能將使得軟件運行緩慢,特別是你哈沒有改變JAVA內存分配數(shù)量(參見1初識OpenRefine中的要點7:獲取更多的運行內存)如果你選擇提高彈出窗口中限制數(shù)的最小值,OpenRefine其實是改變了JAVA變量中ui.browsing.listFacet.limit的值,但是大都數(shù)情況下你并不需要對這么復雜的值過多關注,其實提示窗口的出現(xiàn)也就意味著分類數(shù)太多了,需要減少。其實OpenRefine在超出時完全有辦法提高限制數(shù),但實際情況下往往我們想減少限制數(shù)的,太多的分類對于我們毫無意義。如果想這么做,可以訪問系統(tǒng)參數(shù)::3333/preferences,編輯ui.browsing.listFacet.limit,然后調低到想要的值。如果想恢復默認值2000,直接刪掉這個值即可。點擊下面的Facetbychoicecounts鏈接,將打開二級透視界面。新的透視也是對Categories的透視,這里可以讓你對透視顯示范圍進行限定。當?shù)谝淮未蜷_的時候,OpenRefine會顯示所有分類,無論分類數(shù)量只有1次還是有幾千次。因為有太多的分類會被顯示,所以一般開始的時候只顯示數(shù)量較多的分類就比較有意義。拖動左邊的滑塊從最小值0到1000,文本透視情況將自動更新,現(xiàn)在將只顯示大于1000數(shù)量的Categories分類。這里只有7個,這就比先前大大減少了。為了觀察方便,可以選擇對count(計數(shù)項)排序(降序)來替代按字母排序。下圖顯示你得到的透視圖:如果你想導出最多的7個分類名稱,可以點擊上圖中的7choices鏈接,會得到一個TSV格式的內容,你可以復制粘帖到你喜歡的文本編輯器或者電子表格軟件中。然而你會覺得奇怪,比如Photographicprints|Photographs并不是一個分類名稱,其實包含兩個分類,被“|”分開了。這就是為什么我們第一次透視會出現(xiàn)這么多的分類。Glassplatenegatives|Gelatindryplatenegatives|Photographs,Glassplatenegatives|Photographs和Glassplatenegatives被區(qū)分為不同的分類,但是其實他們都屬于一個分類。這就是多義單元格的困擾,我們現(xiàn)在暫不去管這個問題,我們將在第三章:高級數(shù)據(jù)操作學習,第三章我們還將學習一個有趣的按鈕Cluster,因為現(xiàn)在我們剛開始學習,所以現(xiàn)在我們暫且忽略。因為對于Categories列的透視看上去不是特別整齊,讓我們在對數(shù)值列進行透視前來看看另一個文本透視操作。Height雖然并不是特別明顯,但是我們也可以看到這個列并不僅僅包括數(shù)值,比如還有一些帶單位的數(shù)字990mm,這意味著我們不能使用數(shù)值透視(最起碼不能直接用),但是我們可以試試文本透視,希望能夠看出端倪。幸運的是,我們在對Hight列進行透視操作(Facet|Textfacet)時,我們發(fā)現(xiàn)只有1313個分類,低于2000限制數(shù),用count代替name排序,我們發(fā)現(xiàn)164mm的數(shù)量有1368,而第二位的215mm只有400,如下圖所示:在上圖列表底部,我們可以看到Hight列中空值有45501,也就是說這些值缺失。但是我們將不在這里處理,因為OpenRefine提供了一個處理空值的透視功能,我們將在下面說明定制透視時說明。數(shù)字透視找到一個列可以用來做數(shù)字透視比文本透視簡單,因為數(shù)據(jù)中往往包含許多數(shù)字,如果你在項目導入時勾選Parsecelltextintonumbers,dates...,那么數(shù)字也可以通過綠色來快速識別。本例中RecordID就是個很好的例子,通過對其透視可以看出ID的分布,并且可以看出是否每條記錄都有一個ID。點擊RecordID列菜單,選擇Facet|Numericfacet,然后看看左側Facet/Filter頁出現(xiàn)了什么。文本透視會返回一個不同分類數(shù)量的列表,而數(shù)字透視則是某個數(shù)值范圍的分布,就像我們通過頻數(shù)來透視一樣。我們可以看到RecordID的值域從0到510,000,在270,000至280,000之間有個小缺口,在410,000至500,000有個大缺口。通過滑動滑塊,我們可以看出有533行的值大于500,000。在圖的下方,我們可以看到值類型被分成四種:Numeric,Non-numeric,Blank和Errors。這是因為一些錯誤所導致的。在我們操作前可以看到Errors(錯誤值)為0,blanks(空值)數(shù)也是0,說明每一行都被分配了一個ID,有三行的值為Non-numeric(非數(shù)字),不能用作ID。讓我們只勾選Non-numeric來看看情況?,F(xiàn)在右側我們能夠看到這三行的內容了。這三行不光ID缺失,其他很多列也是空白,除了persistentlink和licenseinformation列,但是這些信息也是自動產生的。這幾行并沒有什么實際意義,所以我們可以刪除(本章最后內容會介紹為什么會產生)但是這里有個問題,如果這三行ID確實為空,那么為什么會被分類到Non-numeric,而不是分類到Blank?其實是空格導致的,我們可以通過編輯這幾個單元格來驗證。我們可以將鼠標移到單元格上,會出現(xiàn)edit標記,點擊進入你就會看到包含一個單獨的空格,如下圖所示:為了改正這個錯誤,可以單擊Backspace或Delete鍵刪除這個空格,然后點擊ApplytoAllIdenticalCells按鈕或者按Ctrl_Enter。OpenRefne會彈出一個黃框提示你有多個RecordID列值被修改。最后,左側的透視圖會自動刷新,有問題的三行也會歸到Black分類。在我們學習定制透視技術前,讓我們快速學習下和數(shù)字透視相關的兩種透視方法:時間軸透視和散點圖透視。時間軸透視要求數(shù)據(jù)為日期格式,所以類似17/10/1890的文本字符串需要改為日期格式。你可以用ProductionDate列練手,但是請注意,真實的時間很少是確定的,比如僅僅包含年份的1984,或者一個時間范圍如2006到2007.我們可以對某列做如下操作:Editcells|Commontransforms|Todate將79個單元格轉換成日期格式。比如17/10/1890會被轉成1890-10-17T00:00:00Z,其中這些0標識一天中的小時、分鐘、秒。很顯然,79個單元格跟總數(shù)75,814比起來太少了,但是時間軸透視結果還是能夠讓我們了解到這些物品的生產日期起碼跨度為1880年2月26日至1952年1月31日。雖然大部分值要么不是日期格式(19,820),要么是空白(55,915)。下圖顯示了將ProductionDate列轉換成日期后的時間軸透視圖:最后,散點圖透視能夠讓我們對值的圖形分布作了解。我們不會對這點細節(jié)展開,你試試看就知道了。定制透視我們現(xiàn)在已經學習了兩種主要的透視方法-文本透視和數(shù)字透視。但其實還有很多透視方法存在,你甚至可以按照你的想法自如的透視數(shù)據(jù)。定制透視就可以讓你做到這點,無論是文本類型(比如透視字符串的首字母)或者數(shù)字類型(比如透視數(shù)字的平方根)。當然,你需要對GeneralRefineExpressionlanguage(openrefine內建函數(shù)語言GREL)有基本的了解,我們將在附件:正則表達式和GREL中介紹。當然,openrefine也提供一些預定義透視選項,其可以給大多數(shù)用戶提供有用的透視功能。下面,我們將查看這些透視項,著重對其中重要的東西作下介紹。讓我們先看一下Customizedfacets子菜單的內容,我們可以在列菜單Facets菜單中找到。Wordfacet(單詞透視)列出了字段中所有不同的單詞,一個單詞被定義為兩個空格之間的字符。這在你想對數(shù)據(jù)小子集進行分析時十分有用,因為大數(shù)據(jù)的話統(tǒng)計頻數(shù)會很快增加到很大,比如對列Description進行單詞透視,會顯示212,751個不同的單詞,這很容易導致軟件奔潰。舉個例子,單詞透視可以用來對categories進行透視,因為普通的文本透視只會告訴你有多少個體表現(xiàn)為數(shù)量極小的長尾,而單詞透視則會將內容分成兩個單詞,這能夠讓你分析不同的長尾,同時也能夠讓你將長尾間聯(lián)系起來考慮(就好像既能夠分析整套衣服也能夠分析配飾)Duplicatesfacet(重復項透視):可以讓你檢測重復項,我們將在下一點來介紹Numericlogfacet(數(shù)字對數(shù)透視):對數(shù)字的對數(shù)值進行透視,這在數(shù)字符合冪分布時特別有用。1-boundednumericlogfacet(1階數(shù)字對數(shù)透視)也一樣,只不過其不能應用于小于1的數(shù)字。Textlengthfacet(文本長度透視)針對的是字符串中的字符個數(shù),以ObjectTitle列為例,選擇該列菜單Facet|Customizedfacets|Textlengthfacet,我們可以看到該列中的內容字符個數(shù)從0到260,你可以看到有92個標題內容中內容小于10個字符數(shù)(無內容的占大多數(shù),這毫無意義),你還可以看到2007個標題內容超過250個字符數(shù)(一般情況下一定需要精簡了)對descriptions列進行文本長度透視也十分有趣,但是我們看到這個分布實在太廣了點(從0到4100,雖然85%數(shù)量的內容小于500個字符數(shù)),這導致我們很難了解其規(guī)律。這時候我們可以使用文本長度對數(shù)透視,如下所示:Unicodechar-codefacet(Unicode字符集透視)并不計算字符串的長度,而是列出了所有字符串中使用的字符UNICODE碼數(shù)。在ObjectTitle列嘗試下;大部分英語字符UNICODE碼數(shù)小于128,一些源于歐洲語言的古文UNICODE碼數(shù)會達到256,阿拉伯文或中文甚至更大。如果你發(fā)覺字符UNICODE碼數(shù)特別大,可能是OpenRefine沒有正確的識別出編碼。碰到這種情況,可以新建一個項目然后選擇手工指定正確的編碼方式。最后,我們還可以按照錯誤來透視(如果有的話),或者按照空值來透視。按照空值來透視在了解字段填充分布時十分有用,一般常用來與另一個透視結果作比較。我們看到Marks列開頭幾行就為空,所以我們通過點擊Facet|Customizedfacets|Facetbyblank來了解該列,透視結果提示我們18,986個為FALSE(也就是非空),86,846個位TRUE(也就是空值)。換句話說,只有四分之一的部分有內容。還要明顯的列是Weight(在屏幕右邊,使用水平滑動條滑動可見),只有179個有內容,而99.998%的內容為空。對Objecttitles列進行空值透視發(fā)現(xiàn),有118行是無效行,它們都有一個RECORDID跟著一個鏈接和無效的信息,但是其他列卻都是空值,所以它們并不代表一個有效記錄。對標星和標旗行進行透視在1初識OPENREFINE中,我們簡要的提到了最左邊ALL列中的標星和標旗功能。現(xiàn)在該介紹如何利用這些功能來透視數(shù)據(jù)了。星星一般用來標識良好的行或者感興趣的行,我們可以在今后隨時找到它們;相反的,旗幟可以用來表示不好的行或者有問題的行,這些行我們應該在后續(xù)處理中注意。當然這只是建議,你當然可以賦予星星和旗幟不同的意義。要標星或者標旗,只需要在對應的符號上點擊即可。大都數(shù)情況下,你可能想同時標注多行。在標注前,你需要將需要標注的行分離顯示出來,一般也是通過一個透視過程實現(xiàn)。比如,你可以通過對RegistrationNumber列執(zhí)行Facet|ustomizedfacets|Facetbyblank來檢測出空值,然后點擊true來顯示出118行空行。然后點擊ALL列菜單中Editrows|Flagrows。標星功能也同樣,并且你也可以在菜單中去掉多行的星星或旗幟?,F(xiàn)在假設你想顯示要么diameter字段有內容或者weight字段有內容的行。如果你對這兩列都做了空值透視,然后分兩次點擊結果是false的內容,你將得到29行匹配,但其實這29行指的是diameter字段有內容而且weight字段也有內容,這和我們的目的不符,我了按要求取到數(shù)據(jù),解決方法是分兩步:先對diameter列進行空值透視,得到2106行為false(也就是diameter內容存在),然后使用All|Editrows|Starrows標星,清除透視并且對weight列進行空值透視,得到179行(你會注意到只有150行被標星,因為29行已經被標星,其weight和diameter都有內容而已)。再次清除透視,然后選擇All|Facet|Facetbystar獲得數(shù)據(jù),當然使用旗幟功能也可以。喔,我們總算介紹完了本小點,你可能覺得這個小點怎么這么長,但是確實透視是OpenRefine的基礎,所以花點時間還是值得的。點3-重復檢測在本點中,我們將學習什么是重復數(shù)據(jù),如何檢出,為什么需要處理重復值。上一小點定制透視中唯一沒有介紹的內容就是重復項透視。重復值是數(shù)據(jù)集中出現(xiàn)兩次或更多次的惱人數(shù)據(jù)。重復數(shù)據(jù)不僅浪費存儲空間,并且會導致干擾。所以我們希望能夠刪除重復值。重復項透視就是一種能夠檢測重復的簡單辦法。但是其也有限制性,比如其只能對字符串進行重復檢測,最起碼不能直接對非字符串進行操作(如何能夠對整數(shù)也能作重復檢測,請參照附錄:正則表達式和GREL)。因為上面的原因,我們無法對RecordID列進行重復項透視,這里最好的選擇就是對registrationnumbers列(內部標識)進行重復項透視,當然其準確度不如RecordID,因為數(shù)據(jù)數(shù)據(jù)收集人員會賦予其額外的意義。不管怎樣,讓我們試著對RegistrationNumber列進行重復項透視:RegistrationNumber|Facet|Customizedfacets|Duplicatesfacet;281行被標注為重復項,點擊左側中的true顯示這批數(shù)據(jù)?,F(xiàn)在鼠標滾動下查看這些重復項。我們發(fā)現(xiàn)一個問題:重復項中包含空白行,這些實際上確實完全一樣,但是和有效行的重復是完全不同的。為了剔除這118行空白行,我們需要再對RegistrationNumber列作一次空值透視:RegistrationNumber|Facet|Customizedfacets|Facetbyblank.點擊false保留163行真正的重復數(shù)據(jù),我們發(fā)現(xiàn)結果自動刷新了。最后,再增加一個透視,這次是一個簡單文本透視,列出數(shù)據(jù)集中有多個相同registrationnumbers的項,按照計數(shù)項排序,我們看到79項中,77項確實是嚴格的重復項(重復2次),(2008/37/1)出現(xiàn)了3次,(86/1147-3)甚至出現(xiàn)了6次,如下圖所示:現(xiàn)在讓我們回到RECORDID列的討論來,因為重復項透視不能用于整數(shù),所以我們將采取一個迂回的辦法來檢測該列。首先,我們對ID列進行排序:RecordID|Sort...,其中參數(shù)項選擇numbers和smallestfirst。我們在1初始openrefine中介紹過,排序只是一種視覺的改變,所以為了讓數(shù)據(jù)永久改成排序狀態(tài),我們需要選擇Sort菜單(就在Show:5102550rows右邊),點擊Reorderrowspermanently.如果你忘記做了這一步,后續(xù)的操作其實會忽略排序這個動作,從而導致不可知的結果?,F(xiàn)在我們已經得到了排序后的數(shù)據(jù),ID重復項一定是在一起的。所以我們選擇進行如下操作:RecordID|Editcells|Blankdown,重復項中的ID會被空白替代(所有重復項中第一個保留,后續(xù)的空白填充)。然后進行一次空值透視:RecordID|Facet|Customizedfacets|Facetbyblank,我們將得到86個冗余行(如果你刪除過空白行,也可能是84),其中二次重復項會出現(xiàn)1個,三次重復項會出現(xiàn)2個,六次重復項會出現(xiàn)5個。這86個重復項就是保留1項后剩余的需要刪除的冗余項。我們將在點6:刪除匹配行中介紹如何刪除它們點4-應用一個文本過濾本點中,我們將學習如何使用文本過濾來尋找符合某個條件的值。當你想尋找那些匹配某個特定字符串的行時,最簡單的方法是使用文本過濾功能。讓我們以一個簡單的例子開始。假如你想找出ObjectTitle列中所有和美國相關的所有標題。選擇ObjectTitle|Textflter,我們將在左側看到一個對話框,就在上節(jié)中透視對話框相同的位置?,F(xiàn)在輸入USA。OpenRefne提示匹配到1,866行,勾選casesensitive(區(qū)別大小寫),那么比如karakusa和Jerusalem之類的就會被排除,這樣我們降低到1,737行。另外,我們并不能確保這些匹配項里面是否都正確,比如大寫的字符JERUSALEM,為了解決這個問題,我們可以試著在USA前后加上空格,但是還是有可能丟失類似以[USA]和/USA開頭或結尾的內容。以“USA”(前后有空格)作為過濾項只會返回172個匹配,只占全部能取到量的1/10左右,大部分都沒有取到。另外,這樣簡單的文本過濾并沒有考慮到拼寫方式,比如遺漏了U.S.A.(201個匹配),USA(29個匹配)或U.S.A(22個匹配)。很快你就會發(fā)現(xiàn)處理這些問題會讓人煩不勝煩,而且你還需要每次都標星以最后將它們組合起來。這時候就需要用到正則表達式了,正則表達式十分強大,但是需要你對這些表達式中的奇怪符號有基本的認識,這樣才能發(fā)揮其功效。比如,表達式\bU.?S.?A\b(文本過濾時需要勾選regularexpression)將匹配上面所有需要包括的內容,并且把干擾項排除,最后將返回1,978項匹配。本小點不會教你如何使用正則表達式,可以參考附錄:正則表達式和GREL文本過濾的另一個應用是檢測分隔符的使用,在Categories列種,管道符”|”被用來分隔目錄,讓我們對Categories列應用一個文本過濾,過濾符為“|”,OpenRefine顯示匹配到了71105行,這說明大部分內容里面含有至少兩個目錄(因為單個目錄不需要管道符分隔)。現(xiàn)在再增加一個管道符:||,檢測到9個問題行,其包含雙管道符,而不是一個。在第三章:高級數(shù)據(jù)操作中,我們將介紹如何使用GREL來改正這個錯誤。另一個問題是單元格內容以管道符開始或者結尾,解決這個問題也需要借助于正則表達式。所以我們均將在附錄:正則表達式和GREL中探討。點5-使用簡單單元格轉換本點中,我們將學習如何利用OpenRefine內建的轉換功能來修改數(shù)據(jù)子集。我們已經學習了透視和過濾,已經基本能夠做到按照不同要求進行數(shù)據(jù)的顯示,只不過我們并沒有對數(shù)據(jù)進行過改變?,F(xiàn)在到了修改它們的時候了,我們將學習強大的Editcells菜單。在我們檢測數(shù)字重復值的時候我們已經用到過了Blankdown菜單。另外的轉換功能比如分割合并單元格、聚類、計算值相對來說較復雜,所以我們將在下一章學習。其他的轉換功能比較簡單,所以我們將先學習Commontransforms子菜單下的功能,如下圖所示:Trimmingwhitespace(刪除首尾空格),對數(shù)據(jù)進行刪除多余首尾空格操作是提升數(shù)據(jù)質量的很好的開始。這保證了不會因為首尾處的空格使得相同的值為誤認為不同。這些空格導致的值不同肉眼是很難發(fā)現(xiàn)的,進行這步可以讓你的數(shù)據(jù)更加整潔。當然該操作也可以減少不需要的字符從而壓縮數(shù)據(jù)集大小。雖然單獨一個空格影響不大,但是幾千個空格就有差別了,并且可能會導致大的錯誤。還記得上節(jié)中因為一個空格就導致空值被識別成了non-numeric非數(shù)字類型。唯一標識符也不應該有空格;讓我們對RegistrationNumber列作下檢查:RegistrationNumber|Editcells|Commontransforms|Trimleadingandtrailingwhitespace,我們發(fā)現(xiàn)有2,349個單元格被處理,這也就意味著這個操作是必要的。但是記住我們不能對RecordID列進行操作,因為刪除首尾空格的操作只能針對字符串,而不能對整數(shù)操作。如果你去試試,也會發(fā)現(xiàn)所有整數(shù)會被刪除。Consecutivewhitespace(連續(xù)的空格)的產生一般是因為輸入時太快導致。我們可能會預見到objecttitles或者descriptions這類有很多文本內容的列一定會有這個問題。但是奇怪的是,操作后并沒有發(fā)現(xiàn)。倒是對ProductionDate列進行Collapseconsecutivewhitespace(連續(xù)空格只保留一個)操作,發(fā)現(xiàn)有7671個值被處理,但其實這大部分只不過是將整數(shù)轉化成了字符串。對其他的列也試試看,這個操作很安全,而且證明總是對數(shù)據(jù)清洗有益的。如果你的數(shù)據(jù)是從互聯(lián)網應用中獲取來的,那么內容中很可能包含HTML代碼,在HTML代碼中,字符被解析成HTML實體。比如法語字符é會被編碼成é;或者é這取決于使用什么范例表示方法。因為瀏覽器在解析的時候經常會碰到編碼問題。如果解析不對的話會變得難以辨認(比如é就可能被解析成é)。所以,如果你碰到一些值是以&開始并且以;結束的話,試著使用菜單項功能:Editcells|Commontransforms|UnescapeHTMLentities,這樣內容就能夠被正確解析。下一個轉換功能是casetransformations(大小寫轉換),通過這個功能,我們能夠將文本字符串轉換成全部小寫、全部大寫或者首字母大寫。舉個例子,我們發(fā)現(xiàn)registrationnumbers列沒有小寫,但是對其進行操作:RegistrationNumber|Editcells|Commontransforms|Touppercase.卻發(fā)現(xiàn)有2,349個單元格值有變化,一般來說,這應該意味著有很多大小寫問題,但其實卻并沒有。這些值的變化主要是因為整數(shù)被轉換成了字符串(因為數(shù)字被認為沒有被大寫)。你可以試著對registrationnumbers列先做一次數(shù)字透視,然后進行大小寫轉換來看看這些數(shù)字的變化,程序提示你沒有數(shù)字,也就是說這次大小寫轉換將數(shù)字轉成了字符串。同樣的,我們也可以用Tolowercase來驗證persistentlinkURL列種沒有大寫字母,或者用Totitlecase來規(guī)范categories列的拼寫、統(tǒng)一DidacticDisplays和Didacticdisplays的書寫。Totitlecase只會將空格后的字符串首字母大寫,所以Spacecraft|Models|SpaceTechnology會變成Spacecraft|models|spaceTechnology,有些時候我們并不想這么做,但是別擔心,因為第三章:高級數(shù)據(jù)操作中我們將介紹一個更好的處理這種情況的方法:clustering聚類。在點2:數(shù)據(jù)透視中,我們碰到過一種數(shù)據(jù)轉換方式。事實上,你可能記得,就是將應該是時間類型
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度酒店消防系統(tǒng)設備更新與優(yōu)化合同3篇
- 2025年度私人承包數(shù)據(jù)中心節(jié)能減排建筑合同范本3篇
- 2025年教育培訓機構銷售居間代理協(xié)議3篇
- 2025年度個人股份質押合同標準范本4篇
- 2025年度個人二手車轉讓協(xié)議書(全新升級版)3篇
- 美容院消防安全責任及管理協(xié)議書(二零二五年度)4篇
- 濕地湖施工方案
- 畢業(yè)答辯指導模板
- 2025年度個人裝修借款合同答辯狀編制指南4篇
- 2024年中級經濟師考試題庫含答案(能力提升)
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合試卷(含答案)
- 收養(yǎng)能力評分表
- 山東省桓臺第一中學2024-2025學年高一上學期期中考試物理試卷(拓展部)(無答案)
- 中華人民共和國保守國家秘密法實施條例培訓課件
- 管道坡口技術培訓
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎知識 CCAA年度確認 試題與答案
- 皮膚儲存新技術及臨床應用
- 外研版七年級英語上冊《閱讀理解》專項練習題(含答案)
- 2024年遼寧石化職業(yè)技術學院單招職業(yè)適應性測試題庫必考題
- 上海市復旦大學附中2024屆高考沖刺模擬數(shù)學試題含解析
評論
0/150
提交評論