《R语言数据分析》----第1章 你好,数据! 1.1 导入一个大小合适的文本文件

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.1节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。 第1章 你好,数据! 大多数R项目都必须从数据导入到R的会话中开始,由于R语言能够支持多种文件格式和数据库后台,因此可以使用相当多的数据导入方法。

本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.1节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

第1章

你好,数据!

大多数R项目都必须从数据导入到R的会话中开始,由于R语言能够支持多种文件格式和数据库后台,因此可以使用相当多的数据导入方法。本章,我们不会再讨论基础的数据结构,因为你应该已经对它们非常熟悉了。本章的重点将放在大数据集的导入以及处理一些特殊的文件类型。

如果读者希望对标准工具做一个粗略的回顾,复习一下普通类型数据导入的方法,可以参考官方有关CRAN介绍的手册,地址为:http://cran.r-project.org/doc/manuals/R-intro.html#Reading-data-from-f?iles,或者访问Rob Kabacoff的Quick-R站点:http://www.statmethods.net/input/importingdata.html,该网站总结了大多数R任务中将使用的关键字和提示信息列表,更多相关内容,请参考本书附录。

尽管R语言拥有其自己的(序列化)二进制RData及rds文件格式类型,这种文件格式也可以非常方便地被R用户用来存放R对象的元数据信息。但大多数时候,我们还是需要能够处理一些由我们的客户或老板要求使用的其他类型数据。

平面文件是这其中最常见的一类数据文件,在这样的文件中,数据存放在简单的文本文件中,数据值之间通常会以空格、逗号,或者更常见的分号隔开。本章将对R语言提供的几种用于装载这些类型文档的方法展开讨论,并就哪种方法最适合于导入大数据集进行测试。

某些时候,我们也可能仅对一个数据集的子集感兴趣,并不需要对整个数据集进行处理。由于数据存放在数据库时都是以结构化的方式进行预处理的,因此,我们可以只使用简单并且有效的命令就可以查询得到我们需要的子集。本章1.4节将着重探讨三类最常用的数据库系统(MySQL、PostgreSQL和Oracle)与R进行交互的方法。

除了对部分常用工具以及其他一些数据库后台进行一个简要说明外,本章还将展示如何将Excel电子表格导入到R中,这种导入并不需要事先将电子表格文件转换为Excel文本文件或Open/LibreOff?ice格式文件。

当然,本章要讨论的内容绝不仅仅局限于文件格式、数据库连接以及类似一些让人提不起兴趣的内容。不过,请记住数据分析工程师总是首先从导入数据起步,这一部分的工作是不可回避的,必须要保证我们的机器和统计环境在进行实际的分析之前首先先弄清楚数据的结构。

1.1 导入一个大小合适的文本文件

本章的标题也可以换成“你好,大数据!”因为本章主要探讨如何将大数据装载到R会话中。但是,到底什么是大数据呢?究竟在R中处理多大规模的数据量会比较困难呢?合适的规模怎么定义呢?

R原本是为处理单机规模的数据而设计的,因此比较适合数据集规模小于实际可用的RAM大小的情况,但要注意有时候我们必须考虑在做一些计算操作时,程序对内存的需求会增加,例如主成分分析。在本节中,将这类规模的数据集称为大小合适的数据集。

在R中完成从文本导入数据的操作非常简单,可以调用read.table函数来处理任何规模合适的数据集,唯一要考虑的就是数据读写所需的时间。例如,25万行的数据集?可以参见:


b5c3b07e20d3c5bcfc6b0a5ac6f10a9b3e0c8044
注意,我们对本书所有的R命令及其输出都采用特殊格式的文本显示。其中,R命令以符号“>”开始,属于同一命令的不同行之间以“+”连接,与R控制台的处理方式类似。

没错,我们刚刚从hf?lights包中将18.5MB大小的文本文件下载到硬盘上,该文件包括了2011年从休斯顿(Houston)起飞的航班的部分数据:


317d58dac60d3397337811c33c3b4d9a572869b2


db5cd13125d5fc3a83f3e1bc2ce2af6f94d482c3
用hflight包我们能非常方便地处理海量航线数据的子集,该数据集源自美国交通统计局的研究和创新技术局提供的海量航班数据集的子集,原始数据集中包括了自1987年以来,所有US航班的计划及实际出发/到达时间和其他一些我们可能感兴趣的信息。该数据集经常被用于验证机器学习及大数据技术。更多有关该数据集的详细内容,可以参考以下网址来获得有关列的描述以及其他元数据的内容:http://www.transtats.bts.gov/DatabaseInfo.asp?DB_ID=120&Link=0.

我们将使用这个包括了21列数据的数据集作为数据导入的测试平台。例如,使用read.csv测试导入CSV文件的时间。


2536287bd90eba06105f5b7d9fa3bba4de7c3a4e

