旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢(xún)熱線:010-5367 2995
首頁(yè) > 熱門(mén)文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)

時(shí)間:2020-08-14來(lái)源:lb577.com點(diǎn)擊量:作者:Sissi
時(shí)間:2020-08-14點(diǎn)擊量:作者:Sissi




  從主觀的角度來(lái)看,已有數(shù)十篇文章比較了Python與R。大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)旨在更客觀地研究語(yǔ)言。我們將在Python和R中并排分析數(shù)據(jù)集,并顯示兩種語(yǔ)言需要哪些代碼才能獲得相同的結(jié)果。這將使我們無(wú)需猜測(cè)即可了解每種語(yǔ)言的優(yōu)點(diǎn)和缺點(diǎn)。在AAA教育,我們教授兩種語(yǔ)言,并且認(rèn)為這兩種語(yǔ)言在數(shù)據(jù)科學(xué)工具包中都占有一席之地。
 

  我們將分析NBA球員及其在2013-2014賽季的表現(xiàn)數(shù)據(jù)。對(duì)于分析的每個(gè)步驟,我們將顯示Python和R代碼,以及對(duì)不同方法的一些解釋和討論。事不宜遲,讓我們開(kāi)始這場(chǎng)Python vs R對(duì)決!
 

  導(dǎo)入CSV
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  上面的代碼會(huì)將CSV文件nba_2013.csv(包含2013-2014賽季NBA球員的數(shù)據(jù))加載到nba兩種語(yǔ)言的變量中。唯一的實(shí)際區(qū)別是在Python中,我們需要導(dǎo)入pandas庫(kù)才能訪問(wèn)數(shù)據(jù)框。在R中,雖然我們可以使用基本R函數(shù)導(dǎo)入數(shù)據(jù)read.csv(),但使用readr庫(kù)函數(shù)read_csv()的優(yōu)點(diǎn)是速度更快,并且數(shù)據(jù)類(lèi)型的解釋一致。數(shù)據(jù)框在R和Python中均可用,并且是二維數(shù)組(矩陣),其中每一列可以具有不同的數(shù)據(jù)類(lèi)型。在此步驟結(jié)束時(shí),兩種語(yǔ)言均已將CSV文件加載到數(shù)據(jù)框中。
 

  查找行數(shù)
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  這將打印出播放器的數(shù)量和每個(gè)播放器中的列數(shù)。我們有481行或播放器,以及31包含播放器數(shù)據(jù)的列。
 

  查看數(shù)據(jù)的第一行
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  這幾乎是相同的。兩者都打印出數(shù)據(jù)的第一行,并且語(yǔ)法非常相似。Python在這里更面向?qū)ο?,并且head是數(shù)據(jù)框?qū)ο蟮姆椒?,而R具有單獨(dú)的head功能。當(dāng)我們開(kāi)始使用這些語(yǔ)言進(jìn)行分析時(shí),這是一個(gè)常見(jiàn)的主題。Python更面向?qū)ο?,R更實(shí)用。
 

  查找每個(gè)統(tǒng)計(jì)的平均值
 

  讓我們找到每個(gè)統(tǒng)計(jì)的平均值。如我們所見(jiàn),這些列的名稱(chēng)如fg(制定了目標(biāo))和ast(輔助)。這些是球員的賽季統(tǒng)計(jì)數(shù)據(jù)。(如果您想對(duì)所有統(tǒng)計(jì)信息進(jìn)行更全面的說(shuō)明,請(qǐng)查看此處。)
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  此處,Python和R的方法存在一些主要差異。在這兩種方法中,我們都在數(shù)據(jù)框列上應(yīng)用了一個(gè)函數(shù)。在Python中,默認(rèn)情況下,數(shù)據(jù)框上的mean方法將查找每列的平均值。
 

  在R中,我們可以使用兩個(gè)常用軟件包中的函數(shù)來(lái)選擇要平均的列,然后將mean函數(shù)應(yīng)用于它們。%>%稱(chēng)為“管道” 的操作員將一項(xiàng)功能的輸出作為下一項(xiàng)功能的輸入。取字符串值的平均值只會(huì)導(dǎo)致NA-不可用。我們可以使用來(lái)僅取數(shù)字列的平均值select_if。
 

  但是,我們NA在取平均值時(shí)確實(shí)需要忽略值(要求我們傳遞na.rm=TRUE給mean函數(shù))。如果不這樣做,則最終NA得到像列的均值x3p.。此列是三點(diǎn)百分比。一些球員沒(méi)有三分球命中率,所以他們的百分比失了。如果我們嘗試使用meanR中的函數(shù),則會(huì)得到NA響應(yīng),除非我們指定na.rm=TRUE,否則NA在取平均值時(shí)會(huì)忽略值。.mean()默認(rèn)情況下,Python中的方法已經(jīng)忽略了這些值。
 

  進(jìn)行成對(duì)散點(diǎn)圖
 

  探索數(shù)據(jù)集的一種常用方法是查看不同的列如何相互關(guān)聯(lián)。我們會(huì)比較ast,fg和trb列。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  最后,我們得到了非常相似的圖,但這表明R數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)如何具有許多較小的程序包(GGally是ggplot2的幫助程序包,即ggplot2,是最常用的R繪圖程序包),并且通常還有更多可視化程序包。在Python中,matplotlib是主要的繪圖程序包,而seaborn是matplotlib上廣泛使用的層。使用Python進(jìn)行可視化,通常有一種主要的方法來(lái)完成某項(xiàng)工作,而在R中,有許多支持不同的做事方法的程序包(例如,至少有六個(gè)程序包可以制作成對(duì)圖)。
 

  聚集玩家
 

  探索此類(lèi)數(shù)據(jù)的一種好方法是生成聚類(lèi)圖。這些將顯示哪些球員最相似。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  為了正確集群,我們刪除任何非數(shù)字列或列缺少值(NA,Nan,等)。在R中,我們通過(guò)在每列上應(yīng)用一個(gè)函數(shù)來(lái)完成此操作,如果該函數(shù)缺少任何值或不是數(shù)字,則將其刪除。然后,我們使用集群程序包執(zhí)行k均值并5在我們的數(shù)據(jù)中找到集群。我們?cè)O(shè)置一個(gè)隨機(jī)種子set.seed用于能夠再現(xiàn)我們的結(jié)果。
 

  在Python中,我們使用主要的Python機(jī)器學(xué)習(xí)包scikit-learn來(lái)擬合k-均值聚類(lèi)模型并獲得我們的聚類(lèi)標(biāo)簽。我們使用非常相似的方法來(lái)準(zhǔn)備我們?cè)赗中使用的數(shù)據(jù),只是我們使用get_numeric_data和dropna方法來(lái)刪除非數(shù)字列和缺少值的列。
 

  按集群繪制玩家
 

  現(xiàn)在,我們可以按組繪制玩家以發(fā)現(xiàn)模式。一種方法是首先使用PCA使數(shù)據(jù)二維化,然后繪制數(shù)據(jù),并根據(jù)聚類(lèi)關(guān)聯(lián)對(duì)每個(gè)點(diǎn)進(jìn)行著色。
 

  [R
 

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  繪制了我們的數(shù)據(jù)散點(diǎn)圖,并根據(jù)聚類(lèi)對(duì)數(shù)據(jù)的圖標(biāo)進(jìn)行了陰影處理或更改。在R中,使用的clusplot功能是群集庫(kù)的一部分。我們通過(guò)pccompR中內(nèi)置的功能執(zhí)行了PCA 。
 

  使用Python,我們?cè)趕cikit-learn庫(kù)中使用了PCA類(lèi)。我們使用matplotlib來(lái)創(chuàng)建繪圖。
 

  分為訓(xùn)練和測(cè)試集
 

  如果我們想進(jìn)行監(jiān)督式機(jī)器學(xué)習(xí),將數(shù)據(jù)分為訓(xùn)練集和測(cè)試集是個(gè)好主意,這樣就不會(huì)過(guò)擬合。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python中對(duì)R進(jìn)行比較,我們可以看到,R有更多的數(shù)據(jù)分析側(cè)重建宏,喜歡floor,sample和set.seed,而這些是通過(guò)包稱(chēng)為在Python( ,math.floor,)。random.sample random.seed在Python中,最新版本的pandas帶有一種sample方法,該方法返回從源數(shù)據(jù)幀中隨機(jī)采樣的一定比例的行-這使代碼更加簡(jiǎn)潔。在R中,有一些程序包使采樣更簡(jiǎn)單,但沒(méi)有比使用內(nèi)置sample函數(shù)簡(jiǎn)單得多。在這兩種情況下,我們都設(shè)置一個(gè)隨機(jī)種子以使結(jié)果可重復(fù)。
 

  單變量線性回歸
 

  假設(shè)我們要根據(jù)每個(gè)球員的射門(mén)得分來(lái)預(yù)測(cè)每個(gè)球員的助攻數(shù)。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Scikit-learn具有線性回歸模型,我們可以擬合并從中生成預(yù)測(cè)。[R依賴(lài)于內(nèi)置lm和predict功能。predict根據(jù)傳入的擬合模型的類(lèi)型,其行為將有所不同-它可以與各種擬合模型一起使用。
 

  計(jì)算模型的摘要統(tǒng)計(jì)信息
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  如果要獲取有關(guān)擬合的摘要統(tǒng)計(jì)信息(如r平方值),則在Python中要比在R中做更多的事情。使用R,我們可以使用內(nèi)置summary函數(shù)來(lái)獲取有關(guān)模型的信息。對(duì)于Python,我們需要使用statsmodels包,該包允許在Python中使用許多統(tǒng)計(jì)方法。我們得到相似的結(jié)果,盡管通常在Python中進(jìn)行統(tǒng)計(jì)分析會(huì)比較困難,并且R中存在的某些統(tǒng)計(jì)方法在Python中不存在。
 

  擬合隨機(jī)森林模型
 

  我們的線性回歸在單變量情況下效果很好,但是我們懷疑數(shù)據(jù)中可能存在非線性。因此,我們想擬合一個(gè)隨機(jī)森林模型。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  這里的主要區(qū)別是我們需要使用R中的randomForest庫(kù)來(lái)使用該算法,而它是內(nèi)置于scikit-learn中的Python。scikit-learn具有一個(gè)統(tǒng)一的接口,可與Python中的許多不同的機(jī)器學(xué)習(xí)算法一起使用,并且Python中每種算法通常只有一個(gè)主要實(shí)現(xiàn)。使用R,有許多較小的程序包,其中包含各個(gè)算法,通常使用不一致的方法來(lái)訪問(wèn)它們。這導(dǎo)致算法的多樣性更大(很多都有幾種實(shí)現(xiàn)方式,許多是剛從研究實(shí)驗(yàn)室中脫穎而出的),但是卻對(duì)可用性造成了影響。
 

  計(jì)算誤差
 

  現(xiàn)在我們已經(jīng)擬合了兩個(gè)模型,讓我們計(jì)算誤差。我們將使用MSE。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  在Python中,scikit-learn庫(kù)具有我們可以使用的各種錯(cuò)誤度量。在R中,可能會(huì)有一些較小的庫(kù)來(lái)計(jì)算MSE,但是手動(dòng)使用兩種語(yǔ)言都非常容易。幾乎可以肯定,由于參數(shù)調(diào)整而導(dǎo)致的錯(cuò)誤之間存在很小的差異,這并不重要。
 

  下載網(wǎng)頁(yè)
 

  現(xiàn)在我們掌握了2013-2014年NBA球員的數(shù)據(jù),下面我們來(lái)補(bǔ)充一些數(shù)據(jù)。我們只看到一個(gè)框得分從NBA總決賽在這里,以節(jié)省時(shí)間。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  在Python中,請(qǐng)求包使所有網(wǎng)站都可以使用一致的API輕松下載網(wǎng)頁(yè)。在R中,RCurl提供了類(lèi)似的簡(jiǎn)單請(qǐng)求方法。兩者都將網(wǎng)頁(yè)下載為字符數(shù)據(jù)類(lèi)型。注意:此步驟對(duì)于R中的下一步驟是不必要的,但出于比較目的而顯示。
 

  提取玩家框得分
 

  現(xiàn)在我們有了網(wǎng)頁(yè),我們需要對(duì)其進(jìn)行解析以提取玩家的分?jǐn)?shù)。
 

  [R

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  Python

大數(shù)據(jù)分析Python和R語(yǔ)言的優(yōu)缺點(diǎn)
 

  這將創(chuàng)建一個(gè)包含兩個(gè)列表的列表,第一個(gè)列表的框得分為CLE,第二個(gè)列表框得分為GSW。兩者都包含標(biāo)題,以及每個(gè)玩家及其游戲中的統(tǒng)計(jì)信息。我們現(xiàn)在不會(huì)將其轉(zhuǎn)換為更多的訓(xùn)練數(shù)據(jù),但是可以輕松地將其轉(zhuǎn)換為可以添加到我們的nba數(shù)據(jù)框中的格式。
 

  R代碼比Python代碼更復(fù)雜,因?yàn)闆](méi)有使用正則表達(dá)式選擇項(xiàng)目的便捷方法,因此我們必須進(jìn)行其他解析才能從HTML中獲取團(tuán)隊(duì)名稱(chēng)。R還不鼓勵(lì)使用for循環(huán),而是希望沿向量應(yīng)用函數(shù)。我們lapply經(jīng)常這樣做,但是由于我們需要根據(jù)是否是標(biāo)題而對(duì)每一行進(jìn)行不同的處理,因此我們將所需項(xiàng)的索引以及整個(gè)rows列表傳遞給函數(shù)。
 

  我們使用rvest廣泛使用的R Web抓包來(lái)提取所需的數(shù)據(jù)。請(qǐng)注意,我們可以將url直接傳遞到rvest中,因此R中不需要最后一步。
 

  在Python中,我們使用BeautifulSoup,這是最常用的Web抓包。它使我們能夠遍歷標(biāo)簽并以簡(jiǎn)單的方式構(gòu)造列表列表。
 

  結(jié)論中的Python vs R
 

  我們已經(jīng)看過(guò)如何使用R和Python分析數(shù)據(jù)集。我們沒(méi)有涉及許多任務(wù),例如,保留分析結(jié)果,與他人共享結(jié)果,進(jìn)行測(cè)試并使產(chǎn)品準(zhǔn)備就緒并進(jìn)行更多可視化。關(guān)于此主題還有很多要討論的內(nèi)容,但是基于上面所做的事情,我們可以得出一些有意義的結(jié)論:
 

  R的功能更多,Python的更面向?qū)ο蟆?br />  

  正如我們從,和其他函數(shù)中看到的那樣lm,predictR讓函數(shù)完成了大部分工作。將此與LinearRegressionPython中的類(lèi)以及sample數(shù)據(jù)框上的方法進(jìn)行對(duì)比。
 

  R具有更多內(nèi)置的數(shù)據(jù)分析功能,Python依賴(lài)于軟件包。
 

  在查看摘要統(tǒng)計(jì)信息時(shí),我們可以使用summaryR中的內(nèi)置函數(shù),但必須statsmodels在Python中導(dǎo)入該包。數(shù)據(jù)框是R中的內(nèi)置構(gòu)造,??但必須通過(guò)pandasPython中的包導(dǎo)入。
 

  Python具有用于數(shù)據(jù)分析任務(wù)的“主要”軟件包,R具有較大的小型軟件包生態(tài)系統(tǒng)。
 

  使用Python,我們可以使用scikit-learn軟件包進(jìn)行線性回歸,隨機(jī)森林等等。它提供一致的API,并且維護(hù)良好。在R中,我們有更多的軟件包多樣性,但也有更大的碎片化和更少的一致性(線性回歸是內(nèi)置的lm,randomForest是單獨(dú)的軟件包,等等)。
 

  R通常具有更多的統(tǒng)計(jì)支持。
 

  R被構(gòu)建為一種統(tǒng)計(jì)語(yǔ)言,它可以顯示。statsmodelsPython和其他軟件包中的XML提供了不錯(cuò)的統(tǒng)計(jì)方法覆蓋范圍,但是R生態(tài)系統(tǒng)要大得多。
 

  在Python中執(zhí)行非統(tǒng)計(jì)性任務(wù)通常更為直接。
 

  使用BeautifulSoup和請(qǐng)求等維護(hù)良好的庫(kù),Python中的Web抓取要比R中的要容易得多。這適用于我們沒(méi)有仔細(xì)研究的其他任務(wù),例如保存到數(shù)據(jù)庫(kù),部署Web服務(wù)器或運(yùn)行復(fù)雜的工作流程。
 

  兩者中的數(shù)據(jù)分析工作流之間有很多相似之處。
 

  R和Python之間都有明顯的靈感點(diǎn)(pandas數(shù)據(jù)框受R數(shù)據(jù)框啟發(fā),rvest軟件包受BeautifulSoup啟發(fā)),并且兩個(gè)生態(tài)系統(tǒng)都在不斷壯大。令人驚訝的是,兩種語(yǔ)言中許多常見(jiàn)任務(wù)的語(yǔ)法和方法多么相似。
 

  Python vs R的最終結(jié)論
 

  在AAA教育,我們以Python課程而聞名,但是我們完全按照R路徑重新設(shè)計(jì)和發(fā)布了Data Analyst,因?yàn)槲覀冋J(rèn)為R是數(shù)據(jù)科學(xué)的另一種至關(guān)重要的語(yǔ)言。我們認(rèn)為兩種語(yǔ)言是互補(bǔ)的,每種語(yǔ)言都有其優(yōu)點(diǎn)和缺點(diǎn)。正如本演練所證明的,任何一種語(yǔ)言都可以用作您唯一的數(shù)據(jù)分析工具。兩種語(yǔ)言在語(yǔ)法和方法上都有很多相似之處,并且您都不會(huì)錯(cuò)。
 

  最終,您可能最終想要學(xué)習(xí)Python 和 R,以便可以利用兩種語(yǔ)言的優(yōu)勢(shì),根據(jù)需要在每個(gè)項(xiàng)目中選擇一種或另一種。當(dāng)然,如果您要在數(shù)據(jù)科學(xué)領(lǐng)域中尋找一席之地,那么同時(shí)了解兩者也會(huì)使您成為更靈活的求職者。



 

預(yù)約申請(qǐng)免費(fèi)試聽(tīng)課

填寫(xiě)下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢(qián)不夠?可先就業(yè)掙錢(qián)后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ lb577.com 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