摘要:概述工欲善其事必先利其器,如果現在要評選數據科學中最好用的編輯器注意一定是可以通過訪問的,和一定是角逐的最大熱門,正確使用編輯器可以很大地提升我們的工作效率。
概述
工欲善其事必先利其器,如果現在要評選數據科學中最好用的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
商業使用請聯系作者。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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 ...
閱讀 3920·2021-11-24 09:38
閱讀 3096·2021-11-17 09:33
閱讀 3871·2021-11-10 11:48
閱讀 1241·2021-10-14 09:48
閱讀 3130·2019-08-30 13:14
閱讀 2551·2019-08-29 18:37
閱讀 3393·2019-08-29 12:38
閱讀 1418·2019-08-29 12:30