求助美国data science排名 in R 一书的数据和代码

LearningR-学习资源 - 简书
下载简书移动应用
写了10198字,被5人关注,获得了2个喜欢
LearningR-学习资源
通过阅读来学习,包括了阅读经典的教材、代码、论文、学习公开课。
通过牛人来学习,包括同行的聚会、讨论、大牛的博客、微博、twitter、RSS。
通过练习来学习,包括代码练习题、参加kaggle比赛、解决实际工作中的难题。
通过分享来学习,包括自己写笔记、写博客、写书、翻译书,和同伴分享交流、培训新人。
本文用于收集各类R语言的学习资源,用于学习、练习和分享。
《R语言实战》R in Action从统计角度入手,分高中低三部分由浅入深的讲解了如何用R来实现统计分析。
《R语言编程艺术》The Art of R Programming从程序编写的角度入手,对R的本身特点进行了清晰的介绍。
《learning R》这本书没有单纯的讲语法,而是和的流程结合了起来,从数据获取到数据整理再到分析和报告,有一气呵成的感觉,此外最后两章讲如何写稳健的R代码以及写包都是非常精彩的。
主要是R常见问题解答。
本节主要介绍R语言快捷参考手册和各种功能强大的R语言包的介绍。
《R语言参考手册》
《R语言基础包函数中文帮助文档(中英文对照v1.0)》
《R Cookbook》
《R in a Nutshell》以上两本为词典式的案头参考手册,以便随时查阅。
各类包的参考手册如:gglpot2、rcharts、quantmod
本节主要学习统计计量知识,和通过R语言的实现。
《A Handbook of Statistical Analyses Using R》
《Modern Applied Statistics With S》这两本书基本上涵盖了统计的一些高阶内容,例如多元分析、多层回归模型、荟萃分析、生存分析等内容。案例丰富,公式不多,值得反复学习参考。
ggplot2,是R中最优秀的绘图包。
《ggplot2 Elegant Graphics for Data Analysis》
《R Graphics Cookbook》这本书也是RStudio公司的人出的,似乎是Hadley的学生吧,主要是各种ggplot2包的例子,也包括了用其它包来画图,建议通读一遍。除了ggplot2外,R还可以通过rcharts和RStudio公司的shiny来实现可交互式的数据展示。
《Practical Data Science with R》以R本身的扩展包和函数入手,很有体系的介绍了数据科学的各个方面。
《An Introduction to Statistical Learning》这本书可以说是另一本数据挖掘大作《The Elements of Statistical Learning》的R实现手册,体系结构基本一致,更强调用R来实现,更难得的地方是提供了很好的习题。
《Data Mining with R Learning with Case Studies》
《Machine Learning for Hackers》两本侧重于数据挖掘的R书,全是以案例为线索,示范的代码量很大。跟一遍下来会有很大的收获。
《Data Mining explain using R》用基本函数来实现各种机器学习算法,对理解算法底层很有帮助。
《Data Science in R》以案例为主的书,需要一定的数据挖掘基础。
《Introduction to Scientific Programming and Simulation Using R》
《Mastering Scientific Computing with R》除了统计分析外,独特之处在于使用R来做数值分析,如求根,最优化,数值积分。还包括了一些常见的模拟技术。书后的习题和最后的案例非常有用。
高级编程:
《R Programming for Bioinformatics》
《software for data analysis programming with R》如果你是初学者,不要去看上面两本书。如果你想进阶为专家级R用户,那你需要精读它们。前者讲解了R少为人知的一面,例如字符处理、正则表达和XML,还有报错处理以及与其它语言的交互。后者更是编写生产级代码的圣经指南。
《Advanced R programming》Hadley的力作,清楚的讲解了R的函数式编程思想和写R包的各种细节,要迈入R高手,不得不读。
《数据科学中的R语言》李舰和肖凯的作品
R语言官方站
丰富的R博客资源
R语言资源汇总
R语言搜索引擎&
R函数在线帮助
stackoverflow关于R的问答
一个入门级的R在线教程
交互式的R在线教程
Hadley Wickham大神
肖凯的个人博客
谢益辉的个人博客
尾巴AR的个人博客
美国计算机世界杂志提供的R语言初学者入门资料
R and Data Mining
各种cheatsheet
spatial.ly is written by James Cheshire. James is a lecturer at the UCL Department of Geography where he researches, teaches and maps.
Oliver Uberti博客James Cheshire and Oliver Uberti are the author of
Coursera上约翰.霍普金大学的数据科学系列课程该系列课程包含如下几门课。1.《数据科学家的工具箱》该课程主要介绍了数据科学家常用的一些工具。包括R、 RStudio、 Git 、Github ,这里强烈推荐RStudio,作为R的一个集成开发环境(IDE), 它可以在Latex、 PDF、 markdown、 html 中游刃有余,并且是个强大的Literate Programming 工具。除了以上提及的强大工具之外,还介绍了数据的类型、数据分析的方法过程、以及数据科学的一些知识点。2.《R语言程序开发》主要内容包括:1)R概述,R的数据类型和对象,数据的读写操作;2)R中的控制流,函数式编程,作用域,时间数据类型;3)循环函数,检查代码漏洞的方法;4)数据模拟实现,代码风格规范。3.《获取和整理数据》完成这门课程将获得技能:1)从各种资源获取数据;2)数据清洗的原则;3)数据整理的工具与技巧。4.《探索性数据分析》完成这门课程将收获:1)运用R中的base,lattice,ggplot2等绘图系统进行数据的可视化展示;2)对不用类型的数据运用基本的数据展示原则创造丰富多样的分析图;3)基于特定问题出发,运用探索高维数据的统计技巧,创造多维度数据的可视化方式。5.《可重复性研究》通过这门课程,你将学会:1)使用Rmarkdown撰写文档;2)在分析报告中嵌入R代码;3)用knitr等相关工具编译Rmarkdown文档;4)进行可重复性的数据分析研究。6.《统计推断》这门课主要介绍统计推断的基础。可以收获:1)统计推断的概览;2)进行统计推断的模型假设;3)复杂统计推断的技巧。7.《回归模型》这门课教会学生:1)如何进行拟合线性模型,如何进行残差分析;2)进一步探索如何引入哑变量解决特殊的模型设定问题;3)介绍广义线性模型,特别是Poisson回归和Logistic回归。8.《实用机器学习》完成这门课将收获:1)经典机器学习算法;2)如何应用多种机器学习工具;3)如何对真实数据进行模型评估和预测。9.《数据产品开发》内容涵盖:1)如何创造统计产品以进行交互式探究;2)重点学习如何探究不确定性的统计结果;3)如何创造Shiny应用,以及数据产品相关的R扩展包。作者:黄耀鹏链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
· 4人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:七个用于数据科学(data science)的命令行工具 - 文章 - 伯乐在线
& 七个用于数据科学(data science)的命令行工具
数据科学是(和 awesome 相同发音),它包括获取(Obtaining)、整理(Scrubbing)、探索(Exploring)、建模(Modeling)和翻译(iNterpreting)数据。作为一名数据科学家,我用命令行的时间非常长,尤其是要获取、整理和探索数据的时候。而且我也不是唯一一个这样做的人。最近,介绍了可用于数据科学的经典命令行工具。在这之前,Seth Brown介绍了如何。
下面我将介绍在我的日常工作中发现很有用的七个命令行工具。包括:、 、 、scrape、 、 sample 和 Rio。(我自己做的scrape、sample和Rio可以在拿到)。任何建议意见、问题甚至git上的拉取请求都非常欢迎(其他人建议的工具可以在最后找到)。好的,下面我们首先介绍jq。
1. jq – sed for JSON
JSON现在越来越流行,尤其当API盛行了以后。我还记得处理JSON时,用grep和sed写着丑陋的代码。谢谢jq,终于可以不用写的这么丑了。
假设我们对2008总统大选的所有候选人感兴趣。纽约时报有一个关于。让我们用curl取一些JSON:
curl -s '/svc/elections/us/v3/finances/2008/president/totals.json?api-key=super-secret' & nyt.json
curl -s '/svc/elections/us/v3/finances/2008/president/totals.json?api-key=super-secret' & nyt.json
-s表示静默模式。然后我们用jq最简单的格式jq ‘.’,可以把得到的丑陋的代码
{&status&:&OK&,&base_uri&:&/svc/elections/us/v3/finances/2008/&,&cycle&:2008,&copyright&:&Copyright (c) 2013 The New York Times Company. All Rights Reserved.&,&results&:[{&candidate_name&:&Obama, Barack&,&name&:&Barack Obama&,&party&:&D&,
{"status":"OK","base_uri":"http:///svc/elections/us/v3/finances/2008/&,&cycle&:2008,&copyright&:&Copyright (c) 2013 The New York Times Company. All Rights Reserved.&,&results&:[{&candidate_name&:&Obama, Barack&,&name&:&Barack Obama&,&party&:&D&,
转换成漂亮的格式:
& nyt.json jq '.' | head { &results&: [ { &candidate_id&: &P&, &date_coverage_from&: &&, &date_coverage_to&: &&, &candidate_name&: &Obama, Barack&, &name&: &Barack Obama&, &party&: &D&,
< nyt.json jq '.' | head { &results&: [ { &candidate_id&: &P&, &date_coverage_from&: &&, &date_coverage_to&: &&, &candidate_name&: &Obama, Barack&, &name&: &Barack Obama&, &party&: &D&,
同时,jq还可以选取和过滤JSON数据:
& nyt.json jq -c '.results[] | {name, party, cash: .cash_on_hand} | select(.cash | tonumber & 1000000)'
{&cash&:&&,&party&:&D&,&name&:&Barack Obama&}
{&cash&:&&,&party&:&R&,&name&:&John McCain&}
{&cash&:&&,&party&:&D&,&name&:&John Edwards&}
< nyt.json jq -c '.results[] | {name, party, cash: .cash_on_hand} | select(.cash | tonumber & 1000000)' {"cash":"","party":"D","name":"Barack Obama"}{"cash":"","party":"R","name":"John McCain"}{"cash":"","party":"D","name":"John Edwards"}
更多使用方法参见,但是不要指望jq能做所有事。Unix的哲学是写能做一件事并且做得好的程序,但是jq功能强大!下面就来介绍json2csv。
2. json2csv – 把JSON转换成CSV
虽然JSON适合交换数据,但是它不适合很多命令行工具。但是不用担心,用json2csv我们可以轻松把JSON转换成CSV。现在假设我们把数据存在million.json里,仅仅调用
& million.json json2csv -k name,party,cash
< million.json json2csv -k name,party,cash
就可以把数据转换成:
Barack Obama,D,
John McCain,R,
John Edwards,D,
Barack Obama,D,John McCain,R,John Edwards,D,
有了CSV格式我们就可以用传统的如 cut -d 和 awk -F 一类的工具了。grep和sed没有这样的功能。因为CSV是以表格形式存储的,所以csvkit的作者开发了csvkit。
3. csvkit – 转换和使用CSV的套装
csvkit不只是一个程序,而是一套程序。因为大多数这类工具“期望”CSV数据有一个表头,所以我们在这里加一个。
echo name,party,cash | cat - million.csv & million-header.csv
echo name,party,cash | cat - million.csv > million-header.csv
我们可以用csvsort给候选人按竞选资金排序并展示:
& million-header.csv csvsort -rc cash | csvlook
|---------------+-------+--------------|
| party | cash
|---------------+-------+--------------|
John McCain
Barack Obama | D
John Edwards | D
|---------------+-------+--------------|
< million-header.csv csvsort -rc cash | csvlook&|---------------+-------+--------------||&&name&&&&&&&& | party | cash&&&&&&&& ||---------------+-------+--------------||&&John McCain&&| R&&&& | &&||&&Barack Obama | D&&&& | && ||&&John Edwards | D&&&& | &&&&||---------------+-------+--------------|
看起来好像MySQL哈?说到数据库,我们可以把CSV写到sqlite数据库(很多其他的数据库也支持)里,用下列命令:
csvsql --db sqlite:///myfirst.db --insert million-header.csv
sqlite3 myfirst.db
sqlite& .schema million-header
CREATE TABLE &million-header& (
name VARCHAR(12) NOT NULL,
party VARCHAR(1) NOT NULL,
cash FLOAT NOT NULL
csvsql --db sqlite:///myfirst.db --insert million-header.csvsqlite3 myfirst.dbsqlite> .schema million-headerCREATE TABLE "million-header" (&&&&name VARCHAR(12) NOT NULL, &&&&party VARCHAR(1) NOT NULL, &&&&cash FLOAT NOT NULL);
插入后数据都会正确因为CSV里也有格式。此外,这个套装里还有其他有趣工具,如 in2csv、 csvgrep 和csvjoin。通过csvjson,数据甚至可以从csv转换会json。总之,你值得一看。
4. scrape – 用XPath和CSS选择器进行HTML信息提取的工具
JSON虽然很好,但是同时也有很多资源依然需要从HTML中获取。scrape就是一个Python脚本,包含了lxml和cssselect包,从而能选取特定HTML元素。维基百科上有个网页列出了所有国家的边界线语国土面积的比率,下面我们来把比率信息提取出来吧
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -b -e 'table.wikitable & tr:not(:first-child)' | head
&!DOCTYPE html&
&td&1&/td&
&td&Vatican City&/td&
&td&3.2&/td&
&td&0.44&/td&
&td&7.2727273&/td&
1234567891011
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -b -e 'table.wikitable & tr:not(:first-child)' | head<!DOCTYPE html><html><body><tr><td>1</td><td>Vatican City</td><td>3.2</td><td>0.44</td><td>7.2727273</td></tr>
-b命令让scrape包含和标签,因为有时xml2json会需要它把HTML转换成JSON。
5. xml2json – 把XML转换成JSON
如名字所说,这工具就是把XML(HTML也是一种XML)转换成JSON的输出格式。因此,xml2json是连接scrape和jq之间的很好的桥梁。
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -be 'table.wikitable & tr:not(:first-child)' | xml2json | jq -c '.html.body.tr[] | {country: .td[1][], border: .td[2][], surface: .td[3][], ratio: .td[4][]}' | head
{&ratio&:&7.2727273&,&surface&:&0.44&,&border&:&3.2&,&country&:&Vatican City&}
{&ratio&:&2.2000000&,&surface&:&2&,&border&:&4.4&,&country&:&Monaco&}
{&ratio&:&0.6393443&,&surface&:&61&,&border&:&39&,&country&:&San Marino&}
{&ratio&:&0.4750000&,&surface&:&160&,&border&:&76&,&country&:&Liechtenstein&}
{&ratio&:&0.3000000&,&surface&:&34&,&border&:&10.2&,&country&:&Sint Maarten (Netherlands)&}
{&ratio&:&0.2570513&,&surface&:&468&,&border&:&120.3&,&country&:&Andorra&}
{&ratio&:&0.2000000&,&surface&:&6&,&border&:&1.2&,&country&:&Gibraltar (United Kingdom)&}
{&ratio&:&0.1888889&,&surface&:&54&,&border&:&10.2&,&country&:&Saint Martin (France)&}
{&ratio&:&0.1388244&,&surface&:&2586&,&border&:&359&,&country&:&Luxembourg&}
{&ratio&:&0.0749196&,&surface&:&6220&,&border&:&466&,&country&:&Palestinian territories&}
1234567891011
curl -s 'http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio' | scrape -be 'table.wikitable & tr:not(:first-child)' | xml2json | jq -c '.html.body.tr[] | {country: .td[1][], border: .td[2][], surface: .td[3][], ratio: .td[4][]}' | head{"ratio":"7.2727273","surface":"0.44","border":"3.2","country":"Vatican City"}{"ratio":"2.2000000","surface":"2","border":"4.4","country":"Monaco"}{"ratio":"0.6393443","surface":"61","border":"39","country":"San Marino"}{"ratio":"0.4750000","surface":"160","border":"76","country":"Liechtenstein"}{"ratio":"0.3000000","surface":"34","border":"10.2","country":"Sint Maarten (Netherlands)"}{"ratio":"0.2570513","surface":"468","border":"120.3","country":"Andorra"}{"ratio":"0.2000000","surface":"6","border":"1.2","country":"Gibraltar (United Kingdom)"}{"ratio":"0.1888889","surface":"54","border":"10.2","country":"Saint Martin (France)"}{"ratio":"0.1388244","surface":"2586","border":"359","country":"Luxembourg"}{"ratio":"0.0749196","surface":"6220","border":"466","country":"Palestinian territories"}
当然JSON数据之后可以输入给json2csv。
6. sample – 用来debug
我写的第二个工具是sample。(它是依据bitly的写的,bitly还有好多其他工具值得一看。)当你处理大量数据时,debug管道非常尴尬。这时,sample就会很有用。这个工具有三个用处:
逐行展示数据的一部分。
给在输出时加入一些延时,当你的数据进来的时候有些延时,或者你输出太快看不清楚时用这个很方便。
限制程序运行的时间。
下面的例子展现了这三个功能:
seq 10000 | sample -r 20% -d 1000 -s 5 | jq '{number: .}'
seq 10000 | sample -r 20% -d 1000 -s 5 | jq '{number: .}'
这表示,每一行有20%的机会被给到jq,没两行之间有1000毫秒的延迟,5秒过后,sample会停止。这些选项都是可选的。为了避免不必要的计算,请尽早sample。当你debug玩之后你就可以把它移除了。
7. Rio – 在处理中加入R
这篇文章没有R就不完整。将R/Rscript加入处理不是很好理解,因为他们并没有标准化输入输出,因此,我加入了一个命令行工具脚本,这样就好理解了。
Rio这样工作:首先,给标准输入的CSV被转移到一个临时文件中,然后让R把它读进df中。之后,在-e中的命令被执行。最后,最后一个命令的输出被重定向到标准输出中。让我用一行命令展现这三个用法,对每个部分展现5个数字的总结:
curl -s '/pydata/pandas/master/pandas/tests/data/iris.csv' & iris.csv
& iris.csv Rio -e 'summary(df)'
SepalLength
SepalWidth
PetalLength
PetalWidth
1st Qu.:5.100
1st Qu.:2.800
1st Qu.:1.600
1st Qu.:0.300
Median :5.800
Median :3.000
Median :4.350
Median :1.300
3rd Qu.:6.400
3rd Qu.:3.300
3rd Qu.:5.100
3rd Qu.:1.800
Length:150
Class :character
:character
12345678910111213
curl -s '/pydata/pandas/master/pandas/tests/data/iris.csv' & iris.csv< iris.csv Rio -e 'summary(df)'&&SepalLength&&&&&&SepalWidth&&&& PetalLength&&&&&&PetalWidth&&
Min.&& :4.300&& Min.&& :2.000&& Min.&& :1.000&& Min.&& :0.100&& 1st Qu.:5.100&& 1st Qu.:2.800&& 1st Qu.:1.600&& 1st Qu.:0.300&& Median :5.800&& Median :3.000&& Median :4.350&& Median :1.300&& Mean&& :5.843&& Mean&& :3.054&& Mean&& :3.759&& Mean&& :1.199&& 3rd Qu.:6.400&& 3rd Qu.:3.300&& 3rd Qu.:5.100&& 3rd Qu.:1.800&& Max.&& :7.900&& Max.&& :4.400&& Max.&& :6.900&& Max.&& :2.500&&&&&& Name&&&&&&&&&& Length:150&&&&&&&& Class :character&& Mode&&:character
如果加入了-s选项,sqldf包会被引入,这样CSV格式就会被输出,这可以让你之后用别的工具处理数据。
& iris.csv Rio -se 'sqldf(&select * from df where df.SepalLength & 7.5&)' | csvlook
|--------------+------------+-------------+------------+-----------------|
SepalLength | SepalWidth | PetalLength | PetalWidth | Name
|--------------+------------+-------------+------------+-----------------|
| Iris-virginica
| Iris-virginica
| Iris-virginica
| Iris-virginica
| Iris-virginica
| Iris-virginica
|--------------+------------+-------------+------------+-----------------|
1234567891011
< iris.csv Rio -se 'sqldf(&select * from df where df.SepalLength & 7.5&)' | csvlook|--------------+------------+-------------+------------+-----------------||&&SepalLength | SepalWidth | PetalLength | PetalWidth | Name&&&&&&&&&&&&||--------------+------------+-------------+------------+-----------------||&&7.6&&&&&&&& | 3&&&&&&&&&&| 6.6&&&&&&&& | 2.1&&&&&&&&| Iris-virginica&&||&&7.7&&&&&&&& | 3.8&&&&&&&&| 6.7&&&&&&&& | 2.2&&&&&&&&| Iris-virginica&&||&&7.7&&&&&&&& | 2.6&&&&&&&&| 6.9&&&&&&&& | 2.3&&&&&&&&| Iris-virginica&&||&&7.7&&&&&&&& | 2.8&&&&&&&&| 6.7&&&&&&&& | 2&&&&&&&&&&| Iris-virginica&&||&&7.9&&&&&&&& | 3.8&&&&&&&&| 6.4&&&&&&&& | 2&&&&&&&&&&| Iris-virginica&&||&&7.7&&&&&&&& | 3&&&&&&&&&&| 6.1&&&&&&&& | 2.3&&&&&&&&| Iris-virginica&&||--------------+------------+-------------+------------+-----------------|
如果你用-g选项,ggplot2会被引用,一个叫g得带有df的ggplot对象会被声明。如果最终输出是个ggplot对象,一个PNG将会被写到标准输出里。
& iris.csv Rio -ge 'g+geom_point(aes(x=SepalLength,y=SepalWidth,colour=Name))' & iris.png
< iris.csv Rio -ge 'g+geom_point(aes(x=SepalLength,y=SepalWidth,colour=Name))' & iris.png
我制作了这个工具,为了可以在命令行中充分利用R的力量。当然它有很多缺陷,但至少我们不需要再学习gnuplot了。
别人建议的命令行工具
下面是其他朋友通过twitter和hacker news推荐的工具,谢谢大家。
我介绍了七个我日常用来处理数据的命令行工具。虽然每个工具各有所长,我经常是将它们与传统工具(如grep, sed, 和awk)一起使用。将小工具结合起来使用组成一个大的流水线,这就是其用处所在。
不知你们对这个列表有什么想法,你们平时喜欢用什么工具呢。如果你们也做了什么好玩的工具,欢迎将其加入数据科学工具包。
如果你不认为自己能制作工具,也不用担心,下次当你写一个异乎寻常的命令行流水线时,记得将它放到一个文件里,加一个#!,加一些参数,改成可执行文件,你就做成一个工具啦~
虽然命令行工具的强大在获取、处理和探索数据时不容小觑,在真正的探索、建模和理解翻译数据时,你还是最好在科学计算环境下进行。比如或者+。
如果感兴趣,欢迎。
关于作者:
可能感兴趣的话题
非常好的介绍~~太有用了~~
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线

我要回帖

更多关于 美国data science排名 的文章

 

随机推荐