資料分析指北:KNIME 模組
> 之前休假了, 嗯, 我們繼續
歡迎關注公眾號 資料分析指北
資料分析指北 - KNIME 模組(Data Access型別模組之一IO模組集合)
Photo by Samuel Zeller on Unsplash
微信公眾號:資料分析指北
-
Data Access型別模組
-
IO模組集合簡述
-
Read部分
-
Other部分
-
File Handling部分
上一節我們講了 KNIME 模組的一些基礎知識,包括模組的圖示、顏色類別、埠類別、workflow 、怎樣提高 workflow 的可讀性以及 metanode 和 flow variable 的概念。這些基礎知識都是非常重要的部分,其中絕大部分內容通過長時間的使用 KNIME 都可以掌握,只有“怎樣提高 workflow 的可讀性”和“ metanode 的使用”需要刻意練習才能掌握,而這兩部分內容,也是 KNIME 水平從中階到高階的必經之路。
KNIME 的 Node Repository
在 KNIME 的 Node Repository 中有很多模組,如果裝了一些擴充套件的話,模組會更加豐富。我們在這裡將這些節點型別統一組織成了Data Access型別、Transformation型別、Analysis & Data Mining型別、Visualization型別以及Deployment型別,這樣在邏輯上將會更加清晰,也符合一般的資料分析的大致步驟。我們先看Data Access型別模組。
Data Access型別模組
Data Access型別模組主要有檔案相關模組、資料庫相關模組、以及網頁相關模組。其中檔案相關模組中的CSV模組以及資料庫,我們已經在 基礎(基礎資料操作之二,讀取資料來源) 中有簡要提及。初次之外,KNIME 的 Node Repository中的IO模組集合、Database模組集合、Tools & Services模組集合,都可以部分歸類到Data Access型別中來。
IO模組集合簡述
Node Repository中的IO模組集合
IO模組在整體上分為Read、Write、Other、File Handling以及Cache幾個部分,其中的Write部分,我們不認為它算是Data Access型別模組,而認為它是Deployment型別模組,略去不講。
Read部分
對於Read部分,主要涉及到各種實體檔案的讀取。
IO模組集合中的Read部分
[重點::sparkles::sparkles::sparkles:;難度::sparkles:]對於Excel檔案來說,如果你已經確定要讀取Excel檔案的哪個表,那麼我們就可以直接使用Excel Reader(XLS),直接在節點中配置讀取,其配置選擇其實和CSV reader的配置差不太多,除了一些標準的配置之外–比如Column Name都從哪裡取、Row Id要不要自動生成,其他選項都集中在配置對於異常情況的處理;如果你需要將Excel中所有的表的內容都讀取出來,那麼你可以嘗試先使用Read Excel Sheet Names (XLS)節點,讀出這些表的名字,然後再設定一個迴圈,使用Excel Reader(XLS)將每個表中的內容讀取出來,可參考下圖結構。
讀取Excel檔案中的所有內容
[重點::sparkles::sparkles::sparkles:;難度::sparkles:]CSV Reader之前有提及,在這裡略去不講。
File Reader其實是一個通用版的檔案讀取工具,甚至可以用它來讀取CSV檔案,只不過配置項要更多一些。
ARFF reader是機器學習中的一種特定檔案格式,這個格式主要是隨著 Weka 發展出來的,簡要來說,就是它除了記錄具體的資料之外,還詳細記錄了資料的格式、來源等一系列資訊,對於經典的Iris資料來說,ARFF就是這樣記錄的,一望即知:
% 1. Title: Iris Plants Database % % 2. Sources: %(a) Creator: R.A. Fisher %(b) Donor: Michael Marshall (MARSHALL%[email protected]) %(c) Date: July, 1988 % @RELATION iris @ATTRIBUTE sepallengthNUMERIC @ATTRIBUTE sepalwidthNUMERIC @ATTRIBUTE petallengthNUMERIC @ATTRIBUTE petalwidthNUMERIC @ATTRIBUTE class{Iris-setosa,Iris-versicolor,Iris-virginica} % The Data of the ARFF file looks like the following: @DATA 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setosa 4.6,3.1,1.5,0.2,Iris-setosa ..............
Line Reader是用來將檔案一行一行讀出來的模組,特別像Python中的 readlines()
函式。
[重點::sparkles:;難度::sparkles:]Table Reader這個模組是用來讀取KNIME自定義的Table格式的(檔名以 .table為字尾
),是讀取KNIME的Table Writer模組輸出的檔案的。這個檔案和ARFF檔案的目的相同,就是在這個檔案中,儘量的包含和這個資料檔案相關的其他元資訊(meta information),比如標記出的資料顏色資訊(參見 泰坦尼克沉船資料分析之一) 中對資料進行顏色標記的示範)等等,以及對資料檔案進行壓縮優化,以提升讀取效率。因為是 KNIME 自己的格式,如何讀寫已經做了約定,所以基本不需要做什麼配置就可以使用,但唯一考慮的一點就是,如果要遷移到KNIME以外的平臺使用,可能會遇到一些麻煩。
PMML Reader是用來讀取PMML(Predictive Model Markup Language預測模型標記語言)檔案的,這種檔案主要是用來記錄一些機器學習中的模型以及模型引數的。
[重點::sparkles::sparkles:;難度::sparkles:]List Files作用是列出所給路徑下有哪些檔案。比如需要讀取一個資料夾下所有的Excel檔案,那麼就需要用到這個模組了。
另外的幾個模組用的非常少,就略過不談了。
總的來說,Read部分,需要重點掌握CSV檔案以及Excel檔案的讀取模組。除了上面列出的模組,如果想要讀取Google Sheets,也是可以的,只不過要安裝相應的擴充套件,以及搭建相應的梯子。
Other部分
IO模組集合中的Other部分
Table Creator其實相當於一個小型的Excel,開啟之後直接編造資料,但其實用到的地方不多,能用它的地方,大部分情況下可以使用Excel代替。
Data Generator模組可以按照要求生成一些隨機資料。
[重點::sparkles:;難度::sparkles:]Create Table Structure可以生成一個沒有資料的表結構,主要是配合KNIME的自動生成報告功能使用的,簡單舉例來說,就是可以初始化生成一個最終報告要求的,有著XX列、YY列、ZZ列的空表,而在workflow的其他部分,只生成了一個具有YY列、ZZ列的表,那麼就可以將這個表追加到之前的空表中,進而嵌入到最終的報告中。
Create Temp Dir可以用來生成臨時目錄,和Linux系統程式設計中的 mktemp
的功能類似,在某些特定情況下會使用到,比如我們想要臨時生成一個sqlite檔案進行讀寫,但又不想永久儲存這個檔案,那麼就可以使用這個模組來建立一個臨時目錄存放這個sqlite檔案。
Extract System Properties和Extract Context Properties就是獲取一些系統資訊,以及一些當前workflow的資訊了,應用的地方也比較有限,但它們卻又是 KNIME 模組完整性的一部分。
File Handling部分
IO模組集合中的File Handling部分
Binary Objects類的模組主要是配合資料庫使用的,比如我們通過資料生成圖片,然後把圖片轉換成Binary Objects,再將Binary Objects存放在資料庫中。
[重點::sparkles::sparkles:;難度::sparkles:]Remote中的一些模組,主要是用來和遠端伺服器進行互動的,不管那個伺服器是ftp、http,還是隻開放了ssh的相應埠,我們都可以對遠端伺服器上的檔案進行下載、分析處理、上傳操作。下面是一個http connection模組的區域性例子。
http connection的區域性例子
[重點::sparkles::sparkles:;難度::sparkles:]Create Directory, Delete Files, Download, Download/Upload from List, List Remote Files, Upload這幾個模組的名字含義比較明確了,不再贅述。
[重點::sparkles::sparkles::sparkles:;難度::sparkles:]URI類的模組。URI是uniform resource identifier,統一資源識別符號的縮寫。我們常說的某某網站地址,或是某某網站中的某一個圖片地址,稱為URL,是(uniform resource locator)統一資源定位器的縮寫。URL是URI的子集,URI是一個更通用的概念,比如在Windows中, file:///c:/WINDOWS/clock.avi
就是一個URI,它定位了 clock.avi
這個視訊檔案(資源)如何去訪問。URI這幾個模組,在我們需要操作資源的各種路徑的時候,就會需要它們。
ZIP相關模組,一般是配合多個壓縮檔案使用的。比如在一大堆的壓縮檔案中,我們可能需要按順序解壓壓縮檔案,然後再分析處理解壓縮之後的檔案,在這種時候,我們就需要ZIP這個模組了。需要注意的是,ZIP相關的這兩個模組,支援眾多的開源壓縮方法,比如tar.gz, zip等,但是對於閉源的rar壓縮包,它們是不支援的。
COPY/MOVE Files模組,複製、移動模組再不贅述。
File Meta Info模組,可以列出相應檔案是否存在、大小、許可權等相關內容。
Find MIME-Type模組以及List MIME-Types模組,主要是配合HTTP使用的,一般在upload時,需要在http request中寫上mime type資訊。
回頭聊
反饋,轉發或讚賞?