摘要:概述工欲善其事必先利其器,如果现在要评选数据科学中最好用的编辑器注意一定是可以通过访问的,和一定是角逐的最大热门,正确使用编辑器可以很大地提升我们的工作效率。
概述
工欲善其事必先利其器,如果现在要评选数据科学中最好用的Web 编辑器(注意一定是可以通过Web访问的),RStudio和Jupyter一定是角逐的最大热门,正确使用编辑器可以很大地提升我们的工作效率。本文将讲解一些RStudio和Jupyter的使用技巧。
RStudio 模块设计RStudio编辑器整体被分为明显的四个模块,包括:
文本编辑区(写代码的地方)
控制台(跑代码的地方)
文档管理区(查看帮助、绘图预览、文件管理等等)
状态管理区(环境变量、版本控制、Spark链接管理等等)
我们可以根据自己的喜好在视图View菜单栏选项卡中选择各个pane的布局方式。
另外也可以通过快捷键快速在各个pane之间切换。
默认的快捷键(可以通过 atl + shift + k 查看更多快捷键)是:
ctrl + 1 :切换到文本编辑区
ctrl + 2 :切换到控制台(console)
ctrl + 3 :帮助文档
ctrl + 4 :历史命令
ctrl + 5 :文件夹
...
shift + ctrl + 《N》 可以放大上述区域。比如 shift + ctrl + 1 放大编辑区,放大之后我们就可以专注于某一项特定的任务上。
在文本编辑器中,我们支持C++、Shell、Python、HTML、SQL等语言的代码高亮以及编译。(暂时不支持Java)
通过 快捷键 ctrl + shift + s (source) 即可立即编译代码。
如果是R,通过 system2("sh","some.sh",stdout=TRUE)函数即可捕获脚本的输出值。
如果是 页面或者文档则通过 ctrl + shift + k (knitr) 即可立即预览。
功能设计 1. 版本控制(Git/SVN)集成的Git/SVN的版本控制,Diff、commit、pull等等操作都非常方便。通常用Git(利用分支)来管理代码,而SVN(利用文件夹)则用来管理文档。
2. 文档预览(演讲Slides/PDF论文/HTML技术文档/WORD产品文档/Rnotebook试验文档)
参考前文 文档定义应用:数据科学的文档革命我们可以知道,
通过Rmarkdown、knitr、slidify、pandoc等等组件可以完美输出各式文档,满足不同场景下的编辑任务。(通过快捷键ctrl+shift+k(knitr)可以即时预览)
需要安装 devtools::install_github("rstudio/rmarkdown")安装若干必要的包
3. 大数据处理(Spark)通过Sparklyr的sparklyr::spark_install(version = 2.0.0)可以一键安装指定版本的Spark所需软件,通过Spark连接管理界面控制连接的状态,利用dplyr的api直接操作spark。
4. 项目管理(Build/Project)通过 Project 可以建立一个项目,而项目可以将项目内的文件信息统一管理,配合版本控制工具在工程化中非常好用。
5. 插件系统(Addin)通过 rstudioapi 和 miniUI 可以简单制作RStudio插件并且添加快捷键调用,常见的一些插件:
formatR 可以规范化代码书写,包括自定义换行、缩进等等
比如通过liftr可以将Rmd文档直接作Dockerfile打包
LaTex公式转换器,则帮我们提供一个自动的LaTex生成器
rOpensci则提供了一个Citation的查询引用功能,等等。
6. Shell终端通过Tool菜单可以直接进入Shell命令行,在Web服务器上相当于可以直接进入Web Console,这意味着我们可以利用RStudio直接远程操作服务器的shell,在一些特定的场合下非常好用,这一点深受运维同学的青睐。
7. 代码调试R中自带的异常机制并不能令人满意,RStudio在这一点上补足了R本身的一些缺陷,我们可以简单的通过断点和traceback看到程序调用栈的情况。
8. 性能调优通过profile模块,我们可以直接打印整个程序的火焰图,查看到程序的运行情况和瓶颈,在工程阶段非常管用。
需要安装 devtools::install_github("rstudio/profvis")安装必要的包
9. 文档搜索通过 ctrl + . 可以快速检索函数名称和文件名称,
通过 ctrl + f(find) 可以局部搜索文档,
通过 ctrl + shift + f(find) 可以全局搜索文档。
devtools::install_github() 直接可以安装github上的R包,大部分情况把rstudio相关的包安装好就可以了。
在菜单栏中可以选择默认的镜像源,国内可以选择清华的TUNA,且RStudio默认提供了全球的CDN加速。
一般情况可以直接通过install.packages() 直接安装CRAN(默认)上的R包
利用packrat::init()可以做包管理的虚拟化,类似于Python中的Virtualenv,结合容器技术可以更好地发布代码。
这里也可以不用命令行的方式来直接指定安装的方式,可以从压缩包或者CRAN上安装包到特定目录下
11. 多行编辑按住alt键后鼠标会自动变成一个十字,此时选中文本可以进入多行编辑状态,非常实用的一个功能(类似Atom里面也是alt + 方向键)
当然我们也可以按住 ctrl + alt后通过鼠标点选,实现多带带的多行编辑。
由于数据的探索性,大多数时候,我们并不能很快就明确我们的函数应该写成什么样,函数的输入输出都并不太确定。在确定了一段代码后,我们可以利用 Extract Function 的功能把代码快速提炼出来,增强代码的复用性。
13. 权限管理依赖于操作系统的用户管理,就可以轻松实现RStudio的登陆权限管理。
SWOT分析 优点与机会开源、方便、强大、私有、安全(类似于MatLab Web开源版),照顾到了数据科学领域的方方面面,而且深得DevOps喜爱。
拓展性强,用户可以自定义插件或者R包来扩展编辑器的功能。
强大的包管理工具减少了90%的包管理工作(剩下大多数是gcc和jdk的问题,需要通过shell里的yum/apt-get/brew去解决)。
图形界面非常强大,对于不熟悉命令行的使用者学习成本非常低。
缺点和威胁不过对于Java或者C++这样的工程师来说并没有太多的吸引力,因为Eclipse和VisualStudio基本可以满足他们的特殊需求。
编辑器的运行性能有待提高,如果跑一个没有经过优化的算法,引入不当的计算复杂度时可能导致Seesion卡死。
总结使用RStudio,处理数据时一定记得先处理sample数据,而不是一开始就做全量数据。在跑全量数据时,最好使用terminal来运行代码,避免在Web Console中直接运行,带来不必要的麻烦。
编译PDF需要额外安装latex套件,中文的问题比较麻烦,需要特殊解决;不过也可以通过html的保存为PDF形式打印输出(HTML的样式可以通过CSS模板调整)。
如果结合Airflow使用,通过Git对Dags文件夹中的.py文件做相应的版本控制,通过RStudio直接在Web端编辑就是一个非常方便的应用。
相对而言,RStudio需要配置的选项还比较少,一般需要配置的选项都可以通过图形化界面完成。
建议如果只是作为编辑器使用,RStudio不要安装Docker版本,因为Docker版本无权限直接访问宿主的磁盘(可以通过挂载曲线救国),在多人协同的时候会产生一些麻烦。
在编辑器中,想要指定Python引擎来运行Python脚本可以这样做:(通常配合virtualenv)
#coding=utf-8 #/your/path/python #e.g. /home/financeR/bin/pythonJupyter
除了RStudio,Jupyter则是我的另一个常用的编辑器。
模块设计 1. 文件管理 2. 代码编辑 3. 集群管理 代码编译与文档预览新建notebook时可以通过一些第三方组件配置来支持多语言的编译(折腾起来有点麻烦)
功能设计通过 iPython 中的 %% 操作符,可以拓展许多Jupyter的功能,最基础的就是%%bash操作符了,后续许多操作都依赖于它。
1. 版本控制%%bash git add .
需要通过shell脚本来搞定。
2. 文档预览支持多种文件格式输出,PDF依然需要安装LaTex相关套件稍微麻烦点。主要是技术文档类型的输出,word还是需要用命令行的pandoc来输出,slide也是需要通过如下命令完成
ipython nbconvert your_slides.ipynb --to slides
多格式的文档转化依然是依赖于pandoc这个轮子,技术文档的输出主要依赖于sphinx。
3. 大数据处理(Spark) 4. 项目管理(Virtualenv)%% bash virtualenv your_dir
依然通过命令行的方式可以创建一个完全隔离的项目。
5. 插件系统通过生写部分js和Python的方式也可以为系统添加插件。暂时没有类似于miniUI的方式来实现。
python3 -m IPython notebook --notebook-dir=~ --NotebookApp.server_extensions="["extensions.server_ext"]"6. Shell终端
如果不满足于%%bash 也可以直接切入web terminal
7. 代码调试Python自带的代码调试能力就已经很给力,不多赘述。
8. 性能调优通过 profile包,我们也可以对Python进行性能调优。
通过graphViz也可以排查性能问题。
参考Reddit上的讨论
我们依然可以通过下面命令解决
%%bash find /|grep somethin10. 包管理工具
通过%%bash操作符其实可以任意拓展执行shell脚本,包管理依然可以用shell中的pip或者conda
如果要指定pip版本、源等等操作需要自己写命令或者修改配置文件,没有图形化界面稍微麻烦点。
11. 多行编辑同样也是按住alt键的老套路。
13. 权限管理通过 jupyter hub 可以支持更加强大的权限管理方式。
SWOT分析 优点和机会主要功能的拓展通过 %%bash 来完成,直接嫁接命令行的功能,对于熟悉shell脚本的程序员来说非常方便。
设计简洁优雅,尽量不重复造轮子,在组件开发上延续了Pythonic哲学,底层代码一览无余,扩展性优秀。
代码块管理使得程序整体上有了很好的隔离性。
内核切换非常方便,"%" 魔法非常好用。
缺点和威胁缺乏丰富直观的图形化界面,大多数任务需要更多的代码来实现,学习负担比较大。
在拓展系统功能方面对使用者要求比较高,需要自定义许多配置文件和组件安装。
缺乏足够快速的文档检索能力和工作区划分功能。
需要自己折腾的地方太多,比较耗费精力。
后起之秀Zeppelin有一统江湖的趋势。
总结在更多的时候,我会选择在Jupyter里面调试一些简单的语法问题、requests请求API,或者集成一些markdown来制作交互式文档。在真正工程化阶段则直接使用vi和tmux进行开发, 因为代码块虽然有隔离性,不过相对于沉浸式编程还是效率低了一点。
利用iPython中的%history可以实现历史命令的查看。在RStudio中则是history()或者直接通过界面查询(还支持历史命令的搜索和导出)
参考资料Jupyter 快捷键
Jupyter 文档
RStudio 快捷键
Vim与Python真乃天作之合:打造强大的Python开发环境
更优阅读体验可直接访问原文地址:https://segmentfault.com/a/11...
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者 Harry Zhu 的 FinanceR专栏:https://segmentfault.com/blog...,如果涉及源代码请注明GitHub地址:https://github.com/harryprince。微信号: harryzhustudio
商业使用请联系作者。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38099.html
摘要:概述在真实的数据科学世界里,我们会有两个极端,一个是业务,一个是工程。偏向业务的数据科学被称为数据分析,也就是型数据科学。所以说,同时学会和这两把刷子才是数据科学的王道。 showImg(https://segmentfault.com/img/bVAgki?w=980&h=596); 概述 在真实的数据科学世界里,我们会有两个极端,一个是业务,一个是工程。偏向业务的数据科学被称为数据...
摘要:对于异常机制的合理运用是直接关系到码农饭碗的事情所以,本文将具体介绍一下和的异常处理机制,阐明二者在异常处理机制上的异同。下面将具体介绍二者的异常处理机制。 概述 showImg(https://segmentfault.com/img/remote/1460000006760426); 异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正...
摘要:则在读取数据时将两个中文字段混淆成了一个字段,导致整个数据结构错乱。三条路子全军覆没,这让我情何以堪,好在使用的经验颇丰,通过中文的转换和切割就轻松解决了这个问题。 概述 showImg(https://segmentfault.com/img/bVylLL); 在现实场景中,由于数据来源的异构,数据源的格式往往是难以统一的,这就导致大量具有价值的数据通常是以非结构化的形式聚合在一起的...
摘要:对于数据科学的研究可以说已经是本文我将介绍如何以文档定义应用的方式成为数据科学中的标准交付。参考前文解密的数据科学部门如果构建知识仓库,作为一个谢大大的死忠,我很自然选择了作为我文档输出的首选工具。 showImg(https://segmentfault.com/img/remote/1460000006760433?w=423&h=426); 概述 随着近年来,Rstudio 通过...
摘要:另外一个我们同时使用两种语言的原因是已有的统计学工具与包。对另一些为读者写数据科学工具的人来说他们从一开始就考虑了这些跨语言。和实际上是用实现的这是条阻力最小的路径。无论是哪个赢得这场语言战争,和都将保持在数据科学届的地位。 showImg(https://segmentfault.com/img/remote/1460000006762469); 概述 几周前,我有幸在 Scipy ...
阅读 3915·2021-11-24 09:38
阅读 3086·2021-11-17 09:33
阅读 3861·2021-11-10 11:48
阅读 1233·2021-10-14 09:48
阅读 3122·2019-08-30 13:14
阅读 2542·2019-08-29 18:37
阅读 3385·2019-08-29 12:38
阅读 1408·2019-08-29 12:30