如何轻松搞定数据科学面试:Python&R语言篇
对于数据科学家来说,工作的一大部分都需要在交互式编程环境中对数据进行处理、分析和可视化。
在过去几年,R语言和Python成了进行数据科学中最炙手可热的两种语言。这两种语言各有优缺点,掌握这两种语言大有益处,但是针对面试者而言,最好的方式是学习其中一种并熟练掌握。
在本文中,我对这两种语言分别进行介绍,希望能帮助你更好地应对数据科学面试。
1. 选择一种语言
正如上文中所提到的,我并不建议你两种语言都掌握。在我所经历的面试中,无论是作为面试者还是面试官,我发现这些面试都允许面试者用任何一种语言解决问题。所以选取其中一种进行学习即可。
那么,应该选Python还是R语言呢?
Python
Python是一种多用途且功能齐全的编程语言。旨在实现C语言、Java等编程语言同样的的功能。与C语言不同,Python使用起来更方便,具有自动内存管理和动态类型等功能。
在我看来,用Python进行数据科学优势在于:它能够像生产系统的后端语言一样。也就是说,作为数据科学家,你的任何建模都可以通过在线网站或软件产品等形式轻松实现。如果你主要的兴趣是写代码或原型化代码,我推荐选择Python。
R
另一方面,R语言更像是分析语言。R支持所有标准的计算机科学数据结构和技术,例如数组和for循环,而且R语言非常擅长处理矩形数据集,就像在电子表格程序中看到的那样。但与电子表格不同的是,你仍可以利用迭代和抽象等计算机科学概念,这使得R语言比Excel更强大。
此外,R是学术界定量研究人员使用的语言。这也就是说,通常最先进的统计技术会最先使用在R包中,并且远早于其他语言,包括Python。因此,如果你的主要工作涉及到离线分析和数据可视化,并且你想接触到前沿的统计学包,那么R是不错的选择。
总而言之,选择任何当中一种语言都不会出错。这两种语言都很强大,使用任何一种都能实现你想完成的数据科学任务。
2. 选择操作环境
当你选择了语言之后,下一步需要熟悉最适合这种语言的互动环境。这样你之后在编写、保存代码,数据可视化以及管理包时都会更轻松。
Python
Python方面是Jupyter,并使用相关notebook进行设置。这与RStudio非常不同,但同样很有用。Jupyter提供了基于浏览器的notebook,而不是本地IDE,在当中你能够将代码分成可执行的块,因此你可以分段运行代码并进行分析。输出显示在生成代码的下方,因此你能很清楚哪个输出来自哪个分析。此外,由于它是基于浏览器的,Jupyter notebook也易于与他人共享。
R
R方面是RStudio。与使用命令行或其他IDE相比,使用RStudio进行数据分析要方便得多。使用RStudio能够管理包,访问文件,显示可视化,并为你提供可自定义的文本编辑器和控制台。整个环境为四格窗口形式,操作起来非常方便。
3. 编程基础知识
无论选择哪种语言,你都需要了解编程基础知识,比如数据类型、结构、迭代和抽象。但你在面试中不会直接被问到这些问题,因为这通常是软件工程面试中所涉及的。但是你肯定需要熟悉这些概念,从而完成数据科学面试中的白板问题,以及可带回家完成的编程挑战。
数据类型
数据类型是描述存储信息类型的一种方式。Python的数据类型有:数字、整数、长整数或浮点数;布尔值、二进制;还可以是字符串,即各种字符的组合。在R语言中,以上所有的类型还要加上:由不同的字符串表示的有序变量。
关于不同数据类型如何存储和编码这方面知识很深奥,但在面试中无需担心这方面问题。要注意的是,任何给定的数据单元都属于这些类型之一,并且数据类型将决定你能对数据执行的具体操作。例如,你可以将两个数字变量相乘,但你将无法对两个字符串执行此操作。
数据结构
数据结构是数据的数字或字符串的组合方式。Python有列表(list)和元组,两者都是有序的数据集合,其中列表在其他语言中称为数组。还有集合(set),这是无重复的无序变量集合。此外,Python还有字典(dictionary),表示键值对的有序集合。R语言中有向量(vector),这类似Python的列表,列表,矩阵和数据框。
迭代
迭代是计算机科学中的一个重要概念,它与数据结构密切相关,实质上它是对数据结构中每个项目执行操作的一种方法。这里的两大类是向量化运算和循环。向量化函数是将单个函数应用于数据结构的每个元素,并返回一个元素。
例如,你可以用五个不同数字的列表或向量,然后得到每个数字平方根的新向量。另一方面,循环能让你写执行在给定结构中的代码块。这通常比较慢,但更灵活,因为你可以执行任意代码,并得出任何输出。
循环在R和Python中以相同的形式存在。然而,向量化函数在两种语言中的形式多样且差别大。在R中,有apply
的向量化函数族。在Python中有列表解析和Numpy包中的vectorize
等选项。这看起来可能很繁琐,但一旦掌握这个概念你就会发现,这些只是相同基本概念的不同应用方式:即选用某种数据结构并对每个元素进行操作。
抽象
抽象是一种编写代码块的方法,可以通过提供给不同的输入重新使用。例如,你可以写一个函数,接受单个数字输入并将其相乘以获得平方值。然后你可以将任意数字传递给函数以获得平方输出,这比在需要时手动进行平方更简洁。Python和R都允许用户定义函数,语法略有不同。
4. 数据操作
数据处理是面试问题中的一类。例如SQL,面试官会给你提供样本数据集,并要求你输出特定结果。
对于这种类型的面试来说,重要的是你熟悉用R或Python包进行数据操作。
Python
Python方面你需要掌握Pandas,这提供了一个完整的框架来运行数据框,包含行和列的矩形数据集。Pandas具有你需要用到的所有操作符,包括过滤、聚合、连接等方法。
R
虽然R本身支持矩阵和数据框形式的矩形数据集,但你仍然可以通过学习dplyr或data.table来让操作更简便。这些包都提供了很好的操作界面:dplyr更直观和可读,而data.table更快,语法更简洁。
5. 统计
统计可能会在白板面试中遇到。这实际上是最简单的部分,因为复杂的统计函数在这些语言中通常被抽象为易于使用的函数。
R中包含许多基本的统计函数。你要花费数小时写的代码,这可能用简单线性回归就可以执行:
model <- lm(y ~ x1 + x2, data = df)
在Python中,你至少需要Numpy和Scipy软件包才能确保涵盖了基本的统计功能,但跟R语言一样,一旦安装完毕你就可以应用了。
6. 可视化
除了白板面试,许多数据科学面试还有可带回家完成的编程挑战,这通常会给出样本数据集,要求你进行分析并得出结论。通常你需要发回代码,一些解释性文本和可视化。下面看到可视化问题。
对于R和Python,进行可视化实际上只有一种选项:在Python中用matplotlib,在R中用ggplot2。这两个库都有灵活的接口,用于创建漂亮的数据可视化。
对于带回家完成的编程挑战的小建议:给图表起标题,注意对轴进行标注,如果需要可加上误差条,颜色上注意一致性。例如,如果你在图表中将iOS数据点设置为红色,Android为蓝色,那么在所有后续图表中要保持一致。同时图表选择要简单,通常只需条形图,折线图和散点图即可。
7. 结语
通常当你深入了解编程概念时会感到不知所措,但你一旦掌握了编程语言的基础知识,那么接下来就可以使用相关工具进行数据操作、统计和可视化。专注于这三个方面,那么你就能轻松搞定数据科学面试。
原文发布时间为:2018-09-19
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
政治不正确?Redis/Python等的master-slave要改名了。
Master/Slave模式,是分布式系统中一个比较常用的计算结构。这个词最开始来源于MySql数据库,主要表示MySQL数据库自身提供的主从复制功能,通过master-slave,可以方便的实现数据的多处自动备份,实现数据库的拓展。多个数据备份不仅可以加强数据的安全性,通过实现读写分离还能进一步提升数据库的负载性能。 这个名词由两个单词组合而成:Master和Slave。 Master:主人、雇主。 Slave:奴,奴隶。 争议焦点 组合成的词一般写作Master/Slave或者master-slave,一般表示主从结构。这个词本身是一个没有任何感情色彩的中性词语。 master-slave目前在软件行业内被广泛使用,如Mysql、Redis、Python、mongodb、ActiveMQ、PostgreSQL、Ruby、Jenkins 等都有类似的描述。 但是,随着人们开始越来越重视人权、歧视等问题,很多开发者认为这一描述具有侵犯性,即认为使用master-slave是政治不正确的。所以,出现了很多声音呼吁修改这一描述。他们的主要诉求是不要使用master-slave这一词汇,而是...
- 下一篇
解决Mac启动Eclipse Memory Analyzer报错问题
下载Eclipse Memory Analyzer在mac上打开的时候出现以下异常: !SESSION 2017-05-13 15:25:56.717 ----------------------------------------------- eclipse.buildId=unknown java.version=1.8.0_111 java.vendor=Oracle Corporation BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=zh_CN Framework arguments: -keyring /Users/sailfish/.eclipse_keyring -showlocation Command-line arguments: -os macosx -ws cocoa -arch x86_64 -keyring /Users/sailfish/.eclipse_keyring -showlocation !ENTRY org.eclipse.osgi 4 0 2017-05-13 15:...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能