閱讀462 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《數據驅動安全:數據安全分析、可視化和儀表盤》一2.1 為什麼選Python?為什麼選R?為什麼兩者都要?

本節書摘來異步社區《數據驅動安全:數據安全分析、可視化和儀表盤》一書中的第3章 ,第2.1節,[美]傑·雅克布(Jay Jacobs)鮑布·魯迪斯(Bob Rudis) 著 薛傑 王占一 張卓 胡開勇 蔣夢颺 趙爽 譯, 更多章節內容可以訪問雲棲社區“異步社區”公眾號查看。

2.1 為什麼選Python?為什麼選R?為什麼兩者都要?

通常討論在設定的場景下哪種編程語言更好,會很快演變成一場沒有勝利和結論的爭論。作為數據安全科學家,不要對語言有很強烈的偏見。通常每種語言總在不同的領域閃光,你需要將它們融合在一起以解決實際問題。
Python和R作為數據分析的兩種領導語言,它們界麵相似又有著各自獨立的元素,使它們對某些任務來說很適合,對另一些任務則不然,我們會在本書裏不停練習R/Rstudio、Python/IPthon/pandas的使用。當你熟悉了一種或全部的環境,並了解每種選擇的原理,不要因此變得自滿。
對於有編程經驗的讀者,加快Python學習非常簡單,你可以期望3至6個月就能相當熟練,尤其是你可以將現有的一些腳本程序變為Python程序作為練習,你的程序也許不夠Python化(沒有充分利用一些特性、功能、語法),但是付出終將有所回報。對於那些統計語言的新手,熟悉R將帶來不小的挑戰。統計學家創造了R語言,隨著你對R的深入鑽研,你會發現裏麵有相當明顯的血統。如果你能經受得起R的語法以及函數庫的細微差別帶來的痛苦,另外將自己的Excel工作流向R語言過渡,那麼3至6個月後,你也能在#rstats Twitter主題上上榜。
一個成功的數據科學家的標誌是適應性,你應該在網絡空間內持續尋找新興的工具幫你解決問題。我們將在附錄A裏向你介紹一些明日之星。
1. 為何用Pyhton
Guido van Rossum在1989年12月創造了Python這門實用的編程語言。他和他的同事需要一種通用方法來協同係統管理任務,發揮當時操作係統的一些特性優勢。盡管當時有許多管理員友好型的解釋語言或工具,但是沒有一種具有Python一樣的靈活性和可擴展性(Guido van Rossum的觀點)。
Python的靈活性和可擴展性(事實上是免費和自由)在2000年初期,尤其吸引科學、學術,以及行業社區。他的創新讓通用編程語言相比同期專用領域編程語言更容易使用解決自己的學科問題。
你很難找到某個文件類型是Python不能讀取的,或者某個Python不能訪問的數據庫,或者某個Python不能執行的算法。當你熟悉這門語言,Python快速獲取、清理、轉換原始數據的能力會讓你驚異,往往這些任務是分析或者可視化處理過程中早期的一個步驟。直到2008年AQR Capital Management公司創建了pandas(https://pandas .pydata.org)模塊,pandas提供了Python化的類似功能,像其他基礎分析語言如R、SAS、MATLAB一樣。這是一個真正有意義的開始。
盡管Python解釋器提供了交互式的執行shell,愛好者們意識到需要擴展基本功能,甚至開發出更動態化以及健壯的交互式環境IPython,以滿足他們的需要。將IPython與pandas模塊一起使用,剛嶄露頭角的數據分析師現在擁有了實用和數據為中心的工具集,為追尋知識助一臂之力。
2. 為什麼用R語言
與Python語言不同的是,R語言的曆史與特定領域緊密相關,它是為數理統計分析和可視化而全力打造的。它能夠訪問或處理多種文件類型和數據庫(依然是靈活性和可擴展性的設計),但是R語言類似Lisp、S風格的語法,尤其是基本的麵向分析的數據類型,往往隻被“數據統計員”掌握。
基礎R語言僅僅幾行代碼就能夠很簡單地進行廣泛的統計分析,生成富含信息和吸引人的可視化圖表。許多現代的R語言庫,比如plyr和ggplot2,拓展和增強了R的基本能力,許多互聯網上搶眼的例子以及前沿的數據分析和可視化都依賴於此。
和Python一樣,R語言同樣提供一個可交互的執行shell,用來滿足基本的功能需求。至此,RStudio隨著更多交互需求而發展成為了集成開發環境、數據探索工具、重複實驗環境的集合,它成倍提升了R語言的默認能力。
3. 為什麼兩者都要用
如果你有一把錘子,所有東西都可以看作是釘子。有些時候,通用編程語言的靈活性是非常順手的,比如當你使用Python時。但有時候R語言隻要3行代碼就實現的,用Python卻需要30多行代碼(即使是用pandas)完成。因為你的最終目標是盡可能快速地,比較炫地實現有見地和準確的分析。如何選用合適的工具完成工作變得尤為重要,它能讓你盡可能可靠高效地開發。
如果不承認Python和R都不完美,需互相補充,會顯得有些虛偽。我們接觸的一些書本外的實例會遇到這樣的場景,通常一些“學習機會”會出現在你自己進行分析時,開始會沮喪(被困住的禮貌說法),然後用另外一個工具搞定它。即使有允許你在R腳本裏運行Python代碼的R軟件包rJython,或者在Python腳本裏能運行R代碼的rpy和rpy2模塊,這樣的場景也會非常頻繁出現。
假如工具箱包含了Python和R,你應該能解決你遇到的大部分問題,即使不是全部。假如你發現在一些場景下沒有你要的功能,Python和R都有充滿活力的社區,社區裏的人能提供緊急幫助,甚至幫助開發滿足新需求的函數或模塊。

最後更新:2017-06-21 17:32:02

  上一篇:go  《數據驅動安全:數據安全分析、可視化和儀表盤》一2.2 用Canopy快速開始Python分析
  下一篇:go  《數據驅動安全:數據安全分析、可視化和儀表盤》一第2章