可能是最全面的数据科学入门文章,文中有大量资料和相关链接。
翻译:思考问题的熊
英文原文地址:Becoming a Data Scientist
数据科学技能
数据科学家每天都会用到很多综合技能,其中的许多技能都是在工作或者其他时间自学的。他们并不需要具备某种特定的文凭,而是来自不同的背景。
本文讨论的所有技能都可以自学。我们为此准备了一些资源让你可以沿着这条路走下去。而你则可以把这篇文章看成是数据科学家的培养指南。
数学
数学是数据科学的重要组成部分。请确保你了解从微积分到线性代数这些大学数学的基础知识。当然,关于数学你知道的越多越好。
过大的数据量通常会显得笨拙且难以操作,这时你将不得不使用数学对你手头的数据进行处理和结构化。
如果你忘了本科阶段就该掌握的线性代数和微积分概念,别无选择,你必须要学会理解如何处理数据矩阵并大致了解其背后的数学算法。
资源︰ 这个列表中的15门数学公开课可以帮你补上这些数学技能。另外,麻省理工学院也提供了关于数据科学的开放数学课程。
统计学
你必须知道那些可以从小数据集推断总体情况的统计学知识,这是数据科学的基本准则 。统计学将数据科学家的成长之路铺平道路。
要知道统计学总是和数据结合在一起的,统计学将使你更好地理解所观察到的数据模型,并能提炼出做合理推论所需要的洞察力。例如,理解统计推断将帮助你从一个小样本中得到符合总体中每个个体的一般性结论。
要理解数据科学你必须知道基本的假设检验,并且能设计实验来理解数据的意义和背景。
资源︰ 我们的博客发布过一篇如何将贝叶斯定理,概率和统计结合起来的入门文章,这篇博客为你理解成为一名数据科学家需要的统计基础提供了一个很好的参考。
算法
算法是让计算机遵循一定规则或模型的能力。在处理分析大数据时,了解如何使用机器来完成工作至关重要。
为了让自己胜任数据科学中各种繁重的工作你不得不理解算法选择和优化背后的理论。你必须确定自己的问题是否需要进行回归分析或者需要用某种算法将不同数据点进行归类。
你会想要知道很多不同的算法,也会想要学习机器学习的基本原理。所谓机器学习就是能让亚马逊基于你的购买历史记录向你推荐商品而无需人为干预。这类算法可以借助机器的力量来帮你挖掘信息。当然,为了处理大型数据集,你也需要机器来扩展你的思维。
资源︰由KDNuggets提供的这份指南解释了十种常用数据科学算法,里面19个免费的公共数据集可以供你进行实践。
数据可视化
完成数据分析仅仅是成功的一半。为了扩大影响力,你不得不说服别人相信并且采纳你的观点。
人是视觉动物。根据3M和Zabiscod的研究,传输到大脑的信息里几乎90%都是视觉化的,而且大脑对视觉信息的处理速度要比文本快60000倍。
数据可视化是一门通过图表和其他可视化工具来呈现信息的艺术,从而使观众可以很容易地理解数据并从中提取观点。什么样的信息最适合在条形图中展示,哪种类型的数据又应该用散点图呈现呢?
人类生而善于回应视觉线索。你呈现的数据结论越清晰,别人就越有可能根据你的结论而采取行动。
资源︰ 这里有一篇博客供你参考。另外,Nathan Yau 的博客提供了各种各样的数据可视化要诀和技巧,这些可以使你更上一层楼。
商业知识
没有背景的数据是没有意义的,你必须明白你正在分析的事情。思路清晰是成为一名数据科学家的关键。
大多数公司雇佣数据科学家不仅是为了挖掘数据,还需要他们将研究结果传达给各位股东并且提供当即可行的建议。
最好的数据科学家不但有能力处理大型复杂的数据,也能理解他们为之工作的那些错综复杂的企业或组织。即便是在商业因素的制约下,广泛的业务知识令他们能够提出正确的问题并拿出有见地的建议和切实可行的解决方案。
资源︰ 这个免费的商业课程列表可以帮助你获得需要的知识。我们的商业数据分析课程也可以帮助你获得这方面的技能。
领域专长
作为一名数据科学家,你应该了解自己所做的事情以及它所处的行业。
除了深入了解你为之工作的公司,你也需要了解整个领域来培养商业洞察力。来自于生物学研究的数据和来自心理学实验的数据很可能有截然不同的背景,你应该对那些行业术语有足够多的了解。
资源︰ 这在很大程度上具有行业依赖性,你必须找到你自己的方式并且尽可能多的学习和你行业相关的内容 !
分析思维
想在数据科学领域做好,你需要严谨的分析思维。大量的数据科学在解决问题时都需要有一个敏锐的头脑。
资源︰ 通过书和难题来保持你的头脑敏锐。类似于Lumosity 这样的网站可以帮助你在任何时刻都保持敏锐的认知能力。
数据科学工具
随着各项技能的完善,现在你需要学会使用现代数据科学工具。每个工具都有其长处和短处,并且每个工具在处理数据的过程中都扮演着不同的角色,你可以使用其中之一或者全部。下面是数据科学中最流行的工具以及你想要深入了解他们需要用到的资源。
文件格式
数据可以存储在不同格式的文件中。下面是一些最常见的︰
CSV︰ 逗号分隔值。你之前可能用Excel 打开过这种文件。CSV使用分隔符来分割数据,这些分隔符有助于把不同数据点的数据分开。
SQL : 结构化查询语言。SQL将数据存储在关联表中。如果把一行数据从右向左读过去,你会得到一个对象的不同数据点 (例如,一个人有年龄、性别和身高等数据类别)。
JSON: Javascript对象表示法是人和机器可读的轻量级数据交换格式。来自 web 服务器的数据通常用这种格式进行传输。
Excel
简介︰ Excel往往是通往数据科学的入口,从某种意义上讲每个数据科学家都能从学习它的过程中受益。
Excel允许你所见即所得的轻松处理数据,你可以对数据进行方程计算而完全不需要使用代码。它对那些想不通过编程而得到结果的数据分析师来说是一个非常方便的工具。
Excel非常容易上手,这个程序可以让任何人在分析中有直观的理解。你和不具备任何编程技能的人进行数据沟通时,Excel都是非常有用的工具,因为这些人仍然能对数据进行处理。
谁在使用︰数据分析师倾向于使用 Excel。
难易程度:初级
示例项目︰尝试导入一个NBA 球员的小型数据集并制作简单的图表展示联赛中的高得分球员。
SQL
简介︰SQL是最流行的用于查找数据的编程语言。
数据科学当然需要数据,而SQL正是一种专门用于从数据库中提取数据的编程语言。
SQL 是数据科学家中最流行的工具。世界上的大部分数据存储在需要用SQL来访问的表格中。你可以通过SQL对数据进行筛选和排序。
谁在使用︰数据分析师和一些数据工程师倾向于使用SQL。
难度等级︰初级
示例项目︰尝试使用SQL从 Billboard 100的榜单中查询最流行的十大歌曲。
Python
简介:Python 是数据科学中一种功能强大且用途广泛的编程语言。
一旦你下载好Rodeo (一种Python IDE),你很快就会发现Python 究竟有多直观 。作为一种可以从开发网站到跨网络收集数据的多功能编程语言,Python 有很多致力于使数据科学工作更加简单的代码库。
记住,Python 是一门语法简单的多功能编程语言,很容易学习。
Python程序猿在这个网站的调查中平均年薪是$102,000,而Python目前是大学教学中最流行的编程语言,Python社区对于Python教学也充满热情并且开发了很多有用的工具,这都会节省你的时间从而让你有更多的精力来分析数据。
许多数据科学家都在使用Python解决他们的问题︰ 在O'Reilly的一项调查中,40%的受访者在明确的数据科学研究中使用Python,而使用Excel的人是36%。
谁在使用︰ 数据工程师和数据科学家将使用Python来处理中等规模数据集。
难度等级︰ 中级
示例项目︰ 使用 Python 来获取名人的tweets,然后分析他们使用最频繁的一个词。
R
简介︰ R是数据科学界的一门主要语言,因为它是明确地根据数据科学的需求而设计的。在数据科学界,R是最流行的编程环境,超过43%的专业人员都在使用R语言。
R是一个专门为数据分析而设计的编程环境,当你需要建立统计模型和进行结果展示时,R会大放异彩。它可以适用于各种各样的统计和图形技术。
类似于 Python,R社区成员贡献了各种各样可以扩展R代码库核心功能的包,这些包可以应用于一些特定的问题,如测量财务指标或分析气候数据。
谁在使用︰数据工程师和数据科学家使用R处理中等规模的数据集。
难度等级︰ 中级
示例项目︰ 使用 R来展示过去五年的股票市场走势。
大数据工具
大数据来自于摩尔定律,即计算机的计算能力每两年就会翻一倍。这使得数以百万计的计算机生成大规模数据集。想象一下Facebook 在任何一个特定时间能生成多少数据吧!
根据麦肯锡的调查,任何一个使用SQL和Excel等常规数据工具无法完成分析的数据集都可以说是大数据。最简单的定义就是,大数据并不适合在你自己的计算机上进行处理。
下面是解决这一问题的一些工具︰
Hadoop
简介︰通过使用 Hadoop,你只需要通过一个服务器就可以控制存储在多个服务器的数据。
这种解决方案是一种叫做 MapReduce 的技术。MapReduce 是一个抽象的概念,它把一系列计算机当作一个中央服务器。这就允许你将数据存储在多台计算机,仅通过其中一台对数据进行处理。Hadoop 则是开源生态系统的工具,它允许你在不同的服务器上存储庞大的数据集,也允许你在一台计算机上管理多个数据集。
谁在使用︰数据工程师和数据科学家会使用 Hadoop 来处理大规模的数据集。
难度等级︰ 高级
示例项目︰ 利用 Hadoop 将大规模数据集进行实时更新,例如Facebook 用户生成的赞的数目 。
NoSQL
简介︰ NoSQL 允许您管理数据而无需不必要的负担。
囊括所有数据的表格可能会非常笨重。NoSQL 包括许多数据存储方案,可以将巨大的数据集分离成易于管理的数据块。
NoSQL 是由谷歌引领的一种趋势,google用它来处理自己存储的那些难以想象的大数据。NoSQL经常以 web 开发人员欢迎的JSON 格式进行数据结构化,类似于MongoDB 这样的解决方案已经创建了可以用类似SQL处理的数据库,这些数据库可以用更小的结构和密度来存储数据。
谁在使用︰ 数据工程师和数据科学家使用 NoSQL 来处理大型数据集,通常是那些有百万计用户的数据库网站。
难度等级︰ 高级
示例项目︰ 存储部署在web上的社交媒体的用户数据。
联系起来︰ 数据处理过程中的工具
我们已经介绍过的每一款工具都是可以互补的,且有自己的长处和短处。而每一款工具也都可以应用于数据处理过程的不同阶段。
数据收集
有时数据分析不是难事,难的是找到你需要的数据。不过好在我们有很多资源。
你可以通过所谓的API(应用程序接口,Application Programming Interface)来创建你想要的数据集。API允许你从某些数据提供商那里获取结构化的数据。比如你能从Twitter、Facebook 和 Instagram 查询各种各样的数据。
如果你想要处理公共数据,美国政府已经将其中一部分免费向所有人开放,Reddit就追踪了其中最受欢迎的数据集。数据搜索引擎 Quandl 则可以用来搜索最匹配的数据。
我们的博客也列出了19个我们最喜爱的公共数据集,当你马上就需要好数据的时候它可以帮上你。
如果你就是想找点没那么严肃死板的东西,看看这篇博客吧,其中竟然包括了信鸽比赛 !
**Python **支持大多数的数据格式。你可以处理CSV数据或来自 web 的 JSON数据,当然,你也可以把SQL表直接导入到你的代码 。
你还可以从 web 创建数据集,Python 的requests 库让你可以运行一行代码就从不同的网站获取数据。你可以先从维基百科的列表中获取数据,然后用beautifulsoup 库清洗数据,随后便可以进行深入的分析了。
R可以从Excel、CSV和其它文本格式文件中获取数据。Minitab或SPSS 格式的文件也可以转换为R的数组。
在R中,你可以使用Rvest包进行基本的网络数据爬取,magrittr包则可以用来进行数据的清洗和分析。这些包和Python 中的requests库和beautifulsoup库类似。
数据处理
Excel可以让你通过菜单轻松地清洗数据,例如删除重复值、按列筛选排序或者删除行和列的数据。
*SQL具有基本的筛选和排序功能,因此你可以准确地获取自己需要的数据。当然,你也还可以随时更新SQL表和或者删除其中的某些值。
Python则可以使用Pandas库进行数据分析。与Excel相比,它处理大型数据集的速度更快且功能更多。你可以通过编程的方法来使用Pandas库,例如,通过一行代码将数据集的所有错误值替换为某些默认值,例如0。
R可以帮助你在信息中添加列、改变数据结构或者进行数据本身的转换。很多新的R语言包,如reshape2,可以让你处理各种各样的数据框使它们符合你所设定的标准。
NoSQL允许你提取大型数据集的子集并依据自己的意愿更改数据,你也可以借助这些功能清洗数据。
探索性分析
Excel可以进行列求和、均值计算,也可以借助漂亮的方程进行基础的统计和数值分析。
Python和pandas可以对数据进行更加复杂的分析从而让你轻松发现更高级的趋势。
在Pandas中你能够做深入的时序分析,比如跟踪股票价格的变化。
R语言设计的初衷就是进行大型数据集的统计和数值分析。你可以构建概率分布、对数据进行各种统计检验,也可以进行机器学习和数据挖掘。
而NoSQL 和 Hadoop 都允许你在SQL这一层级上进行探索性的数据分析。
数据分析
**Excel **对数据进行高层次的分析,使用数据透视表可以动态的展示数据,使用高级公式和宏编程可以让你以编程的方式来分析数据。
Python 则提供了数据分析库Numpy。你可以通过SciPy进行科学计算与计算或者通过scikit-learn代码库获取大量已经预构建的机器学习算法。
R有大量的包供你进行各种特定分析,比如泊松分布和混合概率。
数据呈现
**Excel **具有基本的图表和绘图功能。你可以轻松构建仪表板和可以进行数据实时更新的动态图表。
在数据可视化方面,Python 有很多非常强大的选择。你可以使用 Matplotlib 库将 Python 中的数据生成基本的图表。如果你想要更高级的东西,可以试试 Plot.ly 和它的Python API。
除此以外,你也可以使用 nbconvert 函数将你的Python 笔记变成 HTML 文档。这样你就可以把代码块嵌入到交互网站或你的项目档案中。有很多人使用这个函数来写Python学习的在线教程。
R是用来做统计分析和结果展示的。因为R中有很多专门的包可以用来做各种类型的图表结果展示,因此它是一个非常适合用来做科学可视化的强大开发环境。你可以用基本图形模块从数据矩阵中构造所有你想要的基本表格和图形,然后把这些文件保存为.jpg等图像格式或者保存为单独的pdf,你也可以使用ggplot2中更加高级的图表,比如带有回归线的散点图。
开始求职
你已经了解了入门数据科学和成为数据科学家所需要的技能和工具,现在是将这些理论应用到寻找一份数据科学工作的时候了。
构建数据科学项目集和简历
你需要为自己进入数据科学领域提供一个不错的第一印象——那就是项目集和简历。许多数据科学家都有自己的网站,里面既有和工作相关的项目集也有展示自己想法的博客。
这些网站使他们能够展示自己的经历和在数据科学领域创造的价值。为了使你自己的项目档案也具有相同的效果,它必须具有以下特点:
- 你的项目集应该突出自己最棒的项目。专注于几个令人难忘的项目通常比展示大量平淡无奇的项目更好。
- 它必须经过精心设计并且要有一个迷人的故事,让大家了解你是谁而非仅仅是你的工作。
- 你应该通过突出自己在工作中的创造的影响力来为你的访问者创造价值。也许你开发了一个对大家有用的工具?也许你有一个教程?把它们在这里展示出来。
- 应该很容易找到你的联系信息。
例如,你可以看看我们网站导师 Sundeep Pattem 的个人项目集中的几个项目。
Sundeep Pattem 致力于研究和实际生活联系紧密的复杂数据问题。他有五个项目分别涉及医疗成本、劳动力市场、可持续能源、在线教育和世界经济。这些领域中每一个都有大量的数据问题需要解决。这些项目都独立于任何真正意义上的工作,它们表明Sundeep是发自内心地喜欢为那些复杂的数据科学问题提供解决方案。
如果缺乏想法,你可以参加数据科学竞赛。类似于Kaggle,Datakind和Datadriven这样的平台允许你去解决真实的企业或社会问题。通过利用数据科学技术,你可以展示自己的影响价值,创造出最有说服力的项目集,向别人证明自己的执行力。
在哪里找工作
- Kaggle 为数据科学家提供了一个 工作公告栏。
- 你可以在工作搜索引擎Indeed 中找到一系列公开的数据科学工作招聘信息。
- Datajobs提供了一个数据科学网站清单,这是一个学习如何成为数据科学家的好地方。
你也可以通过人际交往或者联系导师来寻找机会。我们再一次强调,最好的工作岗位往往是通过与数据科学界人士交流而找到的。这就是你成为一名数据科学家的方式。
你还可以在很多创业论坛找到就业机会。Hacker News有一个专门属于Y Combinator(也许是世界上最著名的创业孵化器)的工作公告栏。Angellist是一个为初创公司寻求资金的数据库,它也有工作板块。
数据科学面试宝典
有关数据科学面试的内容可以写成一本书,事实上,我们就是这么做的!
如果你得到了面试机会,接下来该做什么呢?在数据科学面试中有这么几类常见的问题:个人背景、编程问题和机器学习应用问题。你应该预料到在任何一场数据科学面试中都会有技术性和非技术性的问题。首先确保复习一下编程和数据科学相关的知识,然后尝试把它们与你自己的故事融合在一起!
通常你还会被要求分析一些数据,也很可能被问及文化契合和统计学问题。为了准备编程相关的问题,在某种程度上,你必须将数据科学面试看作一次软件工程训练。你应该复习一下所有的编程面试资源,其中大部分都是在线的。这个列表是你可能会遇到的数据科学问题。
你会看到几类常见问题:
- Python 和 R:在某种情况下你更喜欢哪种语言?
- 什么是K-means(一类特殊的数据科学算法)?请描述一下使用它的场景。
- 给我们讲讲你最近参与的一个数据科学项目。
- 你对我们业务增长的关键驱动因素有什么了解?
第一类问题测试你的编程知识;第二类问题测试你对算法的了解,并请你分享自己的实际使用经验;第三个问题则是深入了解你以前的数据科学工作;最后,第四类问题将测试你对面试企业的了解程度。
如果你能展示自己的数据科学工作帮助潜在雇主的受益方式,那会给他们留下深刻的印象。这样,他们才能知道,你在关注公司的工作内容,并且对这个行业有着充分的了解,也无需进行入职教育。
以上,就是一名数据科学家的成长之路。