什麼是R語言?
R語言,一種自由軟體程式語言與操作環境,主要用於統計分析、繪圖、資料探勘。 R本來是由來自紐西蘭奧克蘭大學的羅斯·伊哈卡和羅伯特·傑特曼開發(也因此稱為R),現在由「R開發核心團隊」負責開發。 R基於S語言的GNU計畫項目,所以也可以當作S語言的一種實現,通常用S語言寫的程式碼都可以不作修改的在R環境下運作。 R的語法是來自Scheme。
R的原始程式碼可自由下載使用,亦有已編譯的可執行檔版本可以下載,可在多種平台下運行,包括UNIX(也包括FreeBSD和Linux)、Windows和MacOS。 R主要是以命令列操作,同時有人開發了幾種圖形使用者介面。
R的功能能夠透過由使用者撰寫的套件增強。增加的功能有特殊的統計技術、繪圖功能,以及程式設計介面和資料輸出/輸入功能。這些軟體包是由R語言、LaTeX、Java及最常用C語言和Fortran撰寫。下載的可執行檔版本會連同一批核心功能的軟體包,而根據CRAN紀錄有過千種不同的軟體包。其中有幾款較為常用,例如用於經濟計量、財經分析、人文科學研究、以及人工智慧。
Python與R語言的共同特點
Python和R在資料分析和資料探勘方面都有比較專業且全面的模組,許多常用的功能,例如矩陣運算、向量運算等都有比較進階的用法
Python與R兩門語言有多平台適應性,linux、window都可以使用,且程式碼可移植性強
Python和R比較貼近MATLAB以及minitab等常用的數學工具
Python與R語言的差異
資料結構方面,由於是從科學計算的角度出發,R中的資料結構非常的簡單,主要包括向量(一維)、多維數組(二維時為矩陣)、列表(非結構化資料)、資料框(結構化資料)。而Python 則包含更豐富的資料結構來實現資料更精準的存取和記憶體控制,多維數組(可讀寫、有序)、元組(唯讀、有序)、集合(唯一、無序)、字典(Key-Value)等等。
Python與R相比速度要快。 Python可以直接處理上G的資料;R不行,R分析資料時需要先透過資料庫把大數據轉換成小資料(透過groupby)才能交給R做分析,因此R不可能直接分析行為詳情,只能分析統計結果。
Python是一套比較平衡的語言,各方面都可以,無論是對其他語言的調用,和數據源的連接、讀取,對系統的操作,還是正則表達和文字處理,Python都有著明顯優勢。 而R是在統計方面比較突出。
Python與R語言的應用場景
應用Python的場景
1、網絡爬蟲與網頁抓取
Python 的beautifulsoup 和Scrapy 更加成熟、功能更強大,結合django-scrapy我們可以很快的構建一個客製化的爬蟲管理系統。
2、內容管理系統
Python 只用 sqlachemy 通過ORM的方式,一個套件就解決了多種資料庫連接的問題,且在生產環境中廣泛使用。基於Django,Python可以快速透過ORM建立資料庫、後台管理系統,而R中的 Shiny 的鑑權功能暫時還需要付費使用。
3、API的建置
透過Flask、Tornado等標準的網路處理庫,Python也可以快速實現輕量級的API,而R則較為複雜。
應用R語言的場景
1、統計分析
儘管 Python 裡Scipy、Pandas、statsmodels提供了一系列統計工具 ,R 本身是專門為統計分析應用建立的,所以擁有更多此類工具。
2、互動式面板
R的shiny 和shiny dashboard可以較快地建立客製化視覺化頁面。速度更快,所需程式碼更少。
總的來說,Python的pandas借鑒了R的dataframes,R中的rvest則參考了Python的BeautifulSoup,兩種語言在一定程度上存在互補性,通常,我們認為Python比R在電腦程式設計、網絡爬蟲上更有優勢,而R 在統計分析上是一種更有效率的獨立數據分析工具。所以說,同時學會Python和R這兩把刷子才是數據科學的王道。