你是剛踏入資料科學領域的初學者、正為了選擇學習 R 或 Python 而感到猶豫不決呢?這兩個語言在資料科學界都擁有廣大的支持者,各有其優勢。事實上,R 和 Python 都具有相當強大的數據分析、資料視覺化和機器學習能力,兩者之間的競爭並非你死我活的對決,更像是「咖啡或茶」這樣單純的偏好不同。
在這篇文章,筆者基於自己涉略資料科學 10 年、同時擁有 R 語言跟 Python 的應用經驗,我建議以台灣資料科學職場為目標的新手先專注 Python,以下我將先比較兩個程式語言,並以學習目標、參考典範(偶像與導師)、還有學習資源與社群為主要論點,說明為什麼我更推薦優先學習 Python。
目錄
在「資料分析」任務,R 與 Python 其實沒差太多
Python 以及 R 都是在資料科學領域非常熱門的開源程式語言,任何人都能免費使用,它們兩者都有非常豐富的套件(package)支援資料科學的各種相關功能,在我的實際使用經驗之中,R 與 Python 執行資料分析(Data Analytics)任務幾乎沒有分別,只要你夠熟悉該語言、它們同樣強大且高效率。
- 當你需要處理資料(data manipulation),R 有
dplyr
與tidyr
而 Python 有pandas
; - 在資料視覺化,R 有超著名的
ggplot2
而 Python 有matplotlib
與seaborn
; - 想要動態的網頁儀表板?R 有
shiny
而 Python 現在streamlit
正快速竄紅 - 統計分析任務,Python 需要
scipy
與numpy
,R 則已經內建假設檢定與迴歸分析函式、不需要第三方套件支援 - 機器學習模型,R 可以使用
caret
或mlr
,Python 當然是熱門的scikit-learn
- 更進階的深度學習模型,
tensorflow
與pytorch
不論是 R 或 Python 都有 API 支援
條列這些任務之後,你會發現,想做好數據分析,真的不是非使用某個語言不可,Python 與 R 語言各自有廣大的社群在持續開發且強化各自的資料科學工具,也各自有一批厲害的資料科學家作為擁護者。比如我寫這篇文章的初衷,正是看到經濟學人最近發表了兩篇文章:
你沒看錯,兩個程式語言都是寫資料新聞的最佳程式語言,經濟學人編輯團隊內部各有不同派別的資深分析師推崇,他們索性各寫一篇,讓它們倆同時成為「最佳」。
(˚∀˚)

(來源:經濟學人)
話雖如此,儘管 R 與 Python 在資料與統計分析任務的功能性高度相似,在某些子領域我認為仍存在重要差異:
- 資料工程與 MLOps 這些需要部署 APP 產品的任務,Python 無疑才是更適合的選擇
- Python 是通用程式語言(General-purpose programming language),意思是 Python 適合你在電腦執行的任何工作(不只是數值運算與統計)
- Python 的執行速度也比 R 語言更快速,因此更具有可擴充性(scalability)、適合設計成上線使用的產品
- 貝氏統計 與多階層模型(Multi-level / Mixed-effect models),筆者主觀覺得 R 語言的功能更完整、好用
總之,資料科學家眼中 R 與 Python 相似多過於相異,筆者好豪依然認為對台灣資料科學職場發展的新手來說,Python 更具優勢,我後續的段落中將深入探討我的論點。
(囉唆補充:想入行資料科學,該精通 R 或 Python 可能會有選擇障礙,但 SQL 沒有!我的 多次面試經驗 都體認到 SQL 非學不可!請務必先學好 SQL 資料庫查詢技能)
如果是為了找工作,當然選老闆聽過的程式語言!
根據想達成的目標不同,適合的工具也不同。
如果你的目標是在統計學領域的學術界發展,例如攻讀統計學研究所、或是博士班 PHD,R 語言是學術界非常常用的、幾乎是非學不可。R 語言自始自終都是為了統計學家而生,有豐富的內建函式與套件可以做到統計檢定、建模、以及視覺化。在碩博等級的課程中,你讀的很多統計學課本可能是用 R 語言來呈現範例,統計系也有許多教授會是 R 語言的專家,這樣你還能不懂 R 嗎?
相較之下,如果你以「在台灣找到資料科學家工作」為目標,當然要選業界熟悉的語言,在台灣的資料科學界 – 無疑就是 Python。
筆者目前在 Google 工作,資深資料科學家們會定期開會討論面試招聘新人的方法指引,近期會議還特別討論到,考核程式設計與數值運算能力時,公司會讓面試者自己選擇最擅長的語言,Python、R、或是 SQL 都可以,公司會事先安排熟悉該程式的分析師來擔綱面試官。我在這個會議後,心中深深覺得 Google 真的很勇於投入資源讓來面試的人才發揮能力,而我同時也難過地想 — 台灣工作環境的資料科學家面試要做到這樣 … 還早。
儘管我個人 R 跟 Python 都很喜歡,但不得不承認,Python 在台灣的資料分析領域就是明顯比較火紅。比起上述的 Google 美談,我只聽聞過有人因為只擅長 R 或 SQL,然後不夠擅長某公司團隊熟悉的 Python,因此面試被拒絕掉;更甚者,人資也可能只聽過較熱門的 Python,用關鍵字篩選履歷的時候,如果你的履歷表上只寫了 R 語言、而沒有 Python,可能因此直接被過濾掉、完全沒有面試機會。

