Python與R、Matlab在數據分析的趨勢對比

2020-11-30 騰訊網

作為一枚程式設計師,想要研究Python程式語言與數學學習(教學)的結合,就不能不了解以及比對一下其他數學學習與應用的解決方案,比如R語言、Matlab等數學軟體。經過廣泛的搜索了解了一下國外的反饋與趨勢之後,最終的結論就是Python確實是未來。

Python與R語言的對比

Python與R語言在數據分析領域的對比,DataCamp上有一篇引用率非常高的文章,數據分析選擇R還是Python,不過這篇文章是2015年寫的,我們先大致總結一下文章內容:

R主要用於學術與研究,也開始迅速進入企業市場,越是接近統計學、研究、數據科學,你就會越偏愛R,而Python主要用於程式設計師想進入數據分析領域、掌握統計技能,以及其他開發人員進入數據科學領域。如果你的工作越接近工程環境,你會越偏愛Python。

R的社區生態主要是研究員,數據科學家、統計學家和量化研究員,而Python主要是程式設計師和開發者。

R學習門檻比較高,但是當你掌握了基礎之後就學起來比較容易,R對程式設計師來說不難;Python可讀性強,入門非常容易,被公認為非常不錯的入門程式語言。

在2015年前的Tiobe程式語言的排名上Python排名在第4或第5,R排在第17到13。而據2015數據分析領域,用R的研究員佔58%,Python佔42%,兩者都用的佔23.45%;

在2013年,R轉Python的有26%,Python轉R的有18%,而新進入數據分析領域的有44%的人選擇R,23%的人選擇Python.

從2015年之前的情況看來,正如作者所說,R和Python在數據分析領域確實平分秋色,難分伯仲,從數據中我們可以看出,雖然Python相比R更流行,在編程方面更有優勢,但是在數據科學領域,選擇使用R的人更多。

但是翻到2018年的文章裡看到2016、2017年的數據,情況下發生了逆轉。在數據科學領域,2016年有34%的人選擇Python,42%的人選擇R,而到了2017年41%的人選擇Python,36%的人選擇R。在2017年的調查統計裡數據科學家和工程師最流行的程式語言分別是JavaScript(58.7%,令人驚訝啊,可能與數據可視化有關?)、SQL(58%)、Python(45%),而R(11.2%),Python在商業領域比較火,而R在學術和研究領域比較多,所以不那麼流行吧。而在最近的Tiobe的排行榜上,與數據科學相關的程式語言Python、R、SQL、Matlab等漲幅都比較大,Python在整個程式語言的流行度也由2014年的2%猛增到2019年8.26%,躍居第3,成為2018年年度語言。

Python、R、Scala在數據科學領域的流行包

Python與Matlab的對比

雖然不是學數學的,但是Matlab的大名可是如雷貫耳,與數學相關專業、相關行業的學生、工程師們基本一定會使用到它。MathWorks公司跟設計公司Adobe、三維軟體公司Autodesk一樣都是極其硬核的存在,旗下的產品不僅是學習必備,而且是工程(比工作聽起來霸氣)必備。我個人對Matlab的了解極其有限,Python與Matlab的對比我也只能像一個產品經理去廣泛查閱專業意見來權衡利弊。我所得出的結論也只是基於掌握了Python的前提,斷不敢用偏頗的立場去褻瀆神器。 我們來看一下美國相關專業人員對兩者的對比,只是粗略而不精準的翻譯一下。

我是一名工程師,之前長期使用Matlab來處理複雜的數學運算都沒有遇到什麼大的問題,就在幾個月前因為崗位需要學習了Python之後,我才意識到Matlab相比Python是多麼的糟糕。之前需要我用Matlab花一整天處理的問題用Python只需數小時,Python的表現、流暢度讓我驚訝。而且使用Python我可以做之前用Matlab做的任何事情,而且更優秀。因此我非常建議Matlab使用者轉向Python。Python程式語言比Matlab更強大,能夠聯合非常多的外部工具模塊,只需一個文件就可以調用非常多的庫、函數、類,語法也更加簡單,面向對象開發也更加方便,還能非常方便地調用C、C++、Fortran。Python是免費的,而且可以運行在更多平臺上面。 ---Stackoverflow某工程師

經過調查Matlab與Python的宿命之爭在2011年就開始了,而且網上Matlab與Python的對比文章、評論非常之多。Matlab官方在2013年就開始拿Matlab和Python進行對比官方對比最是致命:MATLAB OR Python中文,年代越近,由Matlab全面轉向Python的建議就越多,更多人直言Python是未來的程式語言,在Python與Matlab的選擇之上,看了非常多的建議,已成一邊倒的趨勢。 有人列出了Python相對於Matlab的8大優勢,我只粗略翻譯一下這8大優勢,詳情大家可以去查看原文:

Python的代碼相比於Matlab更簡潔,可讀性更強;

