- ?
用R语言做数据分析——导出数据
心心念
展开
我们之前学习过将各种数据导入R的方法。但有时候可能要做相反的事情——把R中的数据导出去——以实现数据的保存或者是在外部程序中使用。
符号分隔文本文件
可以用write.table()函数将R对象输出到符号分隔文件中。函数使用方法:
write.table(x, outfile, seq=delimiter, quote=TRUE, na="NA")
其中x是输出的对象,outfile是目标文件,比如:
write.table(mydata, "mydata.txt", seq=",")
会将mydata数据集输出到当前目录下逗号分隔的mydata.txt文件中,用路径可以将输出文件保存到任何地方。用seq="\"替换seq=",",数据就会保存到制表符分隔的文件中。默认情况下,字符床是放在双引号中,缺失值用NA表示。
Excel电子表格
xlsx包中的write.xlsx()函数可以将R数据框写入到Excel 2007文件中。使用方法是:
library(xlsx)
write.xlsx(x, outfile, col.Names=TRUE, row.names=TRUE, sheetName="Sheet 1", append=FALSE)
例如这条语句:
write.xlsx(mydata, "mydata.xlsx")
会将mydata数据框保存到当前目录下的Excel文件mydata.xlsx的工作表(默认是Sheet 1)中。默认情况下,数据集中的变量名称会被作为电子表格头部,行名称会放在电子表格的第一列。函数会覆盖已经存在的mydata.xlsx文件。更多详情,请参考xlsx扩展包文档。
统计学程序
foreign包中的write.foreign()可以将数据框导出到外部统计软件中。这里会创建两个文件,一个是保存数据的文本文件,另一个是指导外部统计软件导入数据的编码文件。使用格式如下:
write.foreign(dataframe, datafille, codefile, package=package)
例如,下面这段代码:
library(foreign)
write.foreign(mydata, "mydata.txt","mycode,sps", package="SPSS")
会将mydata数据框导出到当前目录的纯文本文件mydata.txt中,同时还会生成一个用于读取该文本文件的SPSS程序mycode.sps。package参数的其他值还有“SAS”和“Stata”。
相关阅读网站:https://cran.r-project.org/doc/manuals/R-data.pdf
- ?
好程序员 互联网寒冬,大数据却一枝独秀,你的人生巅峰来了
小蜗牛
展开
互联网在经历前几年的繁荣之后,现在开始进入寒冬,资本家不再像以前那样大胆地投资,纷纷攥紧自己的口袋。但是从整个互联网行业来看,大数据却一枝独秀,逐渐崛起。
我们正处于一个大数据飞速发展的时代,我们所做的一切事,不论是在互联网中或者是互联网之外,都会留下数字的痕迹。比如刷卡购物,网络搜索,手机上网,乃至在网上每一个小小的点击都会被一一记录下来。各行各业,大数据技术应用也越来越广泛,对于大数据人才的需求也越来越大。
如果你学的是大数据,那么恭喜你,你的发展良机来了。你将有可能成为大数据工程师,走向人生巅峰。
目前国内的数据挖掘人员工作领域大致可分为三类。
1、数据分析师:在拥有行业数据的电商、金融、电信、咨询等行业里做业务咨询,商务智能,出分析报告。
2、数据挖掘工程师:在多媒体、电商、搜索、社交等大数据相关行业里做机器学习算法实现和分析。
3、科学研究方向:在高校、科研单位、企业研究院等高大上科研机构研究新算法效率改进及未来应用。
说说各工作领域需要掌握的技能。
(1).数据分析师
· 需要有深厚的数理统计基础,但是对程序开发能力不做要求。
· 需要熟练使用主流的数据挖掘(或统计分析)工具如Business Analytics and Business Intelligence Software(SAS)、SPSS、EXCEL等。
· 需要对与所在行业有关的一切核心数据有深入的理解,以及一定的数据敏感性培养。
· 经典图书推荐:《概率论与数理统计》、《统计学》推荐David Freedman版、《业务建模与数据挖掘》、《数据挖掘导论》、《SAS编程与数据挖掘商业案例》、《Clementine数据挖掘方法及应用 》、《Excel 2007 VBA参考大全》、《IBM SPSS Statistics 19 Statistical Procedures Companion》等。
(2).数据挖掘工程师
· 需要理解主流机器学习算法的原理和应用。
· 需要熟悉至少一门编程语言如(Python、C、C++、Java、Delphi等)。
· 需要理解数据库原理,能够熟练操作至少一种数据库(Mysql、SQL、DB2、Oracle等),能够明白MapReduce的原理操作以及熟练使用Hadoop系列工具更好。
· 经典图书推荐:《数据挖掘概念与技术》、《机器学习实战》、《人工智能及其应用》、《数据库系统概论》、《算法导论》、《Web数据挖掘》、《 Python标准库》、《thinking in Java》、《Thinking in C++》、《数据结构》等。
(3).科学研究方向
· 需要深入学习数据挖掘的理论基础,包括关联规则挖掘 (Apriori和FPTree)、分类算法(C4.5、KNN、Logistic Regression、SVM等) 、聚类算法 (Kmeans、Spectral Clustering)。目标可以先吃透数据挖掘10大算法各自的使用情况和优缺点。
· 相对SAS、SPSS来说R语言更适合科研人员The R Project for Statistical Computing,因为R软件是完全免费的,而且开放的社区环境提供多种附加工具包支持,更适合进行统计计算分析研究。虽然目前在国内流行度不高,但是强烈推荐。
· 可以尝试改进一些主流算法使其更加快速高效,例如实现Hadoop平台下的SVM云算法调用平台--web 工程调用hadoop集群。
· 需要广而深的阅读世界著名会议论文跟踪热点技术。如KDD,ICML,IJCAI,Association for the Advancement of Artificial Intelligence,ICDM 等等;
· 可以尝试参加数据挖掘比赛培养全方面解决实际问题的能力。如Sig KDD ,Kaggle: Go from Big Data to Big Analytics等。
· 可以尝试为一些开源项目贡献自己的代码,比如Apache Mahout: Scalable machine learning and data mining ,myrrix等(具体可以在SourceForge或GitHub.上发现更多好玩的项目)。
· 经典图书推荐:《机器学习》 《模式分类》《统计学习理论的本质》《统计学习方法》《数据挖掘实用机器学习技术》《R语言实践》,英文素质是科研人才必备的《Machine Learning: A Probabilistic Perspective》《Scaling up Machine Learning : Parallel and Distributed Approaches》《Data Mining Using SAS Enterprise Miner : A Case Study Approach》《Python for Data Analysis》等。
任何一项工作都不是那么简单,而那些年薪几十万上百万的大数据工程师,也是一点点学过来的,所以,当你决定了做大数据以后,机会已经来了,剩下的要靠你自己努力了。
- ?
不会学习R?让他们帮你理清思路!
进行时
展开
人们学习R语言常见的问题之一是缺乏结构化学习道路。他们不知道从哪里开始,如何进行,选择哪一条?尽管在互联网上有大量好的免费资源可用,但是,这可能既是压倒性的也是令人困惑的。
创建这个R学习路径,分析师Vidhya和DataCamp坐下来一起来选择一组全面的学习资源来帮助你从头学习R。对于任何刚接触数据科学或R的人来说,这种学习路径是一个不错的推荐,如果你是一个经验丰富的用户会对学习一些最新知识。
这将帮助你快速、高效地学习R。R学习会变得有趣 !
步骤
0
:热身
在开始你的旅程之前,回答的第一个问题是:为什么使用R ?或R为什么是有用的?
R是一个快速增长的开源商业软件包类似SAS,STATA和SPSS。就业市场对R技能的需求迅速增长,最近微软等公司承诺致力于R为数据科学的通用语言。
看这90秒Revolution Analytics公司视频了解R将会多么有用。顺便说一句,Revolution Analytics刚被微软收购。
1
:安装您的机器
安装R最简单的方法是,从全面R归档网络(CRAN)下载在本地计算机上。您可以Linux,Mac和Windows之间不同版本间进行选择。
虽然你可以考虑使用基本的R控制台,我们推荐您安装R的一个集成开发环境(IDE)。最广为人知的IDE是RStudio,使R编程更容易和更快,因为它允许输入多行代码,处理代码块,安装和维护包,在编程环境里更高效。替代RStudio框架Architect,是一个基于eclipse工作台。
(需要一个GUI吗?检查 R-commander or Deducer)
任务
·1、安装R和RStudio。
·2、安装包Rcmdr, rattle, and Deducer。建议安装所有推荐包或者依赖关系的包括GUI。
·3、使用库命令加载这些包和开放这些gui。
2
:学习基本的
R
语言
你应该先了解该语言的基本知识,各种包和数据结构。
如果你喜欢一个在线互动学习环境学习R语法,有DataCamp这个免费的在线教程。继续本课程:中级R编程。另一种学习工具是这个在线版本的升级版,您可以在类似于RStudio的环境中学习的R这个在线版本。
除了这些互动的学习环境,你也可以选择在线课程如Coursera 或EDX报名参加。除了这些在线资源,你也可以考虑以下优秀的书本资源:
·免费的“ introduction to R manual by CRAN ”
·Jared Lander的“R for Everyone”
·Quick-R
特别学习:读取表数据,数据帧,表,汇总,描述,装卸和安装软件包,使用绘图命令数据可视化。
任务:
·1、参加 DataCamp免费在线R教程和熟悉基本R语法
·2、 在http://github上创建一个GitHub账户
·3、学习通过谷歌搜索的帮助来解决上述软件包安装
·4、安装包和学习R编程(见上文)
3
:了解
社区
R的迅速增长,获得如此巨大的成功的原因,是因为其强大的社区。在R包生态系统中心。这些包可以从CRAN下载,或从Bioconductor、github和bitbucket。在Rdocumentation可以轻松搜索从CRAN,github上和Bioconductor获取包,将满足。
接下来的包生态系统的R,在努力学习R过程中你也可以很容易地找到帮助和反馈。首先,你可以通过命令来访问内置帮助系统?例如函数名称。也有分析师Vidhya表示,Stack Overflow 认为 R是增长最快速的语言之一。最终,有R爱好者运行众多的博客,会聚合成R-博客。
·通过访问CRAN任务视图理解R包生态系统
·为每日简报注册http://r-bloggers
4
:导入并处理数据
导入和处理数据科学工作中的数据是重要的步骤。R允许不同数据格式的导入使用特定的包可以简化你的工作:
·readr导入文本文件
·readxl让excel文件导入R
·还有 haven包允许您导入SAS, STATA and SPSS格式数据文件到R。
·数据库连接可以通过包RMySQL和RpostgreSQL连接,使用DBI访问和操作
·rvest 用户网络爬虫
一旦你的数据在你的工作环境已经准备好,开始使用这些包处理它
·tidyr包清洗数据。
·stringr包进行字符串操作。
·处理数据帧对象,学习dplyr包的来龙去脉(尝试这门课)。
·需要执行大量数据角力的任务吗?查看data.table包
·执行时间序列分析?尝试包像像zoo, xts 和 quantmod。
·掌握通过 “导入数据到R”课程提到的包,或阅读这些文章1,2,3 and 4。
·看到这个RStudio视频“Data Wrangling with R ”。
·阅读和练习如何使用包像dplyr, tidyr
,
和data.table。
5
:有效的数据可视化
没有比创建自己的数据可视化更大令人满意的了。然而,可视化数据作为一门技能更像一种艺术,因为它是一种技巧。值得一读是“可视化定量数据”的Edward Tufte原则,或由Stephen Few的“the pitfalls on dashboard design ”。也看看Nathan Yau的博客,从而带来灵感,她在创建可视化时使用(主要)R。
5.1
:情节无处不在
R提供多种方式创建图表。基本图形的标准方法是利用在R,然而,有更好的工具(或包)来创建你的图表,以更简单的方式,呈现的结果更美丽:
·开始学习画图的语法,一个可行的方法来做R数据可视化。
·如果可能,你想成为认真对待R数据可视化,掌握的最重要的包就是GGPLOT2包。 GGPLOT2是如此受欢迎,以至于网络上有大量的资源,如网上GGPLOT2教程,一个方便的小抄本或由哈德利韦翰著作的这本书。
·一个包,如ggvis允许您使用图形的语法创建交互式Web图形(tutorial)
·知道汉斯·罗斯林这个TED演讲?了解如何与googleVis(与谷歌图表的接口)重新创建。
·如果你遇到绘制你的数据这篇文章可能有所帮助。
看到更多的可视化选项在这个CRAN任务视图
或者看看“R语言可视化指导”
5.2
:世界各地的地图
对可视化数据空间分析感兴趣吗?开始学习“Introduction to visualising spatial data in R”,在R开始使用这两个包:
·可视化空间数据和模型的静态地图来源,如谷歌地图和ggmap公开街道地图
·阿里Lamstein choroplethr
·tmap包
5.3:HTML
小部件
一个非常有前途的的可视化R新工具是使用HTML小部件。HTML小部件允许您创建交互式web可视化的一种简单的方法(参见本教程)和掌握这种类型的可视化很可能成为一个必须R技能。与这些可视化打动你的朋友和同事:
·动态地图传单
·使用dygraphs时间序列数据图表
·互动表(datatable中)
·R制图的图表和流程图
·d3散点图、线路图、和MetricsGraphics直方图
·确保你有理解图形的语法原则
·ggplot2教程
·RStudio教程操作html小部件
6
:数据挖掘和机器学习
对于统计学我们建议这些资源:
·Andrew Conway’s Introduction to statistics with R (online)
·Data Analysis and Statistical Inference by Duke University (online)
·Practical Data Science With R (book)
·Data Science Specialization by Johns Hopkins (online)
·A Survival Guide to Data Science with R (book)
如果你想加强你的机器学习技能,考虑从这些教程:
·Essentials of Machine Learning Algorithms
·Bike Sharing Competition – Complete Solution in R
·Kaggle Machine Learning course
·Machine Learning Mastery
·Intro To Machine Learning
请一定要看到在相关CRAN任务视图 - R提供的各种机器学习的包。
·开始统计入门课程之一
·报名参加免费的kaggle机器学习课程。
·如果你想要一本关于使用R数据挖掘书籍,他就在 Rattle
·你可以从这本小册子学习时间序列预测- A Little Book for Time Series in R 。
7
:报告结果
和数据科学爱好者一同交流你的结果、分享你的见解和分析本身同样重要。幸运的是,R有一些非常漂亮的工具可以这样做,可以节省你大量的时间。
第一个为 R Markdown,基于knitr和pandoc可重复的方式报告数据分析结果使它一个伟大的工具。随着R降价,R生成最终的文件,替换生成结果的R代码。这个文件可以是一个html、word、PFD 、ioslides等格式。您可以通过本教程学习更多关于它的内容,并用这个小抄本作为参考。
和 R Markdown相近有ReporteRs。ReporteRs是一个R包创建的微缩软件((如Word docx and Powerpoint pptx)和html文件,运行在Windows、Linux、Unix和Mac OS系统。就像R Markdown的理想工具,自动生成R报告 。
最后,Shiny,目前激动人心的R工具之一。Shiny使得它非常方便地与R构建交互式Web应用程序,它可以让你把你的分析到交互式Web应用程序,而无需了解HTML,CSS或JavaScript。如果你想开始使用Shiny(相信我们,你应该!),在RStudio学习门户网站。
·创建您的第一个使用RMarkdown做的交互式报告或ReporteRs
·尝试建立你的第一个Shiny应用
额外步骤:练习
你通过实践只会成为一个伟大的程序员。因此,一定要定期处理新数据科学的挑战。我们建议你们最好在Kaggle:https://kaggle/c/titanic-gettingStarted,可以开始与同样的数据科学家竞赛。
现场挑战测试你的R技能——实践问题
8
:时间序列分析
R有一个专门的时间序列任务视图。如果你在R想做一些时间序列分析,这绝对是开始的地方。你很快就会发现工具的范围和深度是巨大的。
你会轻松地学习R语言时间序列分析,不会耗尽网络资源。好的出发点都是一本R语言时间序列小书,或退房预测:原理和实践。在包方面,你需要确保你熟悉ZOO包和XTS。ZOO为您提供了节省时间序列对象格式过程,而XTS让你处理时间序列数据集的工具。
替代资源:关于时间序列的综合教程
·学习一本上面列出的时间系列推荐教程,准备好开始你自己的分析。
·使用包 quantmod or quandl下载等财务数据,开始自己的时间序列分析。
·使用包如dygraphs创造惊人的时间序列数据的可视化和分析。
额外步骤——文本挖掘也很重要!
学习文本挖掘,您可以参考文本挖掘分析模块(analytics edge course)。不过,课程存档,您仍然可以访问教程。
实践
·文本挖掘竞赛- R中的完整解决方案
9
:成为一个
的主人
既然您已经学到的大部分数据分析使用R,是时候给一些高级主题。很有可能你已经知道这些,但请也看看这些教程。
·Hadley Wickham的Advanced R
·使用R与Hadoop, MongoDB or NoSQL
·微软的RevoScaleR包 (以前Revolution Analytic公司的)
你想应用你的分析技能和测试你的潜力吗?参与我们的活动,与许多来自世界各地数据科学家们一起比赛吧。
原文链接:https://analyticsvidhya/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-r-data-science/
翻译:数据分析网翻译小组,翻译成员——Blanche
- ?
Apache顶级开源项目——机器学习库MADlib简介与应用实例
笑容
展开
内容来源:2017年11月4日,Pivotal Greenplum Madlib研发工程师梅靖怡在“Greenplum和机器 学习客户研讨会”进行《Machine Learning on Greenplum—MADlib简介与应用实例》演讲分享。IT 大咖说(ID:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
阅读字数:4809 |6分钟阅读
获取嘉宾演讲视频回放及PPT,请复制链接:http://t/RFrpsIL,粘贴至浏览器即可。
摘要
Apache MADlib是Pivotal与UCBerkeley合作的一个开源机器学习库,提供了精确的数据并行实现、统计和机器学习方法对结构化和非结构化数据进行分析。MADlib提供了丰富的分析模型,包括回归分析,决策树,随机森林,贝叶斯分类,向量机,风险模型,KMEAN聚集,文本挖掘,数据校验等。MADlib支持Greenplum,PostgreSQL 以及 Apache HAWQ, In-Database Analytics的特性使其大大扩展了数据库的分析功能,充分利用MPP架构使其能够快速处理海量数据集。本主题将为大家介绍MADlib的基本架构,工作原理及特性,分享MADlib在互联网,金融,零售等行业的用户案例,展望In-Database Machine Learning的广阔前景。
MADlib简介
MADlib是一个基于SQL的数据库内置的可扩展机的器学习库。让我们来逐一解释这个定义。说起机器学习库,同行的朋友应该比较熟悉python上的scikit-learn。我们的库实现了类似的功能,但是我们的语法是基于SQL的,也就是说,你可以用select + function name的方式来调用这个库。这就意味着,所有的数据调用和计算都在Database内完成而不需要数据的导入导出。由于应用在大规模并行处理的数据库内,它的可扩展性也非常好,能够处理较大量级的数据。
我们的整个项目和代码是在Apache上开源的,到目前为止,我们已经有6个release, 并且于今年从阿帕奇孵化器毕业,成为apache的顶级项目。
我们是一个在大规模并行处理系统上的可扩展应用,目前支持PostgreSQL和Pivotal Greenplum。
MADlib具有强大的数据分析能力。我们支持大量的机器学习,图形分析和统计分析算法。
历史回顾
MADlib创始于2011年,当时属于EMC/Greenplum,后来Greenplum变成了pivotal的Greenplum。主要由UC Berkeley的一位学者,Joe Hellerstein发起,Stanford, University of Wisconsin-MADISON和University of Florida也有参与。
MAD这个名字来源于三个词。
M代表Magnetic,有吸引力的,意味着这个系统能够吸引很多的用户和数据。传统的数据仓库对新数据不够友好,导入的数据往往需要非常干净和完整。然而MADlib可以做到即使在数据不够整齐的情况下,也能帮助数据科学家进行一些有意义的计算和推断。
A代表Agile,敏捷,意味着这个系统能够帮助数据科学家快速有效地处理数据。这有赖于在MADlib在数据库内的集成。
D代表Deep,深入。在大规模并行集成系统上的应用使得数据科学家能够使用完整的大数据,而不是在单核的内存内对数据集的子集进行分析,从而提高了分析的精准性。
三个字母连在一起,mad这个词在英语中除了我们所熟知的疯狂这个意思,还有一个意思是“极好的”。我们希望MADlib能给数据科学家们提供一个极好的机器学习和数据分析平台。
MADlib用户
MADlib有非常广泛的用户群体。
目前,我们的用户涉及金融,保险,互联网,医疗,媒体,娱乐,汽车,制造等等行业。可以说我们提供的机器学习方法能够覆盖大部分行业的需求。
MADlib功能
如上图所示,这个列表是目前MADlib所支持的算法。
监督学习,我们支持Neural Network, SVM, regression, decision tree;非监督学习,我们支持clustering,topic modeling等;图形处理,我们支持apsp, bfs等等。
另外还有时间序列处理,模型选择,基本统计和数据类型转换。到目前为止我们支持了超过50种算法,是一个复杂而成熟的数据科学学习库,能够支持各种复杂的机器学习场景。
MADlib特性
更好的并行度。我们在算法设计阶段就充分考虑了与大规模并行处理系统,基于不同的算法,设计不同的分布方式来保证更快的并行处理速度。
更好的可扩展性。随着数据量的增长,我们的扩展性非常稳定。
更高的预测精度。处理大数据使得更多有效数据被利用,从而实现更加精确的预测效果。
我们是Apache ASF上的顶级开源项目,我们的开发是在Pivotal的支持下基于Apache community的,与社区有非常好的互动。
MADlib的工作原理
相信很多Greenplum用户对这幅图很熟悉,这是Greenplum的架构,当一个query进来的时候,master server会对query进行处理,按一定规则把query分配到多个segment上并行处理,最后的结果再返回master server。
MADlib就是构建在Greenplum这个架构之上的。MADlib通过定义postgres上的UDA和UDF建立in-database function。当我们用sql, r调用MADlib的时候,MADlib会首先进行输入的有效性判断和数据的预处理,将处理后的query传给Greenplum, 之后所有的计算在Greenplum内执行。
执行流程
上图中是整个过程的执行流程。
在客户端,我们可以使用jupyter, zeppelin, psql等等工具连接数据库并调用MADlib function,MADlib处理后根据算法生成多个query传入database, 之后Greenplum执行query并返回String, String一般是一个或多个存放结果的表。
MADlib Architecture
这是MADlib的基本架构,我们的user interface就是sql, 代码的上层主要是python, 会做一些input validation和pre-processing. 我们调用plpy来执行查询。代码的中间层和底层主要是c++, 我们用c++来调用eigen libraray. Eigen是C++里处理代数和几何的包。C++也调用了c的API来和DB进行交流。
示例– PageRank
下面是一个MADlib使用示例,以pagerank这个算法为例。
PageRank是一种由搜索引擎根据网页直接相互的超链接来进行计算的技术,是网页排名的一个重要算法,以google创始人Larry Page的名字来命名。
在MADlib中,计算一个图的pagerank,需要两个表格作为输入数据,第一个表格是vertex(节点),用来保存节点的信息,第二个表是edge(边),用来保存节点指向节点的情况。使用MADlib调用pagerank的步骤如下:select MADlib.pagerank(),这里需要几个输入。第一个输入就是vertex表,第二个输入是vertex id这一栏在该表中的名称,在示例中的这个vertex表里,这就是id这一栏。第三个输入是edge table这张表的名称,第四个输入,指出边的起点和终点所对应的栏在表里的名称,最后一个输入是用户定义的输出表格,计算结果将返回这个表格。
上图是计算结果,查看pagerank_out这张表格,可以看到每个节点的pagerank分数。另外,我们有一个表格,pagerank_out_summary,存放了收敛迭代的次数,在这个例子中,计算迭代了16次之后收敛并返回结果。
可扩展性
MADlib具有良好的可扩展性,能够处理较大量级的数据。以pagerank为例,这张图显了随着边数的增加,完成计算所需要的时间。我们可以看到,1亿个顶点,从6亿条边到50亿条边,运行时间几乎保持了线性增长。
这是SVM的Performance
我们可以看到在一亿条记录范围内,运行时间也是接近线性的增长。对一亿条记录的处理可以在10分钟内完成。
以上就是对MADlib的初步介绍,相信大家已经对MADlib有了一个初步的了解。接下来是两个用户案例。
用户案例1 -Greenplum + MADlib助力邮件营销
首先介绍一个下案例的背景。我们的客户是某大型跨国多元化传媒和娱乐公司,是Greenplum的用户。
在这个案例中,他们想要提高邮件营销的精准度。他们面临的主要问题有:邮件广告点击预测模型不够精准,需要更好的模型和营销策略。其次,他们现有的数据分析流程比较繁琐,速度较慢并且有很多手工的步骤,容易出错。在与Pivotal Data Science Team合作之后,我们为他们提供了一套解决方案。首先,我们充分利用了MADlib的多种功能,简化了整个data pipeline,用MADlib重新建模和预测,并且实现了流程的全自动化。
这次合作的影响非常显著,首先,对于邮件点击率,我们有了更快,更高效和更精准的建模和预测,其次,该客户一直是Greenplum的用户,但对Greenplum內建的各种资源并没有充分利用,这次合作让他们看到了in-database analytics的高效和快捷,使得他们实现了in-Greenplum analytics一体化。
客户的数据源包含了以下信息:user 在mobile 端的购买,预订,注册,邮件营销历史,网页浏览历史,地理信息等等,数据量是TB级别,总共的特征超过1000项。整个过程都在Greenplum这个平台上进行。建模工具主要是MADlib,以及一些PL/pgSQL。
以下是该客户当时的数据分析工作流程。原始的数据都导入并存在Greenplum中。之后,数据被导入SAS中,进行了数据清洗和准备。再之后数据又从SAS中导入了EXCEL,在EXCEL中建模计算Information Value 和Weight of Evidence, 即信息量和证据权重。之后,数据被导回SAS,计算Pairwise Correlation,一种变量相关性。根据计算的结果,在EXCEL中去除高度相关的变量。以上步骤都是为了减少变量的数量,因为SAS上并不能很好地处理超过1000个的变量。这之后,数据被再次导回SAS,在上面进行逻辑回归,最后把分析结果导回Greenplum。由于SAS能够处理的数据量有限,客户只能用Sample进行建模,所以在最后,数据又导回Excel进行KS-Score Test, 进行Model Validation。KS-Score Test验证的是样本分布是否能有效代表总体分布,从而验证模型的有效性。经过Validation之后结果最终被导回Greenplum,手动用该模型对新数据进行预测。
从这个流程中我们能看到一些问题:
首先,很明显的,数据在Greenplum, SAS和Excel之间多次导入导出,比较繁琐,这期间也会存在数据格式转换,数据丢失等等问题。
其次,我们可以看到,在SAS和Excel之间来回的好几个步骤其实都是为了降低维度,减少SAS上的变量数,由于许多变量没有得到利用,这从一定程度上降低了模型预测的准确度。
最后,由于SAS和EXCEL能处理的数据有限,客户只能用样本数据来进行建模,没有充分利用Greenplum里的大数据,这也影响了建模的精确度。
在与Pivotal Data Science合作之后,我们建立了一个新的工作流程。
可以看到,所有SAS和EXCEL内的步骤都被移除了,整个流程都在Greenplum内完成。在存放好数据之后,首先,用MADlib的feature generation来提取特征,之后运调用不同的MADlib函数,计算Information Value, pairwise correlation,完成特征选择。建模阶段,直接调用相关的逻辑回归函数和elastic net,(用elastic net进行变量选择,然后建立逻辑回归)。验证阶段,MADlib提供了很多validation的函数,最后,MADlib函数可以对新的data进行预测。
从数据准备到特征选择,再到建模,验证和预测,MADlib提供了所有的相关函数。对比之前的步骤数量,也从8步变为了6步。另一个明显的优势是,这个模型用到了Greenplum里的所有数据,并且可以使用更多的feature来建模。
此次优化使得数据分析的整个环节效率都大大提高。在生成数据阶段。原来的时间是75分钟,优化后只需要8分钟,整个过程速度提高了9倍。Attribute compilation阶段,速度是之前的3倍,并且运用了更多的495个attribute。在计算Information Value阶段,平均每个变量的计算速度是之前的13.7倍。建模阶段,之前一次迭代需要大约30分钟,并且只能运用小于50个变量,而在优化之后,平均一次迭代只需要1.86分钟,并且可以用376个变量进行回归分析,平均每次迭代速度是原来的16倍。可以看到,整个数据分析流程得到了非常显著的提速。
这是建模的结果。
原始模型的准确率是99.7%,但是true positive rate是0%。也就是说,原始的模型只能很好地预测不会点击邮件的用户,而没有把握预测会点击邮件的用户。改良后的模型,准确率是62.8%,看上去好像降低了,但true positive rate是66%,这意味着,该模型有66%的把握预测出会点击邮件的用户,而这些用户正是给公司带来核心价值的用户群体。
用户案例2-基于API日志的金融产品用户分析
这个案例的用户是某大型跨国金融服务公司。他们的case主要是手机mobile app API的分析。
他们主要面临以下问题:1.如何利用API日志更好地理解不同种类的用户,2.如何更好地理解用户与APP的交互 3. 如何对实时API请求进行分类和安全检测 3. 现有API日志数据量很大,现有数据分析团队缺乏大数据分析技能。
在与Pivotal合作后,我们为他们提供了以下解决方案:使用MADlib进行聚类分析,建立一个sessionization模型。建立一个scoring pipeline,对新的访问进行评估,使用visualization tool更好地呈现结果。
这次合作的商业影响也是非常显著的。首先,我们针对不同的分析师建立了多个用户类型分类,能够及时把某种特定类型的用户信息传到相应的分析师手上。其次建立了实时访问安全评分系统,对可疑访问进行及时处理,最后使用Greenplum + MADlib的形式,使得大数据的得到了更加充分的挖掘。
这个项目的数据源主要包括用户的api 访问日志和customer profile,涉及45天的访问情况,50亿行数据,百万级别的用户信息。平台依然是Greenplum,建模主要用到了MADlib, PLR, PL/PYTHON和PDLTools。PDLTools是Pivotal data science 的另一套数据科学包。可视化主要在Tableau上进行。
如图所示是整个建模的过程。由于篇幅关系在此不做详述。
案例总结
首...
- ?
还在纠结 Python 的数据导入问题吗?有这张速查表就够啦
张二民
展开
雷锋网 AI 科技评论按:这是 Karlijn Willems 发布于 Medium 的一篇关于 Python 中数据导入问题的博客。Karlijn Willems 是来自于 DataCamp 的数据科学研究员。她在本文中介绍一份 Python 中数据导入操作的速查表,雷锋网 AI 科技评论对原文进行了编译。
借助这个 Python 速查表,你将拥有一份便捷的数据导入参考指南。该速查表全面涵盖了平面文件(Flat files)、其它软件所定义的原生文件类型以及关系型数据库数据的导入方法。
在你对数据进行清理、可视化等操作之前,我们首先需要实现的事情是使用 Python 导入数据。而众所周知,针对不同的数据文件存在着许多不同的导入方法。
但是,你最经常使用的库可能就是 Pandas 和 Numpy:Pandas 库是最受数据科学家喜爱的软件库之一,他们经常使用 Pandas 对数据进行操作和分析,然后再使用 matplotlib 进行数据可视化。而 Numpy 则是 Python 中进行科学计算的一个基础库,并且 Pandas 也是构建于 Numpy 之上的。
在这份数据导入速查表中,你将看到一些 Numpy 和 Pandas 的函数,以及使用 Python 语言编写的函数,这些都将帮助你更快捷地将数据导入 Python。
这份教程将帮助你快速学习和掌握将数据导入 Python 中的基础操作,以便于你可以对数据开展后续的清理和可视化等操作。
速查表传送门
这份速查表将引导你学习掌握如何将数据导入实验环境的基础:你不仅会学到如何导入诸如文本文件这样的平面文件,也能看到如何读取那些来自于特定软件的文件(比如 Excel、Stata、SAS 和 MATLAB)和关系型数据库。最重要的是,你将获得更多关于如何寻求帮助的指示,如何浏览文件系统以及如何开始探索数据信息。
总而言之,这里有你所需要的所有知识,来帮助你开启基于 Python 的数据科学学习大门。
如果你还想获得更多的知识,那么现在可以免费来学习这门《Python 数据导入课程》或者尝试一下我们的使用 Python 玩转 Excel 教学!
当然,别忘了我们为数据科学而制作的 Python 速查表,并且在我们的社区能获得更多类似的速查表!
备注:速查表传送门
Via Importing Data in Python Cheat Sheet,雷锋网编译
- ?
专题一 R语言编程从入门到实战—第1章(3) 数据导入
惑色
展开
工作目录
获取当前工作目录getwd( )
改变当前工作目录
setwd("C:UsersDocuments")
#注:R中斜杠为右斜杠
CSV文件导入
Data<-read.csv("mydata.csv",head=TRUE)
#head=TRUE/FALSE,表示文件第一行是否包含变量的名称;如果缺少,该值会依据文件格式自动确定
TXT文件导入
Data<-read.table("mydata.txt",sep="delimiter")
#sep为文件分隔符的类型,默认为sep=" "
EXCEL文件导入
#如果EXCEL工作簿中只有一个工作表,推荐导成csv文件导入
.xlsx文件
install.packages("xlsx")#安装需要的包
library(xlsx)#载入需要的包
Data<-read.xlsx("mydata.xlsx",n)#n表示获取工作簿中的第n个工作表
#可以使用?read.xlsx来获取更多的帮助文件,了解更多read.xlsx()的功能
.xls文件
install.packages("RODBC")
library(RODBC)
Databook<-odbcConnectExcel("mydata.xls")#获取Excel的工作簿
Datasheet<-sqlFetch(Data,"sheet1")#获取工作簿里面具体的表格
odbcClose(Databook)
从网页抓取数据
其中一种基本思路是使用函数readLines( )下载网页,然后使用grep( )和gsub( )等函数来处理它,对于结构复杂的网页,可以使用RCurl包和XML包来提取其中想要的信息
#之后会针对网页数据抓取与分析给出具体的实战案例
键盘输入数据
Data<-data.frame(age=numeric(0),gender=character(0))
Data<-edit(Data)
# edit( )函数可以启动数据编辑器,对数据框中的数据进行编辑,如下图所示:
R还可以导入XML数据,SPSS数据,SAS数据等,以及可以访问MySQL, Oracle, Microsoft Access等多种数据库,以下给出简单总结,感兴趣的读者可以进一步查询相关资料学习
R语言数据导入总结 - ?
专题一 R语言编程从入门到实战—第1章(3) 数据导入
Qoqa
展开
工作目录
获取当前工作目录
getwd( )
改变当前工作目录
setwd("C:\Users\Documents")
#注:R中斜杠为右斜杠\
CSV文件导入
Data<-read.csv("mydata.csv",head=TRUE)
#head=TRUE/FALSE,表示文件第一行是否包含变量的名称;如果缺少,该值会依据文件格式自动确定
TXT文件导入
Data<-read.table("mydata.txt",sep="delimiter")
#sep为文件分隔符的类型,默认为sep=" "
EXCEL文件导入
#如果EXCEL工作簿中只有一个工作表,推荐导成csv文件导入
.xlsx文件
install.packages("xlsx")
#安装需要的包
library(xlsx)
#载入需要的包
Data<-read.xlsx("mydata.xlsx",n)
#n表示获取工作簿中的第n个工作表
#可以使用?read.xlsx来获取更多的帮助文件,了解更多read.xlsx()的功能
.xls文件
install.packages("RODBC")
library(RODBC)
Databook<-odbcConnectExcel("mydata.xls")
#获取Excel的工作簿
Datasheet<-sqlFetch(Data,"sheet1")
#获取工作簿里面具体的表格
odbcClose(Databook)
从网页抓取数据
其中一种基本思路是使用函数
readLines( )
下载网页,然后使用
grep( )
和
gsub( )
等函数来处理它,对于结构复杂的网页,可以使用
RCurl包
XML包
来提取其中想要的信息
#之后会针对网页数据抓取与分析给出具体的实战案例
键盘输入数据
Data<-data.frame(age=numeric(0),gender=character(0))
Data<-edit(Data)
# edit( )函数可以启动数据编辑器,对数据框中的数据进行编辑,如下图所示:
R还可以导入XML数据,SPSS数据,SAS数据等,以及可以访问MySQL, Oracle, Microsoft Access等多种数据库,以下给出简单总结,感兴趣的读者可以进一步查询相关资料学习
- ?
这个工具能替代Excel,可惜90%的人都没用过!
Madeline
展开
日常工作中,涉及到数据的表格、计算、图表和分析,大家首选的一定是Excel。
但我也看到不少知友困惑于Excel的深入学习难度,鸡肋的大数据处理效率。
比如某同事为处理七八个维度,近万条数据崩溃不已;又有人几十万行的数据把电脑频频跑崩;再者,随着多任务线之间的交叉,汇总任务呈几何级数增加……
倒不是说Excel完成不了这类任务,如果是日常的表格记录、数据计算、Excel确实无法替代。但如果说做企业管理的业务报表、庞大而又复杂的数据分析、财务分析、预算编报,Excel就很不擅长了,因为其数据不统一,也没有独立的计算引擎,数据在各个Excel文件中独立存在,数据合并非常费事。
比如,最近我媳妇入职一家新公司,任某品牌的卖场数据专员。虽然之前也是这个行业的,可并不擅长数据报表的制作。
负责交接的同事是个毕业后就入职这家公司3年多的老员工,一直在做报表这块的工作,交接的时候为了更准确,我让媳妇使用录屏软件,将他每天要做的事情都录下来。
结果发现,这家伙从早上开始,就开始问信息部要数据,然后用excel各种复制、粘贴、求和、求百分比、vlookup、再复制、粘贴、求和、求百分比、vlookup、删除、调整……,几个小时后,第一张报表诞生了……
看了录像后的我,整个人都是崩溃的,这也太逆天了。好吧,这小伙子确实厉害,操作速度绝对是一流的,LOL里至少也是钻石V。
但我可舍不得媳妇每天这样,而且对于计算机专业的我来说,只要有数据库,这些重复性的工作都是分分钟代码/工具能解决的。
考虑到会有不少需求变化,让媳妇改代码是完全不可行的,于是我就找现成的报表工具。比较了SPSS、SAS、cognos、水晶、foxtable、finereport之后,确定了报表软件finereport。从mysql建表、数据导入、制作日报、周报、月报,各种对比报表开始逐个攻破,终于在手速不低于黄金段位的我进过一个星期的努力后,全部完工了,经过和小伙子做出来的手工表进行校对,确认没有问题后,安装部署到了媳妇的办公电脑上。
几天后,小伙子离职了,从此,媳妇上班只需要早上向个卖场的负责人收集数据,然后花几分钟导入数据库,然后点点鼠标,生成各种报表,然后……先存起来,喝水、吃零食、水果,休息,上网。
所以,从效率上来讲,专业的报表工具是可以替代很多重复性的excel处理工作的,比方说FineReport,信息部门部署安装后,可以连接各业务系统数据,将常规的各业务报表,还有周报月报这些,开发成可自动抽取数据并展示的模板,做好一次,每次只要查询即可。
因为这个工具大多为信息部开发报表所用,可能很多人都不太了解!我尽量以简洁易懂的语言,从技术的角度讲讲这个报表工具,操作上为何能省时省人力,并且有可以替代数据透视表的惊艳可视化。
一、用FineReport做一张模板,可以替代N张手工重复劳作的Excel !
为什么这么说?先来了解FineReport的制表原理
1、FineReport的制表原理
做报表首先得有数据,数据哪里来?一个是直接连接业务系统或者数据库的数据,还有可以导入excel文件数据,连好数据后,开始制作模板,类似于做excel表格一样,设计展现的样式,计算的公式,最后在web端展示。
但是和excel不用,excel处理的是一个个数据,finereport制作模板时处理的对象是数据字段,模板中一个单元格放一个数据字段,web端展示时字段扩展。FineReport报表中单元格的扩展是有方向的,可纵向扩展,也可横向扩展,也可以不扩展。
单元格的扩展是针对某一个单元格,当报表主体中绑定了多个单元格时,单元格与单元格之间依靠父子格关系跟随扩展。子格的数据会根据父格的数据进行过滤分组显示,并且还会跟随父格的扩展方向而扩展。
2、三大类报表设计方式,解决日常所有报表需求,并且一表复用。
1)普通模板设计,此者最常用。依靠着单元格的扩展与父子格的关系来实现模板效果,可进行参数查询,填报报表,图表设计等。比如交叉报表、行式报表、分组报表等等。
2)聚合报表设计,针对不规则大报表。适用于一张模板中显示多个独立模块的报表,几个报表块汇总在一起的复杂报表。
3)决策报表设计,就是表单,也是dashboard,也就是大家常见的各种图表拼接在一起的可视化数据报表。
通过拖拽图表来制作,制作好的dashboard可以自己适配屏幕的大小,多以也可以做成手机端的报表,大屏可视化,下面有细讲。
以下举例一些常见的报表格式:
交叉表行式报表分组报表自由报表3、参数实现数据查询和过滤
查询报表是怎么做呢?在FineReport中,通过设置参数绑定数据字段和过滤的控件(单选框、复选框等等),通过界面输入查询条件来控制报表显示的内容及形式,而后导出打印。
很多人工作上会做周报月报季报等,有些全国性的公司有分公司、门店、办事处。经常性地要做这些重复性很大的报表。那用FineReport就可以集中将每一条数据明细上传到数据库中(填报功能,下面会讲)。在做报表时,做将一些常用的维度“地区”、“时间”、“城市”等等作为一个查询的参数控件,类似Excel中的筛选,导出。基本上一个周报模板,就解决了一些人一年52张手工excel报表的工作量。
4、填报
数据采集是一个很重要的步骤。填报就是向数据库中录入数据,用来收集数据的,就好比你注册网站时提交的邮箱、收集、用户名、密码,都会按照格式存放到数据库中。
填报也需要模板,操作流程如下:
填报模板由控件组成,文本控件、数字控件、密码控件、单复选框、网页、文件等等。控件对应着数据字段。有了填报,就可以收集数据,并且允许用户实现对数据库的增删改。出于数据质量和数据安全的考虑,还可以对填报进入的数据做校验操作。
填报最大的用处是替代了excel收集数据,做好了模板,奖模板链接发送给相关人,填完数据审核过后即可入库,省得excel传来传去,而且是在web端填写,非常方便。
二、不只是报表,还有数据可视化
酷炫的dashboard都需要通过FineReport的表单(决策报表)来设计展现。通过拖拽报表块、图表块和各类控件初步设计界面。
不同于普通报表,普通报表是一个整体,无法实现局部刷新。表单是由各个组件组成,可以实现组件内刷新,即局部刷新。像动态大屏都是全局或者局部刷新的,所以需要用决策报表制作实现。
1、决策报表制作过程
新建表单:FineReport支持新建工作薄,即普通报表模板,还支持新建表单,两种设计模式;
拖入组件:FineReport表单支持多种不同的组件类型,包括报表块、tab块、绝对画布块、参数、图表和控件等等;
定义数据集:定义各个组件数据来源,图表组件数据即可来源于数据集,也可来源于单元格;
设置表单样式:即设置表单的显示样式。
2、数据可视化与交互
当下,数据分析盛行的年代,格子报表枯燥无味,可视化报表才能博得领导赞赏。之前很多网友问如何做可视化,其实,用FineReport自带的H5图表,就可以做出很炫的可视化dashboard。此前提到FineReport良好的开放性,可让技术同事写代码开发,所以在制作时,也可接入Echarts等第三方控件来制作图表。
3、实用而强大的数据地图
finereport有很强大的地图功能:基本地图、GIS地图、热力地图、大数据流向地图等,基本一键生成。
GIS地图基于GIS地图层进行数据展示,支持自定义GIS主题风格,能够与数据表钻取联动。比如省级钻取到市级、县级、街道。
三、总结
篇幅有限,以上只展现了FineReport的一部分功能,很多细节无法展开,感兴趣的可以去官网了解更多。
要说效率,最大的好处就是从数据库中读出数据自动产生报表,且一类报表做成一个固定样式的模板,每次只要同步一下,自动生产周期性的报表,如日报、周报、月报、季报等。 每次按照条件查询,Excel批量导出/打印,少了人力去一个一个用Excel统计汇总。
而且操作上,大多数功能FineReport都封装成模块了,包括写SQL取数,汇总筛选过滤等,基本上都有对应的功能键。像著名的资产负债表,如果按照以往写代码或者写复杂的SQL语句,就有点摧残生命了,而且那天书般的SQL语句要是出点错谁来查,如果数据来自多个源,那就彻底无法解脱了。
其次,在数据处理速度上,由于性能一部分依靠数据库,一部分依靠FineReport的形式报表引擎,相比于Excel的单机效率,几十万行的数据秒出。再者,企业数据库有各种自带或第三方的集群方案,通过堆机器就可以近似于无限的加大数据储存能力。
- ?
数据分析Excel、SAS、R、SPSS、Python这5大软件优势
Gytha
展开
工欲善其事,必先利其器。说起来道理大家都懂,只是到了要学习的时候就开始各种退缩。殊不知一款好的数据分析工具可以让你事半功倍,瞬间提高学习工作效率。
虽然数据分析的工具千万种,综合起来万变不离其宗。无非是数据获取、数据存储、数据管理、数据计算、数据分析、数据展示等几个方面。而SAS、R、SPSS、python、excel是被提到频率最高的数据分析工具。那么,这些工具本身到底有什么特点呢?
Excel
Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。
1、数据透视功能
一个数据透视表演变出10几种报表,只需吹灰之力。一个新手,只要认真使用向导1-2小时就可以马马虎虎上路。
2、统计分析
其实包含在数据透视功能之中,但是非常独特,常用的检验方式一键搞定。
3、图表功能
这几乎是Excel的独门武工,其他程序望其项背而自杀。
4、高级筛选
这是Excel提供的高级查询功能,而操作之简单。非常超值享受。
5、自动汇总功能
这个功能其他程序都有,但是Excel简便灵活。
6、高级数学计算
只要一两个函数轻松搞定
SAS软件
SAS是全球最大的软件公司之一,是由美国NORTH CAROLINA州立大学1966年开发的统计分析软件。SAS把数据存取、管理、分析和展现有机地融为一体。
主要优点如下:
1、功能强大,统计方法齐,全,新
SAS提供了从基本统计数的计算到各种试验设计的方差分析,相关回归分析以及多变数分析的多种统计分析过程,几乎囊括了所有最新分析方法,其分析技术先进,可靠。分析方法的实现通过过程调用完成。许多过程同时提供了多种算法和选项。
2、使用简便,操作灵活
SAS以一个通用的数据(DATA)步产生数据集,尔后以不同的过程调用完成各种数据分析。
其编程语句简洁,短小,通常只需很小的几句语句即可完成一些复杂的运算,得到满意的结果。结果输出以简明的英文给出提示,统计术语规范易懂,具有初步英语和统计基础即可。使用者只要告诉SAS“做什么”,而不必告诉其“怎么做”。
同时SAS的设计,使得任何SAS能够“猜”出的东西用户都不必告诉它(即无需设定),并且能自动修正一些小的错误(例如将DATA语句的DATA拼写成DATE,SAS将假设为DATA继续运行,仅在LOG中给出注释说明)。对运行时的错误它尽可能地给出错误原因及改正方法。因而SAS将统计的科学,严谨和准确与便于使用者有机地结合起来,极大地方便了使用者。
3、提供联机帮助功能
使用过程中按下功能键F1,可随时获得帮助信息,得到简明的操作指导。
R软件
R是一套完整的数据处理、计算和制图软件系统。
主要优点如下:
数据存储和处理系统数组运算工具(其向量、矩阵运算方面功能尤其强大)完整连贯的统计分析工具优秀的统计制图功能简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能
与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。
R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。
该语言的语法表面上类似 C,但在语义上是函数设计语言的(functional programming language)的变种并且和Lisp 以及APL有很强的兼容性。特别的是,它允许在“语言上计算”(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。
R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。
SPSS
SPSS是世界上最早的统计分析软件。
主要优点如下:
操作简便:界面非常友好,除了数据录入及部分命令程序等少数输入工作需要键盘键入外,大多数操作可通过鼠标拖曳、点击“菜单”、“按钮”和“对话框”来完成。
编程方便:具有第四代语言的特点,告诉系统要做什么,无需告诉怎样做。只要了解统计分析的原理,无需通晓统计方法的各种算法,即可得到需要的统计分析结果。对于常见的统计方法,SPSS的命令语句、子命令及选择项的选择绝大部分由“对话框”的操作完成。因此,用户无需花大量时间记忆大量的命令、过程、选择项。
功能强大:具有完整的数据输入、编辑、统计分析、报表、图形制作等功能。自带11种类型136个函数。SPSS提供了从简单的统计描述到复杂的多因素统计分析方法,比如数据的探索性分析、统计描述、列联表分析、二维相关、秩相关、偏相关、方差分析、非参数检验、多元回归、生存分析、协方差分析、判别分析、因子分析、聚类分析、非线性回归、Logistic回归等。
数据接口:能够读取及输出多种格式的文件。比如由dBASE、FoxBASE、FoxPRO产生的*.dbf文件,文本编辑器软件生成的ASCⅡ数据文件,Excel的*.xls文件等均可转换成可供分析的SPSS数据文件。能够把SPSS的图形转换为7种图形文件。结果可保存为*.txt及html格式的文件。
模块组合:SPSS for Windows软件分为若干功能模块。用户可以根据自己的分析需要和计算机的实际配置情况灵活选择。
针对性强:SPSS针对初学者、熟练者及精通者都比较适用。并且很多群体只需要掌握简单的操作分析,大多青睐于SPSS。
Python
Python是一种面向对象、解释型计算机程序设计语言。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。
主要优点如下:
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。
易学:Python极其容易上手,因为Python有极其简单的说明文档 。
速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。
免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。
高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。
解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。
在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。
面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。
可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。
丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。
工具不是万能的,业务和数据建模方法才是万法之源。不要被工具迷花了眼哦!
- ?
R语言数据导入——二部
武烨磊
展开
上期我们了解了R语言数据读入的核心函数read.table,现在我们了解一下其他可以用的函数有哪些,以及使用的场景和基本技巧。
非关系结构文件读入scan()
除了read.table()这类读取文本文档的函数,还可以用scan()函数读入。不同的是它的返回值为列表或者向量。
假设我们有下述文本文档
24
1991
21
1993
53
1962
下列命令可以读入该数据
data<-scan("e:/birth.txt")data
## [1] 241991211993531962
此外,你代码稍加改造可以将数据变矩阵。
matrix(data,nrow=2,byrow=FALSE)
## [,1][,2][,3]
scan()也同样支持访问url数据上的数据,现在我们访问网上的一个age数据
data<- scan("https://s3.amazonaws/assets.datacamp/blog_assets/age.csv", what = list(Age = 0,
## $Age
注意上述代码中的what参数,如果what为list类通过上述代码可以读入类似于spreadsheet类型的文本文档。只需要定义每行中各个项目(列)的类型。scan()其他众多参数的用法和read.table比较类似。
固定列宽数据读入read.fwf()
有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据
data<- read.fwf("https://s3.amazonaws/assets.datacamp/blog_assets/scores.txt", widths= c(7,-14,1,-2,1,1,1,1,1,1),
## subject sex s1s2s3s4s5s6
上述代码中width参数给出了字段的宽度。本例中,前7个字符为课程名字;然后的14个字符我们认为不需要,用-14跳过;接着,性别这一列需要一个宽度的字符;后面的2个空格不需要,用-2跳过;后续的成绩每列需要一个宽度1,1,1,1,1,1传入参数中。这些参数在不同的数据结构下,会有所不同。
另外,还可以使用read.fortran()函数读取数据,详细方法可以参见help文档理解。
导入excel数据
剪切板导入excel表格
如果你已经有了个打开的表格,你可以复制其中的内容,然后用readClipboard()或者read.table()函数导入数据。
readClipboard()#Only on Windows
RODBC包读入excel数据
通过RODBC包同样可以导入excel数据表。代码样例如下
library(RODBC)
其中,dsn的写法可以参考odbcConnect()函数的帮助文档。此外,odbcConnectExcel()同样可以读入excel数据。
当你读入了Excel数据表后,相当于建立了一个连接,你可以使用sql语句来操作数据
query<- "
" 用RODBC包的建立了连接后,在操作完数据要使用odbcCloseAll()
其他方法读入excel数据
其他可以参考的方法有: * openxlsx包中的read.xlsx函数。 * readxl包中的read_excel函数。
其他类型的数据读入
其他主流数据类型R可支持的包括有JSON格式,SPSS文件,Stata文件,SAS文件,s-plus文件,EpiInfo文件,matlab文件,Octave文件,FitbitScraper 数据,Quantmod 数据,ARFF 文件。 支持导入的数据库有,MogoDB,MySQL,Oracle,PostgreSQL,SQLite,RJDBC,dBase等。
二进制数据读入
二进制数据由二进制浮点组成,8个浮点为一个字节。可以使用readBin函数读入此类数据。
connection<- file("
", "rb") #You open the connection as "reading binary"(rb) GIS数据读入
地理信息数据在R中也比较常用,常见的rgdal和raster包都有对应的函数处理此类数据。
大型数据集的读入
如何导入较大的数据一直是R用户的经常讨论的问题,除了将数据导入数据库中处理外,也有一些比较不错的处理大型数据的方法。
data.table包中的fread函数是比较容易实现快速读入大数据的方法,读入大型数据速度相当理想。
library(data.table)
ff包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函数有read.table.ffdf(),read.csv.ffdf()等。
library(ff)
bigmemory包,此包也常用于处理大型数据。样例代码如下,但是此包不能用于windows系统:
library(bigmemory)
sqldf包,此包也可以考虑用于处理大型数据,它还可以使用sql语句处理数据。用read.csv.sql()函数读入数据。
library(sqldf)
随后我们别忘了R中的read.table函数,但是,用此函数读入大型数据,需要对参数有较好的控制。简单说,你能设置的参数越多,读入数据的速度越快。
总结
最后,我们将上述常见的方法做个了总结表格,读者可在用时参考,该表格涵盖了大部分常用数据格式的读入方法。
函数
来源
描述
scan
r-base
顺序读取文件中的数据值
read.fwf
按行和指定列宽度读取数据
read.fortran
采用fortran格式设置读取固定格式数据
readClipboard
读取剪切板中的数据
odbcConnect
RODBC包
读取excel数据,采用odbc
gs_read
googlesheet包
读取google sheet
read.DIF
读取DIF文件
read_excel
readxl包
读取excel文件
read.xlsx
openxlsx包
读取excel的xlsx文件
read.ods
readODS包
读取open document表格文档
fromJSON
jsonlite包
读取JavaScript的json文件
read_spss
haven包
读取spss文件
read_dta
读取stata文件
read.xport
forgein包,sasXPORT包
读取sas文件
read.S
foreign包
读取s-splus文件
read.epiinfo
读取epi Info文件
readMat
R.matlab包
读取MATLAB文件
read.octave
读取Octave文件
read.arff
读取Weka属性关系文件(ARFF)
…
mongolite包,Rmongo包,RODBC包,Roracle包,RPostgreSQL包,RSQLite包,RJDBC包
各类常见数据库导入数据到R
readBin
读入二进制文件
hdf5包,h5r包,rhdf5包,RNetCDF包,ncdf包
读入hdf文件,NASA和UCAR常用气象数据读取
read.dbf
读入DBF文件
read.ftable
读入无格式列联表Flat contingency table
fread
data.table包
大型文本文档读入
read.table.ffdf read.csv.ffdf …
ff包
read.big.matrix
bigmemory包
大型文本文档读入,无法在windows下使用
read.csv.sql
sqldf包
read.table
大型文本文档读入,但是需要合理设计参数,否则速度不理想
来源:DataCamp 编译:亮亮
sas怎么导入excel数据
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并