(截圖來源:Yourator)
掙錢找工作是現實的,使用老闆或未來主管聽過的程式語言很重要,想在台灣找資料科學工作,必須精通 Python。
目標不限找工作的話,若你是大學生或研究生,趕快檢查下個學期的必修課課表,要是統計學教授已經在課程大綱預告會用 R 語言上課,我這裡有份 R 語言自學資源整理,幫助你從現在開始預習。
看看你的偶像或朋友用什麼、就跟著學!
你有沒有看著藝人或偶像歌手穿什麼好看的衣服,想學他們打扮方式的心情呢?學寫程式也一樣,我會參考我心中的模範使用什麼語言,跟著他們一起學習!像是參考我喜歡的資料科學家他們分享的社群貼文、部落格、或 Github 程式碼,看看他們用什麼語言。一來以偶像為模範我更有動力學習,二來他們基於實戰經驗提供的最佳做法讓我學習更快速。
舉例而言,我很尊敬的資料科學前輩 — 大鼻,不只曾在知名企業擔任分析顧問、更是哈佛商學院的行銷資料科學博士生,我經常拜讀他的知識分享,也知道他是 R 語言的專家與愛好者。因此想著:自己認同的強者使用這個程式語言,以此達成很多重要專案,那我投入時間和精力跟著他一起鑽研這個語言,肯定不會錯!