和其他編程一樣,Python都是從0開始計數,而Matlab不是;

Python可以更好的支持哈希字典;

面向對象開發讓Python更簡單、更優雅;

Python免費且開源;

Python一個文件、模塊裡可以包含非常多的函數;

Python支持import聲明;

Python支持更多圖像處理的包和工具集

在PyCon 2017年的大會上,多位大佬提出科學家應該全面擁抱Python,在2015年開始Python在NASA的地位就開始遙遙領先IDL、Matlab和Fortran。由於這裡我們只討論Python和Matlab在數學上的對比,至於科學家轉型Python的優勢的細節,大家可以看DataCamp的雄文。

小結

其實在寫這篇文章之前,我就問過一下包括清華在內的學校以及一些數學專業的學生,Matlab和R還是佔主流,但是經過一番調查發現在美國Python在數據科學、數學等方面好像漸成壓倒性的優勢。這也激勵我要把用Python學數學的專欄給寫下去。

以上為2019年3月份的對比

2020年11月的新趨勢調查

對於沉迷於比較的我來說,2019年調查的對比結果可能過於陳舊,於是我又進行了一番調查。

以下是Kaggle (了解數據分析的童鞋,我就不介紹了)2019年年底做的用戶調查,收到了近2萬份的回覆,從事數據分析相關行業的職業主體最多的是數據科學家、學生、軟體開發工程師(程式設計師肯定首選Python)、市場調查、商業分析、產品經理和數據工程師、統計學家等:

而其中MySQL和PostgresSQL是最流行的關係型資料庫,最流行的AI框架PyTorch, Tensorflow, and Keras全部都是基於Python的,Matplotlib和Seaborn是用得最多的數據可視化包,怎麼又和Python貼合得比較緊密?50%以上的人使用Jupyter notebook,其次是VS Code和R studio(兩個差不多)。

而這2萬人最經常使用的程式語言是Python,其次是SQL,然後是R,從數據上來看使用Python的人是R的3倍,是Matlab的N倍。而只使用Python的人比只使用R的人要高數倍,也就是說會R的童鞋也會去學Python,會Python的未必會去學R。

從以上數據可以看出,經過了幾年的發展(可以了解一下我之前調查的情況),Python的流行度越發地擠佔了R和Matlab的空間了,數據顯示這就是趨勢,不以個人的喜好或者理解而改變。

