数据分析指北 - 基础(基础数据操作之二,读取数据源)
如何读取文件数据(以CSV文件举例)和数据库数据。
历史回看:
数据分析指北 - 前言(02)
方法论 之 你会问问题吗?
数据分析指北 - 基础(数据来源及轮廓)
有必要搞清楚数据的原始出处以及大致轮廓(分布)。
数据分析指北 - 基础(基础数据操作之一)
计算机是怎么处理表数据的,以及一些小学数学题?
Photo by Ksenia Kudelkina on Unsplash
微信公众号:数据分析指北
数据源
文件
数据库
本次作业
数据源
对上节的数据还有印象吗?作业有做吗?让我们从上次的数据继续说起。
示例数据
真实世界中的数据存在于各种地方,文件中,网页中,数据库中,甚至是剪贴板中。
文件
其中,文件分为多种类型,Excel的 XLS 文件,普通的 CSV 文件(逗号分隔文件),JSON文件,HDF5文件等等。以 CSV 文件为例,上面的示例数据可能是这样被记录的:
班,姓名,性别,出生年月,身高,数学,英语1,赵一,男,1990-02,160,96,79...2,李二,男,1989.02,,92,94...1,赵一,男,1990-02,160,96,79
...
2,李二,男,1989.02,,92,94
...
很简单,就是 约定 了以“,”分隔列中不同的数据,以自然的行来区分数据中不同的行。除了用逗号做为分隔符之外,还可以用其他的标识符,比如分号“;”,句号“。”或其他什么,只要格式遵从这个列分隔的 约定 就可以。
人们使用 CSV 文件,主要原因就是他其实是一个文本文件(并附加了一些格式进行 约定 ),在所有的平台下都是可以直接打开阅读的。这一点而不像xls,数据库等存储数据的方式 – 需要安装特定的软件,才能查看数据。
对 CSV 文件观察一下,除了之前说的 约定 的分隔符之外,有可能你拿到的数据有一些 “意外”,比如没有表头,即没有 “班,姓名,性别,出生年月,身高,数学,英语” 那一行;开始时有几行空行;再或者有一些行比其他行短 - 短的主要原因是,那一行后面有一些列没有数据了,就没有写。
哦,对了,在处理中文数据的时候还有可能有关于文件编码的问题绊住你。
对于这样一个 约定 好了格式,但却仍然有上面所说的“意外”情况的 CSV 文件,在每个分析软件中,都有一些标准的方法去读取。
比如 Python (Pandas库)中就是pandas.read_csv
函数, 函数的参数就是上面说的几种情况,外加一些处理“意外”的参数。
在 Excel 中,在导入的时候也是有类似的选项,如下图所示:
Excel CSV的导入过程
在 R 这门统计语言中,CSV 文件是按照如下方式读取的。即使还不懂这门语言,看着下面语句,也能猜个八九不离十了。
MyData <- read.csv(file="c:/TheDataIWantToReadIn.csv", header=TRUE, sep=",")TRUE, sep=",")
Matlab 中,M = csvread(filename)
来完成这件事。
KNIME 中(之前的附录作业中已经让你安装了哦),配置下 CSV 模块的参数就可以,大同小异:
KNIME CSV 模块配置选项
其余的文件类型,以及网页类型(也归类为文件类型),其实只是格式的 约定 差异而已,不再赘言。
数据库
数据库种类繁多,不同的数据库有不同的 约定 连接方式。为简便起见,这里只大概聊两句 KNIME 是怎么连接的。KNIME 底层是由 JAVA 语言写成的,在 JAVA 的世界中,有一个叫做JDBC(Java DataBase Connectivity)的标准,这个标准制定了怎样用 JAVA 去连接数据库,以及怎样在数据库中进行增加,删除,修改,查询(简称为增删改查,CRUD)等一系列操作。各个数据库厂商只需要根据这个标准,制定自己家数据库的相应驱动,就可以在 JAVA 程序中通过 JDBC 接口连接数据库了。下图中的灰色节点,就是各个数据库厂家提供的相应驱动。
JAVA 程序通过 JDBC 接口连接各种数据库
KNIME 中,需要做的就是,把需要的灰色驱动节点下载下来,然后配置一下就好了。具体如何做,请参照 https://www.KNIME.com/database-documentation
本次作业
我已经给你准备好了 CSV 数据,在 KNIME 的小工程(workflow)中配置好了 CSV 模块,并把把结果导出成了一个文件。
你需要做的就是,把这个 workflow 想办法导入到你的 KNIME 中,然后试着操作得到下面的结果:
导入 CSV 最终效果图
作业下载方法:关注公众号,回复 “作业” 二字即可获得下载链接。
实在搞不定的,等我下篇喽
回头聊
反馈,转发或赞赏?