(圖片來源:Hahow)
另個例子,T-Brain AI 實戰吧 是我很喜歡的資料科學競賽平台,過去也曾經跟朋友 參賽,部分競賽結束之後,前幾名隊伍會在網站上公布自己的分析做法跟程式碼,每次看他們的案例分享都讓我讚嘆他們的實力與創意,我從他們身上學到許多。仔細查看冠軍隊伍使用的程式語言是 Python 還是 R,知道這些強者用這些語言能在比賽名列前茅,也讓我更有信心繼續學好這些程式語言。
不只是偶像或前輩,觀察職場的同事、導師、朋友、或者你參與的技術社群,看看他們經常談論或使用的是 R 還是 Python,選擇他們精通的語言、跟著學,是很有好處的。畢竟,學習程式設計肯定會有遇到瓶頸、或是感到辛苦的時候,身邊有著追求相同學習目標的同儕可以彼此鼓勵、互相討論,在漫長的學習路上是非常重要的。
學習資源越豐富、就越容易學
我們直接來個例子,到知名的 線上課程平台 Hahow 搜尋一下,馬上可以看到,教學「R 語言」的相關課程不到 5 堂課,而教學「Python」的課程則超越 20 堂!這只是 Hahow 這個平台而已,其他部落格、YouTube、技術社群等等可想而知,在台灣的中文技術分享與討論,Python 顯然比 R 語言熱門。
R 語言依然火紅且好用,但它的討論熱度是全球性的、在台灣並不是真的那麼夯。如果語言(中文 vs 英文)會大幅影響你學習的意願與速度,請考慮選擇先學 Python、而不是 R 語言。
我認為「學習資源足夠豐富」是一個對於學習效率影響重大、但較少有人強調的因素。筆者好豪是 R 語言愛好者,多年來在做資料視覺化與 A/B 測試結果計算 時經常使用、也會用 R 語言參加 資料科學競賽,也正是因為多年使用與學習的經驗,我親身體會到 R 語言在台灣的繁體中文學習資源不足,或許有許多入門等級的教學文章,但只要你想試著突破初學者等級、多學一點 R 的技巧,中文資源相對於英語真的非常匱乏。
相對的,Python 是現在的大紅人,你可以非常輕鬆地找到 Python 資料科學的繁體中文部落格文章或影片教學,甚至有非常多中文且開源、免費的 線上課本,內容既豐富又有架構,跟 R 語言比起來,Python 的中文學習者真的幸福太多了。
相信會看這篇文章、好學的你,肯定已經搜尋不少次 R 語言與 Python 關鍵字,也可能已經開始蒐集課本書單,那你或許已經發現,手上累積的學習資源清單,Python 比 R 語言豐富得多吧?
要是你能夠有餘裕地全英文閱讀學習,學習資源這點對你來講不是問題,該選 R 語言還是 Python 就如前兩個小節所述,或許只需考慮學習目標、熱情、與社群同儕即可;若你需要中文的資源讓你有更高的學習效率,那就選擇 Python 吧!
常見問題
哪個語言薪資比較高?
我目前還沒看過在台灣職場有 R 語言與 Python 資料科學家的薪資統計數據比較,對薪資比較有興趣的話,可以到 薪資公開資訊網站 觀察各職缺薪資狀況、並且研究各職缺的技能要求是否包含 R 語言或 Python,我相信這樣調查可以幫助你對各技能的薪水分佈略知一二。
我完全沒有程式背景,該從哪個語言開始學起?哪個比較好學?
Python 的語法較為直觀,且有更豐富的中文學習資源,對於完全沒有程式背景的初學者來說,Python 是一個較好的入門選擇。Python 的語法設計更接近自然語言,初學看著基礎語法的時候會覺得,Python 程式碼就像是基本的英文文法一樣,學習曲線較為平緩。此外,Python 在資料科學領域的應用廣泛,社群資源豐富,更容易找到學習的協助。
我未來想從事機器學習工作,該選哪個語言?
如果你的機器學習是用在商業分析、協助產品決策,我認為兩者皆可。Python 和 R 都可以進行機器學習建模,Python 有 scikit-learn
可以用,R 則可使用 caret
、mlr
。
然而,就如前面提到的,如果你所指的機器學習工作涉及更多數據產品、資料工程、MLOps,例如,設計 LLM 聊天機器人,Python 較為適合。
學了其中一個,再學另一個會不會很困難?
有認真學的話,R 語言與 Python 之間轉換照理說不會太困難。程式設計有很多概念是不同程式語言之間相通的,像是資料結構、函數、演算法、設計模式等等。有經驗的工程師們都是熟悉一、兩個語言後,都能很快融會貫通其他不同語言。
然而,我個人一直覺得 R 語言的語法比較特殊,從任何語言轉換到 R 語言可能都會有點不習慣。例如,x = 42
這種變數指定的基本語法,在 Python、Java、或 C++ 等等幾乎都長這樣,但在 R 語言可能會有 x <- 1:42
這種寫法,通常會讓資工背景的人第一次看到覺得傻眼。
但這種語法差異問題,轉換學習任何另個語言幾乎都會遇到,總之,我相信專注學好一個你愛的程式語言,未來要轉換其他語言都不會是大問題。
筆者偏好用哪一個?
從我的 Github 應該可以看出來,我 Python 跟 R 都會經常使用。
我以前是 R 語言的高度愛好者,我覺得 tidyverse
+ tidymodels
+ ggplot2
是超強組合、可以解決我 95% 的資料科學研究與工作問題。後來終究被流行浪潮推動,在朋友、同事、工作接手的專案等等都是 Python 的逼迫之下,為了溝通交流方便,目前主要還是使用 Python。
但我還是會在閒暇娛樂的時間持續鑽研 R 語言,我 2024 年關注最多的是 mlr3
專案,R 的開發社群還在持續成長、真的很酷!
結語:這三個準則適用於很多「選擇障礙」難題
不只是程式語言的選擇,我們很多工具的使用都會有選擇障礙,像是:
- 該用哪個視覺化工具,Tableau 還是 PowerBI?
- 該用哪個筆記軟體,Notion 還是 EverNote?
- 又或者是該選什麼前端網頁設計框架,Vue 還是 React?
這篇文章提到三個思考點,都是我面對這些選擇障礙會運用的準則:能幫助我更快達成專案目標、我的偶像跟同儕都在用讓我更有熱情學習、我能輕易找到多樣學習資源讓學習不中斷。
而基於這些準則,若你是以在台灣找資料科學工作為目標、而且是程式設計新手,推薦你從 Python 開始吧!
我在這篇 Python 自學資源整理 文章搜羅了我覺得非常實用的學習資源,幫助你建立屬於你自己的 Python 程式設計學習地圖,希望你學習愉快。
如果你喜歡這篇資料科學心得筆記,歡迎點擊下方按鈕加入書籤、或者分享給其他朋友們。也歡迎你追蹤好豪的 Facebook 粉絲專頁 與 Threads 帳號,我會持續與你分享資料科學的新資訊!