相關焦點

  • 業界| 四大機器學習程式語言對比:R、Python、MATLAB、Octave
    原標題:業界 | 四大機器學習程式語言對比:R、Python、MATLAB、Octave 選自 towardsdatascience 作者:作為 MathWorks 開發的一種專用程式語言,MATLAB 允許矩陣運算、函數和數據繪圖、算法實現、用戶界面創建,以及與用其他語言(包括 C、C++、C#、Java、Fortran、Python)寫成的程序進行交互。 儘管 MATLAB 的設計初衷是數值計算,但其中的可選工具箱使用 MuPAD symbolic engine,具備符號計算能力。
  • 用R也可以跑Python了
    如果你主要從事數據分析、統計建模和可視化,R大概是你的不二之選。但如果你還想來搞點深度學習,整個自然語言處理,那你可還真得用Python。如果你處於交叉領域,很可能就需要兩種語言切換。通過使用repl_python()函數,可以使Python和R交互。
  • 【Matlab】 長時間序列殘差分析
    01殘差分析就是通過殘差所提供的信息,分析出數據的可靠性、周期性或其它幹擾 。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    總目錄 零基礎全能篇(4套課程) 實用編程技巧進價(1套課程) 數據分析與挖掘(8套課程) 辦公自動化(3套課程) 機器學習與人工智慧(7套課程) 開發實戰篇(4套課程) 量化投資(2套課程) 網絡爬蟲(6套課程) 資料庫操作(1套課程) python
  • KDnuggets:2013年數據分析/數據挖掘/數據科學使用語言排行榜
    同時我們發現,R與python用戶存在一定的重疊。之前的KDnuggets的調查主要是關注:統計與分析軟體,但有時候一個全面與強大的程式語言是需要的。這也是最近一次的KDnuggets調查關注的重點,我們諮詢:在2013年中,什麼樣的程序或者統計語言你是在做分析、挖掘、科學計算的時候所需要的?
  • 如何用Matlab/Python/Stata做簡單回歸分析
    : 數據採用的是Pieters & Bijmolt(1997)的關於Consumer Memory for Television Advertising調查結果。這並不是重點,其實就可以簡單理解為現在有一個橫截面數據:y是unaid,x包括dur、ncb、rank、year這四個變量,我們現在關心的就是y跑在四個解釋變量的多元回歸模型。
  • python學習筆記:同時畫多圖,折線圖,箱線圖,條形圖,柱狀圖等
    紅色bar(x,y1,bottom=y,color='r')#箱線圖subplot(2,3,5)boxplot(x)#散點圖subplot(2,3,6)scatter(x,y)#將六個子圖在一張圖紙中同時展示show()
  • Python數據可視化實例之繪製圖表
    Python數據可視化實例之繪製圖表原創 蟲蟲安全 2018-09-05 17:41:57得利於語言的簡單明了、豐富的數據結構、豐富的類和模塊,Python如今成了數據科學中的香餑餑,成了matlab、R語言之外又一強大的數據分析工具。拋開其他方面的、今天蟲蟲帶大家一起來探索Python在數據可視化方面的應用。
  • matlab中的成型濾波器設計
    matlab 中成型濾波器設計有好幾個函數:rcosineFd=9600;Fs=38.4e3;[num,den] = rcosine(Fd,Fs,'sqrt',0.25);freqz(num);其中的Fd表示輸入數據的採樣率
  • 放棄PK,擁抱合作——R和 Python 能做出什麼新花樣?
    from-r-vs-python-to-r-and-python-aa25db33ce17我們更應該關注的是技能,而不是工具。我們的最終目標應該是做更好的分析,得出更好的見解,選擇一種程式語言不應該成為實現這一目標的障礙。讓我們來看看這兩種語言的各個方面和他們有哪些優勢與弊端。
  • 誤差分析指標計算之matlab實現
    感謝關注matlab愛好者公眾號!如果公眾號文章對您有幫助,別忘了點擊分享和「在看」哦!
  • Python數據分析入門教程(一):獲取數據源
    作者 | CDA數據分析師俗話說,巧婦難為無米之炊。不管你廚藝有多好,如果沒有食材,也做不出香甜可口的飯菜來,所以想要做出飯菜來,首先要做的就是要買米買菜。而數據分析就好比是做飯,首先也應該是準備食材,也就是獲取數據源。一、導入外部數據導入數據主要用到的是Pandas裡的read_x()方法,x表示待導入文件的格式。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    其中,有些可能是相當有名的,有些可能是新的,但我相信下次您從事數據分析項目時,它們會非常有用。1.Profiling the pandas dataframeProfiling 是一個幫助我們理解數據的程序,而 Pandas Profiling 正是實現這一點的一個 python 包。
  • MATLAB R2020a中文破解版 附安裝破解教程
    該軟體常用於機器人、數據分析、無線通信、深度學習、信號處理、計算機視覺等眾多領域之中,深厚上百萬科學家和工程師的信賴,提供了科學數據可視化、矩陣計算、數值分析、繪製函數、數據圖像、實時編輯器等實用的功能於一體,能夠幫助設計人員更快更好的完成設計上的工作,還支持C、C++、Python編寫的程序接口,並能在上述程式語言中設計和構建用戶界面。
  • 使用Python玩轉高等數學(5):三角函數
    matplotlib的繪圖命令和matlab的繪圖命令基本相似,在使用上可以互相借鑑。安裝matplotlib最簡單的方法就是在作業系統的命令行窗口分別輸入並執行下面的命令:python -m pip install -U pip setuptoolspython -m pip install -U matplotlib使用matplotlib繪圖,會用到Numpy庫,Numpy庫主要用於科學計算。
  • Python數據分析:pandas讀取和寫入數據
    我的公眾號是關於自己在數據分析/挖掘學習過程中的一些技術和總結分享,文章會持續更新......繼續深入學習pandas相關操作,數據讀取寫入、分組、合併,轉換等等。前面一篇文章裡已經寫了關於描述性統計以及常用的基本操作。接下來的一段時間裡,我將陸續地去掌握並輸出。這篇文章是關於數據讀取與寫入的知識點。
  • 科研必備:MATLAB常用數據擬合方法(贈安裝包)
    Matlab是一個很強大的數據處理軟體,是人們進行數據分析的得力助手。一般我們做社會調研或科學研究時,會得到很多實驗數據。
  • 【R語言】遙感影像Theil Sen趨勢分析MK檢驗
    library(sp)library(raster)library(rgdal)library(trend)setwd('E:/ArcgisDATA/xjMOD13test/NDVI')fl=list.files(pattern = '*20')firs=raster(fl[1])for (i in 1:21) { r=raster(fl[
  • 數據分析方法:趨勢分析法
    編輯導語:在我們日常業務中總會用到數據分析的各種方法,最常用最簡單的就是「趨勢分析法」,一目了然的走勢可以讓我們更直觀的看清楚;本文作者詳細介紹了數據分析方法中的趨勢分析法,我們一起來看一下。要說數據分析裡,什麼方法最常用?當然是趨勢分析法;只要和數據有關,幾乎每個人,時時刻刻都在用。很多同學一聽:「啥?還有這方法啊?我咋沒感覺到呢!」
  • 【Matlab】柵格數據相關分析及顯著性檢驗
    相關分析就是對總體中確實具有聯繫的標誌進行分析,其主體是對總體中具有因果關係標誌的分析。