如何轻松搞定数据科学面试: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

本文来自云栖社区合作伙伴“CDA数据分析师”,了解相关信息可以关注“CDA数据分析师”。

相关文章
|
1天前
|
前端开发 Java Go
开发语言详解(python、java、Go(Golong)。。。。)
开发语言详解(python、java、Go(Golong)。。。。)
|
1天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
10 1
|
1天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
14 0
|
1天前
|
JSON 网络协议 API
Python网络编程面试题精讲
【4月更文挑战第15天】本文介绍了Python网络编程的面试重点,包括基础Socket编程、HTTP协议与requests库、异步编程与asyncio库。通过实例解析常见面试题,强调了非阻塞套接字、异常处理、HTTP状态码检查以及异步任务管理等关键点。提供代码示例帮助读者巩固概念,助力面试准备。
9 0
|
2天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
18 0
|
2天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
17 0
|
2天前
|
UED Python
掌握Python异常处理:面试中的关键考点
【4月更文挑战第14天】本文探讨了Python异常处理在面试中的重要性,涵盖核心概念、常见问题和易错点。异常处理涉及异常、捕获、异常链、自定义异常、finally子句和raise语句。面试中应注意避免过于宽泛的异常捕获、忽视异常链、在finally中误用return、自定义异常设计不实用以及异常处理与业务逻辑混杂等问题。通过理解并解决这些问题,可提升代码健壮性和面试表现。
17 0
|
7天前
|
数据采集 机器学习/深度学习 数据可视化
数据科学面试准备:解决Python数据分析常见问答和挑战
【4月更文挑战第12天】本文介绍了Python数据分析面试中常见的问题和挑战,涉及Pandas、NumPy、Matplotlib等库的基础知识,以及数据预处理、探索性分析、可视化、回归分析和分类分析的方法。例如,使用Pandas处理缺失值和异常值,利用Matplotlib和Seaborn进行数据可视化,通过Scikit-learn进行回归和分类模型的构建。
|
29天前
|
XML 数据采集 数据格式
Python语言的结构化标志语言处理
Python语言的结构化标志语言处理
|
1月前
|
存储 数据挖掘 数据处理
探索数据科学中的Python神器——Pandas库的强大功能
在数据科学领域中,Python语言的Pandas库被广泛应用于数据处理和分析。本文将深入探讨Pandas库的核心功能及其在数据科学中的重要性,帮助读者更好地理解和利用这一强大工具。