自学数据科学的详细步骤和资源推荐。

神译局是旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:数据科学家是21世纪最性感的职业。我学的不是这个专业,真可惜。没关系,中途上车还来得及。一位化学工程专业的毕业生拿到的第一份工作就是数据分析师。他是怎么做到的?自学。他是怎么自学的呢?且看Travis Tang的详细介绍。原文发标题是:How to Teach Yourself Data Science in 2020

第1部分——SQL、Python、R语言及数据可视化

最近,我刚刚从化学工程专业毕业,但我的第一份工作是在一家科技公司担任数据分析师。我把自己从化学工程走到到数据科学的整个旅程都记录到这里了。从那以后,当我跟同学们谈到我的这个举动时,很多人都表达了同样的兴趣,并提出了同样的问题……

“你是怎么从工程转到数据科学的?”

这也是我要问自己的问题——我该怎么走?一年多以前,这个想法一直困扰着我,同时也推动着我去建立起数据科学家的技能树。

进行这项研究的困难当然不是因为缺乏信息。相反,正是因为学习数据科学的资源太多了,使得你很难从一大堆平庸的资源里面挑出最好的那些。

选择太多,时间太少… …

但是首先,我们得先了解一下… …

什么是数据科学?

呃,这是一个很难回答的问题。事实上,不同的公司对数据科学的定义各不相同,导致这个术语变得模棱两可,难以捉摸。有人说数据科学是编程,有人说是数学,还有人说数据科学就是要理解数据。事实证明,这些说法都对。在我看来,我最认同的定义是——

数据科学是利用从数学、计算机科学、领域知识汲取的技术和理论的交叉学科领域。[1]

数据科学是多学科的交叉。

在我看来,图解的数据科学就是这样的。我画的时候不同知识之间的边界是模糊的,这是我自己的感受,也就是把不同领域的知识融合在一起,就形成了所谓的“数据科学”。

好吧,那我得怎么去学习数据科学呢?

在本系列博客文章里,我会重点介绍我的学习之旅都学了哪些课程,并介绍各自的优缺点。通过这些,我希望能帮助那些跟我情况相同的的人规划好自己在数据科学领域的自学之旅。本系列共分4部分:

  • 第1部分——用SQL、Python和R语言进行数据处理(本文!)

  • 第2部分——数学、概率论及统计

  • 第3部分——计算机科学基础

  • 第4部分——机器学习

在本文中,我会重点介绍作为数据科学家需要掌握哪些数据处理知识。要想学会处理数据,一般需要学习

  1. 用SQL(标准查询语言)从数据库中提取数据,以及

  2. 清洗、处理与分析数据(一般用Python及/或R语言)

  3. 有效地对数据进行可视化。

1.用SQL进行数据析取

SQL是跟数据所在的数据库进行通信的语言。如果说数据是埋在地下的宝藏的话,那SQL就是挖掘原始形式的宝藏的工具。说得更具体一点,SQL可以让我们从数据库中的一个表或多个表的组合里面提取出信息。

掌握SQL并不难。

SQL有很多不同的“口味”,比方说SQL Server、PostgreSQL、Oracle、MySQL及SQLite等。它们之间稍微有些不同,但语法基本上都类似,所以用不着担心自己用的哪种“口味”的SQL。

想学习语言,首先得学习单词,然后再把单词组合成句子和段落。学SQL基本上也是这样。

为了学习一些最基本的概念(SQL的单词或句子),我用了Datacamp (SQL入门)和Dataquest(SQL基础)。(稍后我会介绍Datacamp和Dataquest各自的优缺点。)这些网站一般是通过讲解练习和示例来传授基本的SQL技能。涉及的一些基本概念包括:

  • 用于数据过滤和选择的SELECT和WHERE

  • 用于数据汇总的COUNT,SUM,MAX,GROUP BY,HAVING

  • 用于生成有用的不同列表和集合的DISTINCT,COUNT DISTINCT

  • 决定什么时候/在哪里使用那些数据的OUTER(如LEFT)和INNER JOIN

  • 字符串与时间转换

  • UNION和UNION ALL。

(你现在可能还是一头雾水,没关系!这只是预计你要学习的内容列表。)

不过,能够完成这些练习还不足以让我成为分析师。我能理解单词和句子,但是还没法写出完整的段落。尤其是,像子查询寻、窗口函数这样的一些重要、高级概念还没涉及或者覆盖完全,虽然在好几次技术面试里面都被考过了,而且对于我目前担任的分析师角色至关重要。这些技能包括

  • 用COALESCE处理NULL

  • 子查询及其对查询效率的影响

  • 临时表

  • 自连接(Self join)

  • 窗口函数,比如PARTITION,LEAD,LAG

  • 用户自定义函数

  • 在查询当中使用索引可以让操作更快。

为了学习这些技能,我主要是用SQLZoo.net,因为这个是免费的,而且每个概念都提供了非常具有挑战性的练习。SQLZoo里面我最喜欢的功能是它综合问题,用一道题来测试对不同概念的理解。比方说,提供以下的实体关系图,要求学员基于该关系图创建复杂的查询。

实体关系图例子。

