1. 程式人生 > >未明學院:入門資料分析,到底選Python還是R?

未明學院:入門資料分析,到底選Python還是R?

本文作者

未明學院資料分析方向老師

王老師

正如2012年《哈佛商業評論》中指出的:資料科學家是21世紀最性感的職業,而熟練的進行資料分析、資料探勘則是一名資料科學家必備的基礎技能之一。正所謂工欲善其事,必先利其器,在進行資料分析之前,我們需要掌握一項能夠用來進行資料分析的技能。

資料分析從上世紀60年代發展至今,已經出現了很多成熟的方法論,同時也有了很多成熟的商業工具、軟體,如SPSS、SAS、MATLAB等。然而這些工具軟體過於龐大、昂貴,不適合進行日常的資料分析操作。除卻這些昂貴的商業工具之外,我們還有更好的選擇,多虧了開源社群,我們可以使用Python以及R語言等工具。

Python以及R語言是目前在資料科學家社群中最流行的兩門語言,是目前為止最適合用來進行資料分析的工具。因此,如果我們想要入行資料科學家,想要從事資料分析,Python與R是必備的兩項技能。也許有人要問我:Python與R兩門語言必須同時掌握嗎?我的答案是肯定的。這兩門語言雖然都能夠進行資料分析,但是在很多細分領域還是有很大差別的。同時學習兩門語言能夠博採眾長,知道何時採用何種工具能夠最精確、快速的解決問題才是我們的目的所在。

當然,我知道很多同學沒有足夠多的時間同時學習Python與R兩門語言,因此接下來我將對Python以及R語言進行比較,同學們可以根據自己的需要擇一進行學習。當然,如果同學們能夠同時學習Python以及R兩門語言,當然是最好的。

簡介

Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數學和電腦科學研究所設計出來的。經過近三十年的發展,Python語言具有易於學習、易於閱讀、易於維護、可移植、可擴充套件、可嵌入等特點。尤其是隨著機器學習、人工智慧的發展,Python作為一門人工智慧語言備受青睞。

R是一門用於統計計算和作圖的語言,受S語言影響發展而來。R語言最初由紐西蘭奧克蘭大學統計系的Robert Gentleman和Ross Ihaka合作編寫。自1997年開始,R語言開始由一個核心團隊開發,團隊成員來自世界各地的大學和研究機構。

語言特點對比

1) Python和R在資料分析和資料探勘方面都有比較專業和全面的模組

,很多常用的功能,比如矩陣運算、向量運算等都有比較高階的用法;

2) Python和R兩門語言有多平臺適應性,linux、window都可以使用,並且程式碼可移植性強;

3) Python和R比較貼近MATLAB以及minitab等常用的數學工具

4) 資料結構方面,由於是從科學計算的角度出發,R中的資料結構非常的簡單,主要包括向量(一維)、多維陣列(二維時為矩陣)、列表(非結構化資料)、資料框(結構化資料)。而 Python 則包含更豐富的資料結構來實現資料更精準的訪問和記憶體控制,多維陣列(可讀寫、有序)、元組(只讀、有序)、集合(唯一、無序)、字典(Key-Value)等等。

5) Python與R相比速度要快。Python可以直接處理上G的資料,R不行,R分析資料時需要先通過資料庫把大資料轉化為小資料(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。

6) Python是一套比較平衡的語言,各方面都可以,無論是對其他語言的呼叫,和資料來源的連線、讀取,對系統的操作,還是正則表達和文書處理,Python都有著明顯優勢。而R是在統計方面比較突出。

7)Python的pandas借鑑了R的dataframes,R中的rvest則參考了Python的BeautifulSoup,兩種語言在一定程度上存在互補性,通常,我們認為Python比R在計算機程式設計、網路爬蟲上更有優勢,而 R 在統計分析上是一種更高效的獨立資料分析工具。所以說,同時學會Python和R這兩把刷子才是資料科學的王道。

應用場景

通過上面的介紹,讀者應該能夠清楚的明白Python以及R語言都是能夠用來進行日常的資料分析任務的,然而這兩者還是有一定區別的。正如Python與R語言的官網對這兩門語言進行的介紹:

Python is aprogramming language that lets you work quickly and integrate systems more effectively.

R is a free software environment for statistical computing and graphics.

Python更多的是一門程式語言,其運用場景相較於R則更為廣泛,如Python可以用於Web開發、作業系統管理、伺服器運維的自動化指令碼、科學計算、桌面軟體開發、伺服器軟體(網路軟體)開發、遊戲開發、機器學習等。

R語言相比起Python而言,其應用場景相對狹小,專注於統計計算、機器學習等領域。這也與R語言的歷史有關,R語言是由統計學家合作編寫的,其最初的目的是用於統計分析,為統計服務的。

學習成本及路徑

R語言入門較為簡單,初學者不需要對程式設計有任何事先的瞭解,只需要簡單的幾行程式碼,R語言就能進行常用的資料分析操作並構建絢麗的圖表;然而,R語言的學習曲線較為陡峭,R語言從入門到精通的路程比較漫長,需要讀者慢慢摸索。

Python的學習曲線剛好與R語言相反,Python是作為一門程式語言存在的,如果讀者在之前有學習過任何一門類C語言,則掌握Python也是很簡單的。當然,即使讀者沒有任何的程式設計基礎,只需要根據網上的教程,一步一步的從基礎學起Python,最終不僅可以利用Python進行資料分析,更可以利用Python進行機器學習、人工智慧。

下圖為資料科學家成長路徑圖,其中對於R以及Python的學習路徑也有所提及,有興趣的讀者可以參照該學習路徑圖定製自己的學習路徑。

資料科學家成長路徑圖

總結

在現在的大資料時代,資料分析已經成為一名從業者的必備技能,而掌握Python以及R語言則是進行資料分析的基礎工具。

經過上面的敘述,相信讀者對於Python以及R語言已經有了自己的一些理解,能夠自行選擇需要的語言進行學習。而筆者則在最後贅述一句,兩門語言無所謂優劣,讀者需博採眾長,在適當的問題環境下采用適當的語言快速、準確地解決問題才是最為重要的,千萬不要侷限於一門語言,效率往往比工具更為重要。