博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《机器学习与数据科学(基于R的统计学习方法)》——2.9 从网站中抓取数据...
阅读量:5798 次
发布时间:2019-06-18

本文共 1534 字,大约阅读时间需要 5 分钟。

本节书摘来异步社区《机器学习与数据科学(基于R的统计学习方法)》一书中的第2章,第2.9节,作者:【美】Daniel D. Gutierrez(古铁雷斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.9 从网站中抓取数据

将网站当成是一个数据源可能是个奇怪的想法,但是,一旦你想起网站是一组HTML文件,HTML可以更好地表示数据时,那么“读取”网站这一行为就会显得比较合理了。这一技术在需要的数据没有现成的CSV文件或者其他文件类型可供下载时特别有效。作为替代,我们可以直接从网页中“抓取”数据。

为了演示这一读取数据的工具,让我们来访问一个包含数据集的网站,并将其导入R进行处理。图2-3展示了制造业数据采购经理人指数(PMI,Purchasing Managers Index)的历史值。我们的目标是写一个R脚本,直接从网页中读取数据,然后将它载入数据框中进行更深入的分析。接着更进一步,将数据变形,转换成对我们的目标来说更容易使用的形式。

9ef74bd4661d92702627c252460cd58ad7f87854

下面的代码首先下载两个包:XML和reshape2。XML包中有一个对抓取网页来说非常有用的函数:readHTMLTable(),它能将数据从HTML表格中提取出来。HTML表格通常是数据在网页中的展现形式。为了方便使用,我们将这一函数的返回数据列表转换成数据框的形式。使用head(df)展示了现在在数据框中的数据,我们可以看到,与网页中的数据相同。

> library(XML)> library(reshape2)> webdata <- readHTMLTable('http://www.ism.ws/ISMReport/ content.cfm?ItemNumber=10752')> df <- data.frame(webdata[[1]])> names(df)[1] <- 'Year' # Add a name for first column> head(df)  Year JAN   FEB   MAR  APR  MAY   JUN  JUL  AUG   SEP  OCT  NOV   DEC1 2014 51.3                            2 2013 52.3 53.1 51.5 50.0 50.0 52.5 54.9 56.3 56.0 56.6 57.0 56.53 2012 52.8 52.4 53.0 53.7 53.2 51.0 50.6 51.1 52.2 51.2 49.5 50.44 2011 59.0 59.3 59.1 58.9 53.7 56.6 52.9 53.0 52.8 51.8 52.1 53.15 2010 57.2 55.8 58.8 58.1 58.3 56.4 56.4 58.0 56.3 57.7 57.6 57.56 2009 34.9 35.5 36.0 39.5 41.7 45.8 49.9 53.5 54.4 56.0 54.4 55.3```让我们更进一步,改进从网页中抓取的数据。可以使用reshape2包中的melt()函数,它在快速转换数据框方面特别强大。在这种情况下,我们选择从网站中读入的列表格式,将其改造成有序三元组Year、Month和PMI。同时,也要将PMI转换成数值型,并移除PMI值为NA的观测行(有几个月的PMI没有值)。

df <- melt(df,id.vars='Year')

names(df) <- c('Year','Month','PMI')
df$PMI <- as.numeric(df$PMI)
df <- na.omit(PMI)`

转载地址:http://hjpfx.baihongyu.com/

你可能感兴趣的文章
性能测试之稳定性测试
查看>>
ES6的 Iterator 遍历器
查看>>
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>
国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
查看>>
微软将停止对 IE 8、9和10的支持
查看>>
微服务架构会和分布式单体架构高度重合吗
查看>>