《R语言数据分析》——2.5 使用R包与数据源API交互

简介:

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

2.5 使用R包与数据源API交互

尽管我们能够读取HTML表格、CSV文件、JSON和XML数据,甚至某些HTML的原始文档,然后实现数据的存储,但花太多时间用来开发我们自己的工具意义并不大,除非我们再没有其他选择。因此,通常我们应该首先快速了解清楚Web Technologies以及Services CRAN Task View的内容,同时留意R-bloggers,StackOverf?low以及GitHub这些网站,从上面获得任何可能的解决方案,而不是去定制自己的XPath工具和JSON列表。

2.5.1 Socrata的开源数据API

我们现在来展示使用Socrata公司为消费者金融保护局(the Consumer Financial Protection Bureau)提供的开放数据应用程序接口(the Open DataApplication Program Interface),重新实现上述样例:

QQ_20170525114608

事实上,RSocrata包和我们前面的方法一样使用了JSON源(或CSV文件)。请注意警告信息,其显示RSocrata包依赖于另外一个R中的JSON编译包,而不是我们之前使用的那个包,因此某些函数的名称是有冲突的。这时候,最好就是在自动导入RJSONIO包之前先执行detach('package:rjson')操作。

有了RJSONIO包,从指定的URL装载顾客反馈意见数据库就变成了一件非常容易的事情:

QQ_20170525114612

我们可以获取数值型数据,所有的日期也被自动处理成POSIXlt!

类似的,Web Technologies和Services CRAN Task View包含了数百种和自然科学类Web站点进行交互的R包,例如,生态学、遗传学、化学、天气学、金融学、经济学以及市场学等。我们还可以找到用于处理文本数据、文献资源、Web分析数据、新闻以及地图和社会媒体数据类的R包。由于篇幅有限,我们将仅关注那些频繁使用的包。

2.5.2 金融API

Yahoo!财经和Google财经是企业界人士常用的两种开放式数据源标准。使用quantmod包以及前述一些服务提供商,可以非常容易地实现获取诸如股票、金属或者是外币交易价格这样的信息。例如,让我们来看一下以'A'为标记的AgilentTechnologies公司最近的股票价格:

QQ_20170525114617

默认情况下,getSymbols函数会将获得的结果放在指定的parent.frame(通常为全局变量)环境内。如果指定NULL为期望中的环境,则处理结果会被当做一个xts的时间序列对象对待,如样例所示。
而外币交易的比率也可以很容易地抓取出来:

QQ_20170525114625
QQ_20170525114629

getSymbols函数返回的字符串为.GlobalEnv内存放数据的R变量。如果要查看所有可用的数据源,可以使用相关的S3方法查询:

QQ_20170525114635

除了一些离线数据源,我们可以从Google、Yahoo!和OANDA上获得最近的金融信息。如果要查看所有标记的完整列表,可以使用已经装载好的TTR包:

QQ_20170525114638

可以在本书第12章找到更多处理和分析类似数据集的方法。

2.5.3 使用Quandl获取时序数据

Quandl提供了一个支持访问百万级结构相似时序数据的标准模板,该模板实现了一个定制的API,适合大约500个数据源。R的Quandl包对来自全世界各类企业的这些开放数据都能提供简便的访问方式。下面,我们将以U.S.证券交易会发布的Agilent Technologies公司付出的红利数据为例,探讨Quandl包对时序数据的处理过程。首先,我们需要从公司主页上以“Agilent Technologies”为关键词搜索函数Quandl的代码:

QQ_20170525114643

如果没有合法的授权令牌,那么在使用这类API时会存在很多限制,可以通过访问Quandl主页来解决这一问题。当获得授权令牌后,可以用来设置Quandl.auth函数的参数。

Quandl包的功能包括:

以时间为筛选条件过滤数据

在服务器端执行一些对数据的转换操作,例如累积求和以及一阶微分等

对数据排序

确定返回对象的期望类别——例如ts、zoo和xts