这跟我们作为分析师在工作中遇到的情况非常接近——我们利用学到的不同技巧来从同一个数据库里面提取信息。下面是SQLZoo的一个问题:“帮助台”的实体关系图。要求你根据此图把经理和2017–08–12这一天当中每小时的已接电话数量展示出来。(可在此处自行尝试!)

我还用了其他一些资源,包括Zachary Thomas的SQL Questions以及Leetcode

2.用R和Python进行数据处理

要想学习数据科学所需的编程和工具,就免不了要碰R及/或Python。这两个都是非常流行的编程语言,可用来进行数据处理、可视化和调整。究竟应该学R还是Python是个老掉牙的问题了,得另起文章才能讨论清楚。我的意见?

其实选R还是python都没关系——精通了R或python之后,另一个学起来也很容易。

我的python和R的编程之旅在是从CodeAcademy、Datacamp、Dataquest、SoloLearn以及Udemy这些跟我一起学编程的网站开始的。这些网站提供了按语言或程序包组织的自定进度的课程。它们都可以将概念分解成更容易理解的部分,还为用户提供了入门代码,让用户填空完成。这些网站一般会提供引导,帮助你完成简单的演示,然后你会有机会马上通过练习来实践学到的概念。有些网站随后还会提供基于项目的练习。

今天,我会重点介绍我最爱的两个:Datacamp和Dataquest。

DataCamp

DataCamp提供了由本领域专业人士讲授的视频讲座以及填空练习。视频讲座大多简洁高效。

我最喜欢DataCamp的地方是最新课程,按照职业路径组织SQL、R以及python的学习。这种方式避免了制定课程计划的痛苦——现在你只需要按照自己感兴趣的道路走就行了。其中的一些职业路径包括:

  • Python / R 数据科学

  • Python / R / SQL数据分析师

  • R语言统计学家

  • Python / R 机器学习科学家

  • Python / R程序员

我个人是从R数据科学开始接受R语言培训的,这门课程对R的tidyverse进行了相当详细的介绍,tidyverse是一个非常有用的数据处理包,可用来对数据进行组织、操作和可视化,其中最值得注意的包括ggplot2(用于数据可视化)、dplyr (用于数据操作)以及stringr (用于字符串操作)。

我最喜欢的R语言软件包。

不过我对DataCamp确实有不满意的地方,那就是学完之后信息留存情况很糟糕。用填空的方式很容易可以靠猜来完成,导致未必真正理解概念。我在这个平台上学习的时候,会努力在尽可能短的时间内完成尽可能多的课程。我大概看一下代码,就开始在不了解全局的情况下填空。如果我可以重新开始DataCamp上的学习的话,我会花时间从整体上更好地消化和理解代码,而不仅仅是要求我填写的那部分。

DataQuest

Dataquest跟DataCamp非常相似。侧重用代码练习来阐明编程概念。跟Datacamp一样,它提供了R、Python以及SQL方面的各种课程,尽管范围比DataCamp的窄。比方说,跟Datacamp不一样,Dataquest并不提供视频讲座。

Dataquest提供的一些课程包括:

  • R / Python数据分析师

  • Python数据科学

  • 数据工程

一般而言,DataQuest的内容要比DataCamp的难得多。“填空”式的练习也更少。虽然在这里学花费了更长的时间,但我的知识留存情况却更好。

DataQuest的另一个重要功能是导师每个月都可以跟你通话,审核你的简历并提供技术指导。虽然我个人没有联系过导师,但事后回想起来,这肯定可以帮助我更快取得进步。

3.数据可视化

数据可视化是把你从数据获得的洞察呈现出来的关键。在学习了用python和R创建图表的技能之后,我通过Cole Knaflic所写的《用数据讲故事》(Storytelling with Data)这本书中学习了数据可视化的原理。

这本书是跟平台无关的。换句话说,里面不涉及任何特定的软件,而是通过启发性的例子来讲授数据可视化的一般原理。通过这本书,预计你可以学到以下一些关键指标:

  • 了解上下文

  • 选择有效的可视化效果

  • 消除杂乱

  • 在需要的地方吸引注意力

  • 像设计师一样思考

  • 要讲故事

我以为自己了解数据可视化,直到我看了这本书才知道自己不知道。

消化吸收完这本书之后,我创建一个视觉上(多少有点)令人愉悦的图表,来说明警察对黑人残酷对待的问题。通过这本书我学到的其中一个重要经验是要在需要的地方吸引别人的注意力。在这张图表里面我是通过这样的处理来实现的:用明亮的黄色线条来突出显示非裔美国人(让人联想起BLM的色调),同时确保图表的其余部分仍保留在背景之中,并辅以白色和灰色等暗一点的阴影。

作者的一个数据可视化技术的应用。

下一步

在本文中,我介绍了自己从零开始学习编程的步骤。通过这些课程,现在你已经具备了处理数据的必要技能!但是,前面还有很长的路要走。在接下来的文章里,我会介绍以下内容:

  • 第2部分——数学、概率论与统计

  • 第3部分——计算机科学基础

  • 第4部分:机器学习

2-4部分将在未来推出,敬请期待!

译者:boxi。