数据分析指北 - KNIME 模块(Data Access类型模
*欢迎关注公众号 数据分析指北*前一阵时间休假啦🎈接着连载, 这次讲基础模块
数据分析指北 - KNIME 模块(Data Access类型模块之一IO模块集合)
*Photo by Samuel Zeller on Unsplash*历史回看:
基础(数据来源及轮廓)
有必要搞清楚数据的原始出处以及大致轮廓(分布)。
基础(基础数据操作之二,读取数据源)
KNIME模块(基础)
微信公众号:数据分析指北
上一节我们讲了 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部分*[重点:✨✨✨;难度:✨]对于Excel文件来说,如果你已经确定要读取Excel文件的哪个表,那么我们就可以直接使用Excel Reader(XLS),直接在节点中配置读取,其配置选择其实和CSV reader的配置差不太多,除了一些标准的配置之外--比如Column Name都从哪里取、Row Id要不要自动生成,其他选项都集中在配置对于异常情况的处理;如果你需要将Excel中所有的表的内容都读取出来,那么你可以尝试先使用Read Excel Sheet Names (XLS)节点,读出这些表的名字,然后再设置一个循环,使用Excel Reader(XLS)将每个表中的内容读取出来,可参考下图结构。
*读取Excel文件中的所有内容*[重点:✨✨✨;难度:✨]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%PLU@io.arc.nasa.gov)
% (c) Date: July, 1988
%
@RELATION iris
@ATTRIBUTE sepallength NUMERIC
@ATTRIBUTE sepalwidth NUMERIC
@ATTRIBUTE petallength NUMERIC
@ATTRIBUTE petalwidth NUMERIC
@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()
函数。
[重点:✨;难度:✨]Table Reader这个模块是用来读取KNIME自定义的Table格式的(文件名以.table为后缀
),是读取KNIME的Table Writer模块输出的文件的。这个文件和ARFF文件的目的相同,就是在这个文件中,尽量的包含和这个数据文件相关的其他元信息(meta information),比如标记出的数据颜色信息(参见泰坦尼克沉船数据分析之一)中对数据进行颜色标记的示范)等等,以及对数据文件进行压缩优化,以提升读取效率。因为是 KNIME 自己的格式,如何读写已经做了约定,所以基本不需要做什么配置就可以使用,但唯一考虑的一点就是,如果要迁移到KNIME以外的平台使用,可能会遇到一些麻烦。
PMML Reader是用来读取PMML(Predictive Model Markup Language预测模型标记语言)文件的,这种文件主要是用来记录一些机器学习中的模型以及模型参数的。
[重点:✨✨;难度:✨]List Files作用是列出所给路径下有哪些文件。比如需要读取一个文件夹下所有的Excel文件,那么就需要用到这个模块了。
另外的几个模块用的非常少,就略过不谈了。
总的来说,Read部分,需要重点掌握CSV文件以及Excel文件的读取模块。除了上面列出的模块,如果想要读取Google Sheets,也是可以的,只不过要安装相应的扩展,以及搭建相应的梯子。
Other部分
*IO模块集合中的Other部分*Table Creator其实相当于一个小型的Excel,打开之后直接编造数据,但其实用到的地方不多,能用它的地方,大部分情况下可以使用Excel代替。
Data Generator模块可以按照要求生成一些随机数据。
[重点:✨;难度:✨]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存放在数据库中。
[重点:✨✨;难度:✨]Remote中的一些模块,主要是用来和远程服务器进行交互的,不管那个服务器是ftp、http,还是只开放了ssh的相应端口,我们都可以对远程服务器上的文件进行下载、分析处理、上传操作。下面是一个http connection模块的局部例子。
*http connection的局部例子*[重点:✨✨;难度:✨]Create Directory, Delete Files, Download, Download/Upload from List, List Remote Files, Upload这几个模块的名字含义比较明确了,不再赘述。
[重点:✨✨✨;难度:✨]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信息。
回头聊
反馈,转发或赞赏?