本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第1章,第1.3节将CSV数据读入Incanter数据集,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看
1.3 将CSV数据读入Incanter数据集
以逗号分隔值(CSV)是最简单的数据格式之一,并且这种数据格式应用非常普遍。Excel可以直接读写CSV文件,而且多数数据库也可以。由于CSV文件就是无格式的文本,因此使用任何编程语言都很容易生成或者访问它。
1.3.1 准备工作
首先,确保加载了正确的库。Leiningen(https://github.com/technomancy/leiningen)的项目文件project.clj file应该包含以下依赖(也可以使用更新的版本):
这个文件可以从http://www.ericrochester.com/clj-data-analysis/data/small-sample.csv下载,还有一个带有标题行的版本,可以从http://www.ericrochester.com/clj-data-analysis/data/small-sample-header.csv下载。
1.3.2 具体实现
- 使用incanter.io/read-dataset函数。
1.3.3 实现原理
通过Clojure和Incanter可以使许多普通工作变得简单,下面是一个很好的例证。
读入外部数据(在本例中来自CSV文件),并将其加载到Incanter数据集中。在Incanter中,一个数据集就是一张表,类似于电子表格中的一个表单或者数据库中的表。每一列包含一个数据域,每一行包含一条数据。有些列包含字符串数据(本例中所有列都是字符串数据),有些列包含日期或者数值数据。如果一列包含数值数据,Incanter会自动将其检测出来并将其转换为Java中的int或者double数据格式。Incanter解决了导入数据过程中遇到的许多令人头疼的问题。
1.3.4 更多信息
如果你不想涉及Incanter,比如当你不想添加依赖时,使用data.csv也是比较简单的(https://github.com/clojure/data.csv)。后续的章节中会使用这个库,例如2.8节。