下载有关数据源的一些元数据信息

元数据将存放在返回的R对象的attributes属性中,例如,希望统计数据集值的频数信息,可以调用:

QQ_20170525114648

2.5.4 Google文档和统计数据

读者们如果对从Google Docs上下载自己或特定数据更有兴趣,使用RGoogleDocs包就非常合适。该包可以从http://www.omegahat.org/ 的主页上下载,它提供了对谷歌电子表的读写操作授权。

不幸的是,该包的功能有些过时,也使用了一些遭弃用的API函数,因此我们最好找到一些新一点的替换函数,例如googlesheets包,它也支持对谷歌电子表格(不支持其他格式文档)的管理。

我们还可以从R中找到类似能够支持与Google Analytics和Google Adwords进行交互的包,来处理一些分析页面访问量或广告投入效率的问题。

2.5.5 在线搜索的发展趋势

另外,我们也可以调用API下载公共数据。Google提供了对包括World Bank、IMF,以及美国人口普查局等部门的公共数据进行访问的接口,访问地址为http://www.google.com/publicdata/directory。而有关Google自己内部有关搜索趋势的数据可以通过http://google.com/trends访问。

Google内部的数据调用GTrendsR包访问非常简单,不过在CRAN上还不提供下载,不过我们至少也可以以此为例来尝试一下如果通过其他的数据源来安装R的包。GTrendR源码库可以在BitBucket上获取,用devtools包来安装这些源码库非常方便。

为确保读者安装的GTrendR包的版本和我们后面样例中要用的版本一致,你可以指定install_bitbucket函数(或install_github函数)中参数ref的branch、commit以及其他属性的值。请参考本书附录中相关章节的内容。

QQ_20170525114651

可见从BitBucket或GitHub安装R包和确定好源码库的名称以及作者姓名,再使用devtools完成下载和编译一样简单。

Windows系统的用户应该在编译这些开发包之前先从http://cran.r-project.org/bin/windows/Rtools/处下载并按照Rtools包。我们同样激活了quiet模式,以阻止日志汇编和其他无聊的细节。

安装好以后,可以以常规方式载入包:

QQ_20170525114654

首先要通过一个合法的Google用户名和口令完成授权,然后再开始对Google Trends数据库进行查询操作。现在搜索命令将是“how to install R”:

请确保所使用的用户名和口令都是正确的,否则下面的查询将失败。

QQ_20170525114700
QQ_20170525114705

返回的数据集包括了以星期为周期的对R安装操作方法的查询频度。通过数据可知,7月中旬访问量最高,而接下来直到8月初的访问量仅为之前的75%。由此可见,Google并不发布对原始查询数据的统计信息,更多的是一种对不同搜索主题及时间间隔活动的比较研究。

2.5.6 天气历史数据

在R中还为地球学领域的用户提供了数据访问的包。例如,RNCEP包能够从国家环境预测中心(National Centers for Environmental Prediction)下载100多年的天气历史数据,这些数据基本是6小时采集一次。weatherData包提供对的直接访问。在下面的样例中,我们将下载过去七天London的日均温度数据:

QQ_20170525114712

请注意其中不重要的结果都被省略了,获取数据的过程非常直接:通过R的包获取指定URL的数据,这些数据以CSV文件格式存放,然后对数据进行分析处理。如果将opt_detailed设置为TRUE,将返回每天以30分钟为间隔的温度变化。

2.5.7 其他在线数据源

本章篇幅有限,因此不可能讨论完所有类型的在线数据源的处理方法,请参考Web Technologies、Services CRAN Task View、R-bloggers、StackOverf?low以及本书附录部分来了解这些实现了的R包,在读者开始开发自己的数据抓取包时也可以多参考helper函数。

