python中数据分析的流程为-在数据分析流程中整合Python和R(一)
EARL 是一个关于 R 语言的会议。今年的会议中却出现了大量关于Python的讨论。我认为,这个现象部分归功于在会议前一天举办的,关于整合 Python 和 R 的三小时研讨会。
本文是此系列三篇文章的第一篇。这个系列的文章旨在:
• 介绍整合 Python 和 R 的基本策略
• 盘点此过程涉及的各个步骤
• 用实例说明如何/为何这么做
作为这个系列的开篇,本文将:
• 阐述在同一个流程中使用 Python 和 R 的原因
• 介绍通过命令行使用 R 和 Python 的方法
• 展示如何将输入内容作为参数,并将输出内容写成多种文件格式
为什么要“整合”而不是“二选一”?
在网上简单搜索有关“R Python”的文章,前十条结果里只有两条是讨论同时使用 R 和 Python 的好处,其余的讨论都将它们置于竞争对立之中。这件事并不难理解,从创立之初,两种语言就拥有各自鲜明的优点/缺点。从历史上看,Python 和 R 的分界有关学科背景:统计学家倾向于 R ,而程序员选择 Python 。不过,随着数据科学家这个职业的兴起,原有的分界变得模糊起来。
“数据科学家 (名词): 比软件工程师更擅长统计,比统计学家更擅长软件工程的人。”-twitter 网友 @josh_wills
R 和 Python 都有丰富的资源库,而数据科学家越来越需要学会平衡利用它们各自的优势。
在以下领域 Python 的表现比 R 更优异:
• 网络爬虫/抓取:尽管 rvest 已经让 R 的网络爬虫/抓取变得容易,但 Python 的 beautifulsoup 和 Scrapy 更加成熟、功能更强大。
• 连接数据库: R 提供了许多连接数据库的选择,但 Python 只用 sqlachemy 一个包就可以解决,且在生产环境中广泛使用。
在以下领域 R 比 Python 表现更优异:
• 统计分析: 尽管 Python 里 Scipy、Pandas、statsmodels 提供了一系列统计工具 ,R 本身是专门为统计分析应用建立的,所以拥有更多此类工具。
• 互动式图表/面板: 近来 bokeh、plotly、 intuitics 将 Python 的图形功能扩展到了网页浏览器,但 R 的 shiny 和 shiny dashboard 速度更快,所需代码更少。
此外,当今数据分析团队拥有许多技能,选择哪种语言实际上基于背景知识和经验。对于一些应用,尤其是原型设计和开发类,工作人员使用已经熟悉的工具会比较快速。
策略:使用没有相对结构的文件格式作为中转
在本系列的文章中,我们探讨最简单的整合 R 和 Python 的方法。使用没有相对结构的文件格式作为中转需要执行如下步骤。
1. 重构 R 和 Python 的脚本使其在命令行可执行,并能接受命令行的参数。
2. 将共享的数据输出为一种通用的文件格式。
3. 在一种语言中执行另一种,需要的情况下传递参数。
此策略的好处:
• 最简单,通常也最快。
• 容易查阅中间的输出。
• 常用的文件格式 CSV, JSON, YAML已有解析器。
此策略的坏处:
• 需要对一种通用结构或文件格式达成共识。
• 如果流程变复杂,管理中间输出会很麻烦。
• 在数据量大的情况下,硬盘读写会成为一个瓶颈。
命令行脚本
对于 R 和 Python ,用在 Windows /类 Linux 终端环境运行脚本是相似的。要执行的命令可以被分解成下面这种形式:
<命令> <脚本路径> <附加参数>
这里:
<命令>是要运行的可执行文件类别 (对于 R 代码来说是 Rscript ,对于 Python 代码来说是 Python )
<脚本路径> 是脚本的完整或相对路径。如果路径名有空格,整个路径必须加双引号。
<附加参数> 是一组用格分隔的参数的list,由脚本文件自己解析。注意,它们会作为字符串被传入。
举例说明,一个 R 脚本要在终端环境打开,运行方式如下:
Rscript path/to/myscript.R arg1 arg2 arg3
常见小问题
• 可执行文件必须已经存在于当前路径。否则需要提供系统位置的完整路径。
• 有空格的路径名称会出现问题,尤其在Windows系统,因此必须加双引号使其被视作“一个”路径。
在R中获取来自命令行的参数
在上面的例子中,arg1, arg2, arg3 是 R 脚本要解析的参数。这些参数可以用 commandArgsfunction 获取。
# myscript.R
# 获取来自命令行的参数
myArgs <- commandArgs(trailingOnly = TRUE)
# myArgs是个包含全部参数的字符向量
print(myArgs)
print(class(myArgs))复制代码
设定 trailingOnly = TRUE ,则向量 myArgs 只包含你加入命令行中的参数。如果此项是 FALSE (默认设置),则向量中会有其他的参数,比如刚刚执行的脚本路径。
在Python中获取来自命令行的参数
Python path/to/myscript.py arg1 arg2 arg3
用这种方式在命令行中执行的 Python 脚本,可以通过事先 import sys 模块获取参数 arg1, arg2, arg3。这个模块有关各系统特有的参数和功能,但这里我们只关心其中的 argv 属性。argv 是传递给当前脚本的一组完整参数。第一个元素永远是脚本文件的完整路径。
# myscript.py
import sys
# 获取来自命令行的参数
my_args = sys.argv
# my_args是一个list,第一个元素是所执行的文件(路径)。
print(type(my_args))
print(my_args)
如果想要只保留参数,可以把第一个元素去掉。
# 选取除了第一个元素以外的全部内容
my_args = sys.argv[1:]复制代码
像上面关于 R 的例子一样,这里所有参数是作为字符串被解析的。如果有其他需要,须自行转换成想要的类型。
将输出内容写成文件
R 和 Python 的中介文件有几种备选格式。对于一般的无相对结构的文件格式,CSV 适合表格数据。JSON 或 YAML 适合更缺乏结构的数据(或元数据),数据可能包含许多不同的字段或是网状结构。
这些都是很常见的数据序列化格式,两种语言都有相应解析器。R中推荐使用下列几个包:
• CSV 使用 readr
• JSON 使用 jsonlite
• YAML 使用 yaml
Python:
• CSV 使用 csv
• JSON 使用 json
• YAML 使用 PyYAML
csv 模块和 json 模块是标准的 Python 库的组成部分,Python 语言本身自带。PyYAML 需要单独安装。至于上面提到的各 R 包,用正常方式安装即可。
总结
综上所述,同一个流程中,R 和 Python 相互传递数据可使用如下方式:
• 使用命令行传递参数,以及
• 用一个通用的,无相对格式的文件传递数据
然而,在一些情况下,使用文件作为中介存储会产生麻烦,且不利于表现。下一篇文章中,我们会探讨如何让R和Python直接相互调用,并把输出返回到内存中。
原作者:Chris Musselle & Kate Ross-Smith
翻译:数据工匠
原文链接:http://datartisan.com/article/detail/56.html
python中数据分析的流程为-在数据分析流程中整合Python和R(一)相关推荐
- Python数据分析 找出数组中每行(或每列)中指定的百分位数 numpy.percentile()
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析 找出数组中每行(或每列) 中指定的百分位数 numpy.percent ...
- Python爬虫+数据分析+数据可视化(分析《雪中悍刀行》弹幕)
Python爬虫+数据分析+数据可视化(分析<雪中悍刀行>弹幕) 哔哔一下 爬虫部分 代码部分 效果展示 数据可视化 代码展示 效果展示 视频讲解 福利环节 哔哔一下 雪中悍刀行兄弟们都看 ...
- python计算消费总额_Python在校园数据分析中的应用——以一卡通消费为例
Python 在校园数据分析中的应用--以一卡通消费为例 王全胜 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2017(013)009 [摘要] 随着大数据时代的到来 ,P ...
- Python数据分析小技巧:如何在Pandas中实现数据透视表?
Python数据分析小技巧:如何在Pandas中实现数据透视表? 数据透视表是数据分析中非常有用的工具,可以帮助我们快速了解数据的结构.关联和趋势.在Pandas中,我们可以使用pivot_table ...
- python数据分析书单排行_数据分析有哪些好书值得推荐?
1.统计学书单 如果你打开招聘的职位要求,都会要求具有统计学的知识,这是因为统计学是数据分析.机器学习的基础知识,是必须要学习的. 推荐理由:很多人感到统计学无聊,是因为从一开始就没有明白学习这门课的 ...
- python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
- python编程入门与案例详解-自学Python 编程基础、科学计算及数据分析
自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...
- 工业制造中的大数据分析应用_工业大数据分析方案-美林数据
认识工业大数据 什么是工业大数据? 我们先看看维基百科的说法:"工业大数据(Industrialbig data)是构成工业人工智能的重要元素,指由工业设备高速产生的大量数据,对应不同时间下 ...
- python金融风控评分卡模型和数据分析
python金融风控评分卡模型和数据分析微专业课(博主录制):http://dwz.date/b9vv 作者Toby:持牌照消费金融模型专家,和中科院,中科大教授保持长期项目合作:和同盾,聚信立等外部 ...
最新文章
- 使用dom4j解析XML例子
- 移动应用交互设计中合理使用动态
- centos 7 mysql 默认_centos7 mysql 5.6.30 默认配置文件
- AndroidStudio cmakelist找不到问题
- linux驱动编写(虚拟字符设备编写)
- Spring与SpringMVC的区别
- 70% 的Chrome漏洞是内存安全问题,谷歌和开发人员约法三章
- 张宇高等数学强化阶段笔记并标记重点
- 网络端口和端口扫描简介
- keil编译后MCU需要的flash和RAM容量
- 看到越来越多的人用奇怪的域名,其中有china.xx之类的好域名。
- 15分钟看完:悉尼科技大学入选 CVPR 2021 的 9 篇论文,都研究什么?
- 全国私营企业调查数据(CPES1993-2014)
- 进程切换及一些常见概念(面试必问)
- 计算机专业申请ps怎么写,美国留学申请:个人陈述PS范文(计算机专业)
- 给app加一个启动图
- 手机访问本地配置域名下的项目
- 小程序自动化测试工具之AirTest
- 如何零基础学习安卓开发?
- 黑苹果hidp显示不清楚_macOS开启HiDPI外接2K显示器(解决字体发虚问题)
热门文章
- Android layout布局属性、标签属性总结大全
- 总结20121016
- CIO职业生涯如何进行三级跳
- 想学Python,怎么开始才好呢?
- 【计算机视觉】背景建模之PBAS
- jquery 向上滚动【四】个人认为好一些,哈
- 会计有必要学python吗-工作三年却被实习生抢了饭碗,学会Python到底有多吃香?...
- 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...
- python详细安装步骤-Pycharm及python安装详细教程(图解)
- python资料库-Python对接六大主流数据库,只需三步