您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据挖掘与识别 > 做数据分析,Python和R究竟哪个更强?
作者:EnochKan编译:Mika本文为CDA数据分析师原创作品,转载需授权几十年来,研究人员和开发人员一直在争论,进行数据科学和数据分析,Python和R语言哪种才是更好的选择。近年来,数据科学在生物技术、金融和社交媒体等多个行业迅速发展。数据科学的重要性不仅得到了业内人士的认可,而且还得到了许多学术机构的认可,目前越来越多的学校都开始设立数据科学学位。随着开源技术的迅速取代了传统的闭源技术,Python和R语言在数据科学中变得越来越受欢迎。数据科学就业增长图——Indeed.com1.简介Python由GuidovanRossum发明,于1991年首次发布。Python2.0于2000年发布,8年后Python3.0发布。Python3.0有一些主要的语法修正,与Python2.0不兼容。但是,2to3等Python库可以在两个版本之间自动的转换。Python2.0计划在2020年停止使用。R语言由RossIhaka和RobertGentleman于1995年发明。R语言最初是由S语言的一种实现,后者由JohnChambers于1976年发明。R语言首个稳定的测试版本1.0.0于2000年发布。目前,由R开发核心团队维护,最新的稳定版本为3.5.1。与Python不同,R在过去没有需要语法转化的重大变化。GuidovanRossum(左)RossIhaka(中)RobertGentleman(右)Python和R都拥有庞大的用户群体支持。根据StackOverflow在2017年的调查显示,近45%的数据科学家使用Python作为主要的编程语言。另一方面,11.2%的数据科学家使用R语言。2017年开发者调查报告——StackOverflow值得注意的是,关于Python,特别是JupyterNotebook在近年来备受追捧。虽然JupyterNotebook可以用于Python之外的语言,但它主要用于在浏览器中记录和展示Python程序,用于Kaggle等数据科学竞赛。根据BenFrederickson进行的一项调查显示,JupyterNotebook在Github上的月活跃用户(MAU)的占比在2015年后大幅上升。GitHub用户对编程语言的排名——BenFrederickson随着近年来Python越来越受欢迎,我们观察到在Github上使用R语言的月活跃用户比例有所下降。尽管如此,这两种语言在数据科学家、工程师和分析师中仍然非常受欢迎。2.可用性R最初用于研究和学术领域,如今它已不仅仅是一种统计语言。R可以从CRAN(ComprehensiveRArchiveNetwork)上轻松下载。CRAN还可用作包管理器,可以下载超过1万多个包。RStudio等流行的开源集成开发环境(IDE)都可以用来运行R语言。作为统计学专业的人,我承认在StackOverflow上R语言有非常强大的用户群体。在本科学习期间,我遇到的许多R相关问题都可以在=StackOverflow的R语言标签找到答案。如果你刚开始学习R语言,Coursera等在线课程上都有提供R以及Python的初级课程。在本地计算机上设置Python工程环境也很容易。事实上,最近Mac上安装了内置的Python2.7以及几个有用的库。如果你像我一样是Mac用户,我推荐你看BrianTorres-Gil的相关指南:DefinitiveGuidetoPythononMacOSX@briantorresgil/definitive-guide-to-python-on-mac-osx-65acd8d969d0你还可以在Python的官网下载PyPI和Anaconda等开源Python包管理系统。同样,Anaconda也支持R语言。当然,大多数人更喜欢直接使用CRAN管理包。比起R语言,PyPI或Python通常有更多的包。但是,并不是每个都适用于统计和数据分析。3.可视化Python和R都具有出色的可视化库。由RStudio的首席科学家HadleyWickham创建的ggplot2如今是R历史上最受欢迎的数据可视化软件包之一。我非常喜欢ggplot2的各种功能和自定义。与基础的R图形相比,ggplot2允许用户在更高的抽象级别自定义绘图组件。ggplot2提供的50多种图像适用于各种行业,我最喜欢的图包括日历热图,层次树图和集群图。关于如何使用ggplot2,SelvaPrabhakaran有很棒的教程可供参考。ggplot2中的日历热图(左上角)、集群图(左下)和层次树图(右下)Python也有出色的数据可视化库。Matplotlib及其seaborn扩展对可视化和生成统计图很有帮助。我推荐你查看GeorgeSeif的相关可视化文章,以便更好地理解Matplotlib。5QuickandEasyDataVisualizationsinPythonwithCode与R的ggplot2类似,matplotlib能够创建各种各样的图,比如直方图、向量场流线图、雷达图等。Matplotlib最出色功能之一可能就是地形山体阴影效果,在我看来它比Rraster的`hillShade()`功能更强大。Matplotlib的山体阴影效果R和Python都有Leaflet.js的包装,Leaflet.js是用Javascript编写的交互式地图模块。Leaflet.js是我用过最好的开源GIS技术之一,因为它提供了与OpenStreetMaps和GoogleMaps的无缝集成。你还可以使用Leaflet.js轻松创建气泡图、热图和等值线图。我强烈建议你试试绝对Python和R的Leaflet.js的包装,与Basemap和其他GIS库相比,这个更容易安装。Plotly对于Python和R都是很棒的图形库。Plotly(或Plot.ly)是用Python和Django框架构建的。它的前端是用JavaScript构建的,并集成了Python、R、MATLAB、Perl、Julia、Arduino和REST。如果你想构建web应用来展示可视化,我建议你试试Plotly,因为它有带滑块和按钮的交互式图表。使用鸢尾花数据集的Plotly相关图4.预测分析Python和R都有强大的预测分析库。在高水平的预测建模中很难比较两者的表现。R语言是专门用作统计语言编写的,因此与Python相比,用R进行搜索与统计建模要更容易。在谷歌中搜索`logisticregressioninR`能得到6千万个结果,这是搜索`logisticregressioninPython`的37倍。但是,具有软件工程背景的数据科学家使用Python更容易,因为毕竟R是由统计学家编写的。同时我还发现,与其他编程语言相比,R和Python同样易于理解。对于Python和R哪个更适合进行预测分析,Kaggle用户NanoMathias进行了非常相识的调查。他得出结论,在数据科学家和分析师中,Python和R用户数量基本相同。他的研究中还发现,编程经验超过12年的人更倾向于选择R而不是Python。这表明程序员选择R或Python进行预测分析只不过是他们的个人喜好。嵌入缩放的线性判别分析,R和Python用户因此人们普遍认为这两种语言在预测方面能力相似。但真是如此吗?让我们使用R和Python将逻辑回归模型拟合到鸢尾花数据集,并计算其预测的准确性。之所以选择鸢尾花数据集是因为它体积小,数据缺失少。在此我没有进行探索性数据分析和特征工程,我简单地做了80-20的训练测试的分割,用预测器来匹配逻辑回归模型。```library(datasets)#loaddatair_data-irishead(ir_data)#splitdatair_data-ir_data[1:100,]set.seed(100)samp-sample(1:100,80)ir_train-ir_data[samp,]ir_test-ir_data[-samp,]#fitmodely-ir_train$Species;x-ir_train$Sepal.Lengthglfit-glm(y~x,family='binomial')newdata-data.frame(x=ir_test$Sepal.Length)#predictionpredicted_val-predict(glfit,newdata,type=response)prediction-data.frame(ir_test$Sepal.Length,ir_test$Species,predicted_val,ifelse(predicted_val0.5,'versicolor','setosa'))#accuracysum(factor(prediction$ir_test.Species)==factor(prediction$ifelse.predicted_val...0.5...versicolor....setosa..))/length(predicted_val)```R的glm模型准确率达到95%,还不错。```importpandasaspdfromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimportconfusion_matrix#loaddatatraindf=pd.read_csv(~/data_directory/ir_train)testdf=pd.read_csv(~/data_directory/ir_test)x=traindf['Sepal.Length'].values.reshape(-1,1)y=traindf['Species']x_test=testdf['Sepal.Length'].values.reshape(-1,1)y_test=testdf['Species']#fitmodelclassifier=LogisticRegression(random_state=0)classifier.fit(x,y)#predictiony_pred=classifier.predict(x_test)#confusionmatrixconfusion_matrix=confusion_matrix(y_test,y_pred)printconfusion_matrix#accuracyprintclassifier.score(x_test,y_test)```Pythonsklearn的逻辑回归模型准确率达到90%使用Rstat`glm`函数和Pythonscikit-learn的`LogisticRegression`,我将两个逻辑回归模型拟合到鸢尾花数据集的随机子集。在模型中,我们只使用了一个预测器`sepallength`来预测花朵种类`species`。两种型号都达到了90%以上的精度,其中R语言的效果更好。然而,这不足以证明R具有比Python更好的预测模型,逻辑回归只是Python和R构建的众多预测模型中的一个。Python超过R的一个方面是其出色的深度学习模块。流行的Python深度学习库包括Tensorflow、Theano和Keras,而且这些库有很多文本教程,同时SirajRaval在Youtube上也发布了多个教程。说实话,我宁愿花一个小时在Keras上对深度卷积神经网络进行编程,而不是花费半天时间来弄清楚如何在R中实现它们。同时IgorBobriakov也有很多这方面的文章,我也推荐你去看看。比较Python、R和Scala的顶级数据科学库——IgorBobriakov5.性能测量编程语言的速度通常会有些偏差。每种语言都有针对特定任务的内置优化插件(例如R语言对统计分析能进行优化)。可以通过多种不同方式完成对Python和R进行性能测试。我在Python和R中编写了两
本文标题:做数据分析,Python和R究竟哪个更强?
链接地址:https://www.777doc.com/doc-3426532 .html