相关文章
|
2月前
|
人工智能 自然语言处理 API
AI与Web3.0时代:API如何定义下一代企业数据交互?
简介: 2025年,API作为企业数据交互的“通用语言”,正推动各行各业的智能化与自动化变革。从技术架构到商业价值,CTO如何把握API浪潮,构建开放生态、提升安全合规、驱动业务增长?本文深入探讨API的战略意义与实战策略,助力企业抢占未来竞争制高点。
|
2月前
|
API
Dataphin功能Tips系列(58)- 支持OAuth2.0认证方式的API数据源
在数据集成过程中,Dataphin需通过API从外部系统获取数据,而这些系统常采用动态令牌鉴权机制。本文介绍如何在Dataphin中配置支持OAuth 2.0认证的API数据源,实现自动获取和刷新访问令牌,确保安全高效地进行数据请求与集成。
|
3月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
2月前
|
JSON JavaScript 前端开发
Python+JAVA+PHP语言,苏宁商品详情API
调用苏宁商品详情API,可通过HTTP/HTTPS发送请求并解析响应数据,支持多种编程语言,如JavaScript、Java、PHP、C#、Ruby等。核心步骤包括构造请求URL、发送GET/POST请求及解析JSON/XML响应。不同语言示例展示了如何获取商品名称与价格等信息,实际使用时请参考苏宁开放平台最新文档以确保兼容性。
|
4月前
|
数据采集 安全 大数据
Dataphin 5.1:API数据源及管道组件升级,适配多样化认证的API
为提升API数据交互安全性,Dataphin 5.1推出两种新认证方式:基于OAuth 2.0的动态授权与请求签名认证。前者通过短期Access Token确保安全,后者对关键参数加密签名保障数据完整性。功能支持API数据源OAuth 2.0认证和自定义签名配置,未来还将拓展更灵活的认证方式以满足多样化需求。
158 14
|
8月前
|
SQL IDE 数据挖掘
这可能是交互性最强的数据分析编程语言
在数据分析领域,Excel 和 BI 工具适合处理简单任务,但面对复杂分析(如跨行数据、滑动窗口等)时显得力不从心。编程语言虽有强计算能力,但交互性差,难以实时反馈结果。SPL(Structured Process Language)则结合了两者的优点,采用网格式编程,支持实时查看中间结果,并具备强大的有序和集合运算能力,使复杂任务变得简单直观。SPL 让数据分析师既能享受 Excel 的交互性,又能利用编程的强大计算能力,解决了强计算与交互性的两难问题。
|
5月前
|
人工智能 算法 安全
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
Quasar Alpha 是 OpenRouter 推出的预发布 AI 模型,具备百万级 token 上下文处理能力,在代码生成、指令遵循和低延迟响应方面表现卓越,同时支持联网搜索和多模态交互。
386 1
OpenRouter 推出百万 token 上下文 AI 模型!Quasar Alpha:提供完全免费的 API 服务,同时支持联网搜索和多模态交互
|
6月前
|
缓存 JSON JavaScript
体育应用怎么通过API接口接入数据源与直播源
本文介绍了体育类应用接入数据源与直播源的API接口方案。主要包括:1) 数据源API接入,涉及选择提供商、接入流程及常见数据类型;2) 直播源接入,涵盖直播源类型、提供商和技术方案;3) 技术实现要点,如数据缓存、实时更新机制和安全性考虑;4) 成本优化建议。附有HLS播放示例及Node.js完整集成代码,帮助开发者高效实现体育应用功能。
319 21
|
8月前
|
存储 数据挖掘 BI
API数据源:轻松接入各类业务系统数据
在数字化转型中,企业面临多样化的数据需求。Quick BI推出API数据源功能,支持广泛的数据接入,包括实时天气、电商交易及内部业务数据,极大丰富了可分析数据范围。该功能提供灵活的连接方式(抽取和直连模式)、多元授权机制(基础认证、前置请求)和自动化数据解析,降低了操作门槛,提升了配置效率。通过动态Token获取等最佳实践,确保数据安全与实时性,满足企业具体业务需求。了解更多,请访问Quick BI官方文档或瓴羊官网。
416 77
|
7月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1175 5

热门文章

最新文章