查看原文
其他

开发数据分析工具用哪种编程语言更好?

计算机与网络安全 计算机与网络安全 2022-06-01

一次性进群,长期免费索取教程,没有付费教程。

教程列表见微信公众号底部菜单

进微信群回复公众号:微信群;QQ群:460500587


微信公众号:计算机与网络安全

ID:Computer-network

通常讨论在设定的场景下哪种编程语言更好,会很快演变成一场没有胜利和结论的争论。作为数据安全科学家,不要对语言有很强烈的偏见。通常每种语言总在不同的领域闪光,需要将它们融合在一起以解决实际问题。


Python和R作为数据分析的两种领导语言,它们界面相似又有着各自独立的元素,使它们对某些任务来说很适合。


对于有编程经验的朋友,加快Python学习非常简单,您可以期望3至6个月就能相当熟练,尤其是您可以将现有的一些脚本程序变为Python程序作为练习,您的程序也许不够Python化(没有充分利用一些特性、功能、语法),但是付出终将有所回报。对于那些统计语言的新手,熟悉R将带来不小的挑战。统计学家创造了R语言,随着您对R的深入钻研,会发现里面有相当明显的血统。要经受得起R的语法以及函数库的细微差别带来的痛苦,并将自己的Excel工作流向R语言过渡。


一个成功的数据科学家的标志是适应性,您应该在网络空间内持续寻找新兴的工具帮您解决问题。


1、为何用Pyhton


Guido van Rossum在1989年12月创造了Python这门实用的编程语言。他和他的同事需要一种通用方法来协同系统管理任务,发挥当时操作系统的一些特性优势。尽管当时有许多管理员友好型的解释语言或工具,但是没有一种具有Python一样的灵活性和可扩展性(Guido van Rossum的观点)。


Python的灵活性和可扩展性(事实上是免费和自由)在2000年初期,尤其吸引科学、学术,以及行业社区。他的创新让通用编程语言相比同期专用领域编程语言更容易使用解决自己的学科问题。


很难找到某个文件类型是Python不能读取的,或者某个Python不能访问的数据库,或者某个Python不能执行的算法。当您熟悉这门语言,Python快速获取、清理、转换原始数据的能力会让您惊异,往往这些任务是分析或者可视化处理过程中早期的一个步骤。直到2008年AQR Capital Management公司创建了pandas模块,pandas提供了Python化的类似功能,像其他基础分析语言如R、SAS、MATLAB一样。这是一个真正有意义的开始。


尽管Python解释器提供了交互式的执行shell,爱好者们意识到需要扩展基本功能,甚至开发出更动态化以及健壮的交互式环境IPython,以满足他们的需要。将IPython与pandas模块一起使用,刚崭露头角的数据分析师就拥有了实用和数据为中心的工具集,为追寻知识助一臂之力。

2、为什么用R语言


Python语言不同的是,R语言的历史与特定领域紧密相关,它是为数理统计分析和可视化而全力打造的。它能够访问或处理多种文件类型和数据库(依然是灵活性和可扩展性的设计),但是R语言类似Lisp、S风格的语法,尤其是基本的面向分析的数据类型,往往只被“数据统计员”掌握。


基础R语言仅仅几行代码就能够很简单地进行广泛的统计分析,生成富含信息和吸引人的可视化图表。许多现代的R语言库,比如plyr和ggplot2,拓展和增强了R的基本能力,许多互联网上抢眼的例子以及前沿的数据分析和可视化都依赖于此。


Python一样,R语言同样提供一个可交互的执行shell,用来满足基本的功能需求。至此,RStudio随着更多交互需求而发展成为了集成开发环境、数据探索工具、重复实验环境的集合,它成倍提升了R语言的默认能力。


3、为什么两者都要用


如果您有一把锤子,所有东西都可以看作是钉子。有些时候,通用编程语言的灵活性是非常顺手的,比如当您使用Python时。但有时候R语言只要3行代码就实现的,用Python却需要30多行代码(即使是用pandas)完成。因为您的最终目标是尽可能快速地,比较炫地实现有见地和准确的分析。如何选用合适的工具完成工作变得尤为重要,它能让您尽可能可靠高效地开发。


如果不承认Python和R都不完美,需互相补充,会显得有些虚伪。我们接触的一些实例会遇到这样的场景,通常一些“学习机会”会出现在您自己进行分析时,开始会沮丧,然后用另外一个工具搞定它。在R脚本里运行Python代码的R软件包rJython,或者在Python脚本里能运行R代码的rpy和rpy2模块,这样的场景会非常频繁出现。


假如工具箱包含了Python和R,您应该能解决遇到的大部分问题,即使不是全部。假如您发现在一些场景下没有您要的功能,Python和R都有充满活力的社区,社区里的人能提供紧急帮助,甚至帮助开发满足新需求的函数或模块。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存