我的数据科学技术栈 2020
数据科学有很多东西要学。 我们可以按照数据科学的子领域对技术进行分组。 每个子领域都有一些关键技术需要关注。 创建这个个人技术堆栈列表是一个有趣且有用的练习。 在数据科学中有很多东西要知道。 如果我们尝试调查数据科学家使用的技术,我们可能会得到这样的图片: [](https://res.cloudinary.com/practicaldev/image/fetch/s--maUIxfjX--/c
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
-
数据科学有很多东西要学。
-
我们可以按照数据科学的子领域对技术进行分组。
-
每个子领域都有一些关键技术需要关注。
-
创建这个个人技术堆栈列表是一个有趣且有用的练习。
在数据科学中有很多东西要知道。
如果我们尝试调查数据科学家使用的技术,我们可能会得到这样的图片:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--maUIxfjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3。 amazonaws.com/i/w9iry6gui9ane19djuv5.png)
这个列表绝不是全面的(这已经根据我的个人兴趣进行了过滤)。最重要的是,此列表将逐年更改。跟上一切将是不可能的。值得庆幸的是,没有数据科学家需要了解或使用所有这些工具。
但是既然我们要努力成为T型人,我们至少应该学好一大堆这些技术,对吧?但是我们从哪里开始呢?我们应该学习多少,什么技术?首先,我们应该简要讨论一下职业本身的性质。
数据科学是一个广泛而松散定义的领域。
数据科学仍然相对年轻,并且还在不断发展。曾经被“21世纪最性感的工作”这个标语所普及,很多人都被这个有趣的职业所吸引。
最初可能是应用统计学来解决业务问题,现在这个名称涵盖了大数据工程、可视化、机器学习、深度学习和人工智能等领域。快速发展的部分原因是数据科学可以应用的领域广泛,但也因为技术也发展迅速。数据科学家必须具备的技能数量随着工作的模糊定义而增加。
我想,与大型组织中的团队中的数据科学家相比,小型组织中的单人数据科学家将有一组不同的任务要做。我还认为,具体的工作将在很大程度上取决于行业和组织的性质。再加上工作任期的迅速减少(或工作流动性的增加),工作描述的这种差异要求执业数据科学家跟上大量的技能和技术。
如果我们必须对数据科学的一些子领域进行分组,它们看起来像这样:
-
数据分析:这部分工作是关于理解数据。它涉及数据争论、探索性数据分析和“解释性”数据分析。在更大的团队中,专门的_数据分析师_将执行这些任务。
-
数据可视化:这部分工作是关于将数据传达给非技术人员。在更大的团队中,专门的_商业智能分析师_将执行这些任务,尽管这可能是数据分析师职责的一部分。
-
机器学习:这部分专业大概就是“性感”的来源吧。使用回归、分类和聚类来解决广泛的问题,包括计算机视觉和自然语言处理。有时,通过机器学习开发出更好的新方法来解决问题的人被称为_机器学习科学家_,而实施解决方案的人被称为_机器学习工程师_。
-
数据工程:该领域的这一部分变得如此重要,以至于_数据工程师_比数据科学家更受欢迎。要进行数据科学,我们需要数据和工具。使这些可用是数据工程的目的。
-
Cloud DevOps:越来越多的数据和进行数据科学所需的工具都可以在云上使用。驾驭大量云产品,管理可扩展的基础设施,管理访问和安全是_Cloud DevOps Engineers_的职责。
-
Web 开发:这部分可能看起来不合适,但如果我们考虑端到端的数据科学项目,那么 Web 很可能是原型设计或部署解决方案。在较大的团队中,可能会有一个由_前端_和_全栈开发人员_组成的团队。
当然,这些分组并不明确,并且存在重叠。至少,这些团体给了我一些组织方式。我在简要说明中指出,这些角色可以由团队中的专职专家执行。但在一个小型组织中,可能需要一个人的多面手数据科学家来执行所有这些功能。
无论我们是否需要扮演所有这些角色,了解团队中其他人的工作都会有所帮助。或者,也许您正在寻求转换您的职业轨道,例如从数据分析师到数据工程师,或者从 Web 开发人员到机器学习工程师,在这种情况下,您将受益于对所有事情的了解。
回到技术堆栈,我们可以(松散地)根据这些角色对技术进行分组。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--9jg847M0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3。 amazonaws.com/i/f4upva8boc5dc5giu7fq.png)
编辑:(关于这些在帖子末尾添加的内容的注释)
我们不可能在所有事情上都是专家。
浏览职位描述和 MOOC,我们可能可以将非常有用的堆栈范围缩小到以下内容:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--S-8WNT5P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev .s3.amazonaws.com/i/9rnujgv697bmk2jq3yip.png)
即使这也太难真正掌握了。即使我有所有这些技术的接触点,我也不需要学习所有这些技术。我要么与专家一起工作,要么只在通读文档可以处理的范围内使用它们。
但我认为从学习的角度来看,我可以删除一些“重复项”或从我个人的“核心”堆栈中删除一些。
所以,我的技术栈是......
经过深思熟虑,我未来几年的数据科学“核心”堆栈将如下所示:
[](https://res.cloudinary.com/practicaldev/image/fetch/s--vxKqHjgV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3 .amazonaws.com/i/7ci7swpmz9ziypcv0dmq.png)
尽管这只是一个愚蠢的练习,但我仍然努力想出最终的个人技术堆栈。我不确定这是否是理想的极简主义堆栈。即使是这样,我也无法在我目前的工作中使用其中的许多。如果我要开始个人项目或创办自己的科技公司,我可能会使用这个“数据科学核心堆栈”。还有一些我学到的技术我会继续跟上(Tidyverse、Spark 和 Airflow),今年我会稍微了解一些其他技术(也许是 Vue),因为我知道我可能不会使用它们。我也认识到,必须为工作选择正确的工具,而且这个列表在几年后可能看起来会有所不同。
尽管如此,我认为偶尔进行这种练习有助于重新评估每种技术的优缺点并了解整体情况。我可能已经阅读了 100 多篇博客文章和 100 多个关于第一张图中所列技术的最新发展和评论的视频以及更多内容。这本身就是一个有价值的练习。它还帮助我将注意力集中在我想学习的内容以及为什么我应该优先考虑它们,因为实际上,我将无法(也不需要)学习所有这些内容。
那么,你的技术栈是什么?
一些想法...
当我减少我的技术堆栈时,我记下了一些想法。这些都是个人意见,但最终的技术堆栈是个人的。所以我认为没关系。
-
有很多知识是某些软件包(如 statsmodels、scikit-learn 和 Tensorflow)的必备知识。我们不应该忘记,有整个数学领域,例如概率、统计学、线性代数、向量微积分、计量经济学和机器学习算法,它们构成了数据分析和机器学习的基础。这些占据了数据科学家技能的很大一部分,因此提供了减少核心技术堆栈中包含的内容的动力。
-
计算也是数据科学的重要组成部分,良好的编程技能必不可少:最佳实践(例如 Python 之禅、PEP8 和 PEP484)、编程范式(命令式 vs 声明式、过程式 vs 面向对象 vs 函数式、等),数据结构和算法。编写有效的代码是不够的,编写其他人可以阅读的代码也很重要。深入了解 Python、JavaScript、R 和 SQL 中的最佳实践和最新内容本身就是一项艰巨的任务。冒险使用 Scala、Go、Rust 或 C 等其他语言可能不是我们所有人都能负担得起的奢侈品。最小化技术堆栈的另一个原因。
-
与一些流行的说法相反,数据科学家 80% 的工作不是数据整理和清理。一半的工作将是与不同的人会面以了解需求、交流见解和教育收益;以及行政职责、数据治理职责和专业发展。技术部分可能是故事的一半,专业的数据科学家还应该发展他们的管理、沟通和设计思维技能。通过最小化技术堆栈来减少技术疲劳的另一个原因。
-
我认为某些技术非常相似,以至于学习一种技术可以提供学习其他技术所需的可转移技能。例如,了解 Tableau 可能会使学习 PowerBI 变得更加容易。因此,学习一个,如果工作需要,我们可以了解不同的细微差别。
-
同样,如果两种不同的技术本质上做相同的工作但只是不同的实现,我们可以考虑“重复”。例如,PyTorch 和 Tensorflow 都是非常好的深度学习包,选择两者中的任何一个都是不错的选择。
-
由于不同的原因,一些竞争技术都值得保留。 ggplot2 是 R 的事实上的可视化工具。我读过一些 2019 年写的博客文章,仍然声称 R 与 Python 相比具有更好的可视化能力。我认为这就是为什么我们应该不时花一些时间来更新我们对数据科学技术领域的知识的原因之一。 Altair 可以说是比 ggplot2 更好的图形语法实现。但是 Altair 使用 Vega-lite(建立在 D3 之上),非常适合 web。对于“打印”,我认为seaborn是最好的。在笔记本环境中,我认为 Plotly Express 是一个非常好的候选者。在这一点上,我认为我无法在 Altair、seaborn 和 Plotly Express 之间进行选择。这三个都是声明性的,非常容易学习和使用。我可能会继续使用这三个。我认为 Altair 和 seaborn 是 pandas 生态系统的一部分,而 Plotly Express 是 Plotly 生态系统的一部分(与 Plotly Dash 一起)。
-
有些技术比其他技术更容易学习。例如,React 和 Angular 是强大的前端框架(或库),但可能不是最容易掌握的。有人说 Vue 是另一个前端框架,它融合了两种风格,更容易学习。鉴于我不打算专攻 Web 开发,我认为 Vue 甚至 Svelte 就足够了。
-
事实上,有些技术是如此简单,以至于它们几乎不值得“学习”,或者需要跟上时代。例如,HTML、CSS、Excel 和 Tableau。我想我可以将这些归入“假定技能”类别。
-
对 SQL 也可以这么说,但我认为 SQL 和 No-SQL“语言”中有足够多的方言,这些“语言”与 SQL 类似,值得继续阅读。在我的图表中,我将所有这些外围和相关的东西都包含在“SQL”中。
-
说到包含所有相关的东西,就像Tidyverse里面包含了很多包一样,我在上图中的pandas logo里面包含了很多相关的包:NumPy、SciPy、matplotlib、seaborn、Altair、pandas-profiling、和 pyjanitor 例如。但是我已经分离了 statsmodels,因为使用这个包需要大量的必要知识。
-
一些技术“更紧密地结合在一起”。例如,虽然 R 可能更适合统计和计量经济学,但 Python 的 statsmodels 已显着赶上。由于 Python 对于 Web 开发和机器学习都很有用,因此可以提出使用 statsmodels 而不是 R 的论据。这是一个难以平衡的问题。一方面,通过最大限度地减少语言的数量来争取掌握经济收益。但 R 似乎仍然更复杂。根据我的经验,学习 Tidyverse(R 语言)帮助我成为了一个更好的 pandas(Python 语言)用户。在这篇文章中,我有点想更经济一些,所以如果我必须选择,我会放弃 R 并专注于 Python。如果特定工作需要,我仍然会很乐意使用 R。
-
某些技术比其他技术“更加原生”。与 Dask 和 Prefect 二人组相比,Spark 和 Airflow 可能更加成熟和广泛使用。但是 Youtube 和技术博客上的人告诉我,Dask 和 Prefect 比 Spark 和 Airflow 更“pythonic”。在 Javascript 领域,Svelte 与 React 也有类似的相似之处。我不确定这些比较是否有意义,也不确定差异是否显着。这是另一个难以达到的平衡。一方面,我们希望通过跟上流行的技术来提高就业能力。另一方面,良好的数据工程和编程最佳实践等概念是可以转移的,我们更愿意学习更容易实现和学习的东西。如果 Spark 和 Airflow 可用,它们都非常易于使用,但我不会特别喜欢在我的笔记本电脑上配置 Spark 集群和 Airflow。
-
“云”技术发展太快,我不确定是否要学习核心堆栈,以防我未来的工作需要我知道如何使用它们。随着 Google Cloud Run 等产品的发布,我不确定 Kubernetes 是否值得通才数据科学家学习。
图像中的工具列表
语言
[](https://res.cloudinary.com/practicaldev/image/fetch/s--WN0AQGit--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/yz70uen9vu7wh0v98i2y.png)
-
蟒蛇
-
SQL
-
R
-
斯卡拉
-
HTML
-
CSS
-
JavaScript
-
打字稿
-
C++
-
爪哇
-
去
-
锈
Python + SQL + HTML + CSS + JavaScript 可能会带你走很长的路。
数据分析
[](https://res.cloudinary.com/practicaldev/image/fetch/s--S9r0DzwK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/gtznectxl94623w2t0de.png)
Tidyverse 生态系统
-
dplyr
-
蒂迪尔
-
读卡器
-
ggplot2
-
闪亮
加上一大堆未包含在图像中的软件包。只需使用“Tidyverse”。 R 往往有单独的库来处理任何统计数据。虽然我不能全部列出,但 Tidyverse 应该是中心。
熊猫生态系统
-
熊猫
-
麻木
-
scipy
-
个状态模型
-
matplotlib
-
海运
-
牵牛星*
-
情节**
pandas 生态系统是相当于 R 的 Tidyverse 的 Python。
*Altair 确实属于 Vega 家族(基于 JavaScript 和基于 D3.js),altair 为其提供了 Python API。
**与 R (ggplot) 不同,Python 中的可视化工具还没有国王。我将 pandas 生态系统包含在列表中,但它本身就是一个生态系统,不仅限于 python。对不起。
数据工程
[](https://res.cloudinary.com/practicaldev/image/fetch/s--3HBXFFvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/j9c36s2e5mg1w7sc433e.png)
-
火花
-
仪表板
-
气流
-
级长
-
卡夫卡
-
PostgreSQL
-
MySQL
-
MongoDB
-
卡桑德拉
-
弹性
-
快速
-
雷迪斯
网页开发
[](https://res.cloudinary.com/practicaldev/image/fetch/s--2vJEFLXf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/i6uc7uk7s8kntdfh8y64.png)
-
苗条
-
维尤
-
角
-
反应
-
put.js
-
GraphQL(石墨烯、阿波罗等)
-
ExpressJS
-
节点JS
-
烧瓶
-
SQL炼金术
6 至*
- 火力基地
云DevOps
[](https://res.cloudinary.com/practicaldev/image/fetch/s--hfdcWTyu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/c58vhur1zfyqre6v2yr2.png)
-
AWS
-
天蓝色
-
GCP
-
码头工人
-
Kubernetes
-
詹金斯
-
安西布尔
机器学习
[](https://res.cloudinary.com/practicaldev/image/fetch/s--YZlOvqVd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/9ipq87s38smpps45m77k.png)
-
毫升
-
Scikit-Learn
-
Keras(吸收进TensorFlow)
-
TensorFlow
-
火炬
-
OpenCV
-
斯帕西
-
H2O.ai
-
开放人工智能
商业智能
(或者..一体机?)
[](https://res.cloudinary.com/practicaldev/image/fetch/s--iWCSlZSL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/i/aan8y3wp3t0gxzdxvn98.png)
-
Excel
-
SAS
-
电源BI
-
画面
-
刀
-
Alteryx
![Logo](https://devpress.csdnimg.cn/cfb6e0640f5d4b6987e326a5d2443224.jpg)
华为、百度、京东云现已入驻,来创建你的专属开发者社区吧!
更多推荐
所有评论(0)