从某个SSD站点下载这些数据大约需要1.5秒,相对来说耗时还算可以接受。我们可以指定列数据的转换类型而不采用默认的type.convert(参见read.table的文档获得更多详细信息,在SatckOverf?low的搜索结果也表明有关read.csv的问题看起来是大家都很关心也经常提问的内容)来提高速度。


069cb26d825038be7ad7aa9ed0b50f28b00e6d27

这个结果已经好了很多!但它可信吗?在使用R语言掌握数据分析的道路上,我们还将实践更多可靠的测试——对同一任务重复n次测试,然后再对仿真结果进行汇总。通过这个方法,我们可以得到关于数据的多种观测结果,并将它们用于分析确定结果中的统计的显著差异。microbenchmark包就为类似任务提供了一个非常好的框架:


4c4599847414a7f4a66221e230064d14b7b0c928


06c63a836a8f949d4a53b8831fb63160b4c0a06b

我们定义了两个函数:函数f为read.csv的默认设置,在函数g中,我们对之前两列数据类型进行了更新以提高执行效率。其中,参数comment.char将通知R不需要在被导入的文件中寻找注释,参数comment.char确定了从文件中导入的行数,以节约导入操作所需的部分时间和空间。将stringAsFactors设置为FALSE也可以提高一点文件导入速度。

使用一些第三方工具可以确定要导入的文本文件的行数,例如Unix上的wc,或使用R.utils包中自带的countLines函数,不过后者速度要稍微慢一点。

回到对结果的分析中,我们可以在图形中来展现中位数以及一些其他相关统计值,这些结果都是默认运行100次所得:


ced04c953b61d6db4d949fd3dded7f9d2438405a

两者之间的差异看起来非常明显(读者也可以通过其他一些统计实验来验证这个结果),仅通过read.table函数的参数调优,我们就将性能提高了50%以上。

规模大于物理内存的数据集

如果从CSV文件中导入的数据集大小超过了机器的物理内存,可以调用一些专为这类应用而设计的用户开发包。例如,sqldf包和ff包都支持基于特定数据类型以chunk到chunk方式装载数据集。前者使用SQLite或者类似SQL的数据库后台,而后者则使用与ffdf类对应的数据框将数据存储到硬盘上。bigmemory包也提供了类似的功能。稍后将介绍相关的样例(可用于测试):


7e22a32422485f94f573cba8d2090d30a16352a8

!

58021a510af1890741dde7f31e931825553e1c62

请注意bigmemory包的read.big.matrix函数,其参数header默认值为FALSE,因此在读者使用自己的测试数据平台时应首先阅读相关函数的帮助手册,因为部分函数也和read.table一样支持参数调优。更多相关案例,请参考“High-Performance and Parallel Computing with R CRAN Task View”中“Large memory and out-of-memory data”的内容,地址为:http://cran.r-project.org/web/views/HighPerformanceComputing.html

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3月前
|
数据挖掘 PyTorch TensorFlow
|
3月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
2月前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
47 2
|
2月前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
34 2
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
某A保险公司的 数据图表和数据分析
某A保险公司的 数据图表和数据分析
61 0
某A保险公司的 数据图表和数据分析
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
53 0
|
3月前
R语言基于表格文件的数据绘制具有多个系列的柱状图与直方图
【9月更文挑战第9天】在R语言中,利用`ggplot2`包可绘制多系列柱状图与直方图。首先读取数据文件`data.csv`,加载`ggplot2`包后,使用`ggplot`函数指定轴与填充颜色,并通过`geom_bar`或`geom_histogram`绘图。参数如`stat`, `position`, `alpha`等可根据需要调整,实现不同系列的图表展示。
|
3月前
|
机器学习/深度学习 数据挖掘 TensorFlow
🔍揭秘Python数据分析奥秘,TensorFlow助力解锁数据背后的亿万商机
【9月更文挑战第11天】在信息爆炸的时代,数据如沉睡的宝藏,等待发掘。Python以简洁的语法和丰富的库生态成为数据分析的首选,而TensorFlow则为深度学习赋能,助你洞察数据核心,解锁商机。通过Pandas库,我们可以轻松处理结构化数据,进行统计分析和可视化;TensorFlow则能构建复杂的神经网络模型,捕捉非线性关系,提升预测准确性。两者的结合,让你在商业竞争中脱颖而出,把握市场脉搏,释放数据的无限价值。以下是使用Pandas进行简单数据分析的示例:
46 5
|
3月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
3月前
|
数据采集 算法 搜索推荐
R语言营销数据分析:使用R进行客户分群的实践探索
【9月更文挑战第1天】R语言以其强大的数据处理和统计分析能力,在金融数据分析、营销数据分析等多个领域发挥着重要作用。通过R语言进行客户分群,企业可以更好地理解客户需求,制定精准的营销策略,提升市场竞争力和客户满意度。未来,随着大数据和人工智能技术的不断发展,R语言在营销数据分析中的应用将更加广泛和深入。