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

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

時間:2020-08-14來源:5wd995.cn點(diǎn)擊量:作者:Sissi
時間:2020-08-14點(diǎn)擊量:作者:Sissi




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

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

  導(dǎo)入CSV
 

  [R

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

  Python

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

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

  查找行數(shù)
 

  [R

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

  Python

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

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

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

  [R

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

  Python

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

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

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

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

  [R

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

  Python

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

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

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

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

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

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

  [R

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

  Python

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

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

  聚集玩家
 

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

  [R

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

  Python

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

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

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

  按集群繪制玩家
 

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

  [R
 

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

  Python

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

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

  使用Python,我們在scikit-learn庫中使用了PCA類。我們使用matplotlib來創(chuàng)建繪圖。
 

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

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

  [R

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

  Python

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

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

  單變量線性回歸
 

  假設(shè)我們要根據(jù)每個球員的射門得分來預(yù)測每個球員的助攻數(shù)。
 

  [R

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

  Python

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

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

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

  [R

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

  Python

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

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

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

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

  [R

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

  Python

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

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

  計(jì)算誤差
 

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

  [R

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

  Python

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

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

  下載網(wǎng)頁
 

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

  [R

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

  Python

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

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

  提取玩家框得分
 

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

  [R

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

  Python

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

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

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

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

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

  結(jié)論中的Python vs R
 

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

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

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

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

  在查看摘要統(tǒng)計(jì)信息時,我們可以使用summaryR中的內(nèi)置函數(shù),但必須statsmodels在Python中導(dǎo)入該包。數(shù)據(jù)框是R中的內(nèi)置構(gòu)造,??但必須通過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ì)語言,它可以顯示。statsmodelsPython和其他軟件包中的XML提供了不錯的統(tǒng)計(jì)方法覆蓋范圍,但是R生態(tài)系統(tǒng)要大得多。
 

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

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

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

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

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

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

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



 

預(yù)約申請免費(fèi)試聽課

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

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

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

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

網(wǎng)站地圖