数据可视化入门——我该从何开始?
我爱数据——并且我把这一事实告诉了很多人。
如果你最近曾与我一起参加过聚会,我对在你的耳边喋喋不休地讲网页数据可视化工具或我最近热衷的酷酷的R包表示道歉。
如果你和我一起玩Fantasy Sports(梦幻体育游戏,是一种网络游戏,译者注),欢迎向我索取图表,我有好多图表。
一个完全没有必要的、对在Fantasy Football中是否选择第一个的分析,不需要这个。
因此,对我来说,最近越来越频繁地被问到:“尼克,我想要尝试数据分析和可视化,我应该从哪里开始?”一点也不感到惊讶。
不幸的是,天底下不存在一个适用于所有人的完美的解决方案,因为每个人的需求都有一些不同,而且大家已经知道的东西差别很大。在如今的技术、教育、商业氛围中,我最喜欢的就是来自非常不同的职业道路和背景的聪明人都在说:“我需要更懂数据。”
不过尽管有这么多差异,在多次谈话之后我已经发现了足够多的共性,以致于我觉得可以列出一个有用的初学者清单。很显然,它也不会适用于每一个人。你是否是一个经验丰富的工程师,嘲笑从JavaScript和Python开始学习的想法?现在已经懂得D3.js,而且在思考是否要从以上二种语言中挑一个学习或用D3制作自己的图表库?如果是的话,我的清单不适合你。这个清单是给想要从头学起的学术科学家、学校教师、研究顾问、项目经理、失业一族和MBA毕业生等。如果你是其中之一,那么从“无需编程”一直到“我爱编程”,以下是我觉得是你应该开始着手学习的地方:
无需编程
首先, 如果你还不够精通Excel,那就值得一试。我是认真的。至少也应该学一学Excel当中的数据透视图。它可能听上去很蹩脚,但Excel能做的事远远超过人们的预期。如果你足够努力的话,它甚至可以直接做出美丽的图表。
如果你已经有一些数据了,只是想要找一个好工具来尝试一下可视化或输出引人入胜的图表,性能良好又极为流行的Tableau是一个很好的选择。它有一个免费公众版本,也有一个非常昂贵的付费版本(学生可以免费获得)。它可以导出到网页,或者是研究论文里的统计图,也可以上传到Instagram或打印成一整面墙那么大的巨型图。Tableau Public的网站上有许多高质量的范例可以帮你激发灵感。遗憾的是,我要推荐的下一个“无需编程”的工具——Infoactive,它正在被停用……但从乐观的角度来看,它是被Tableau收购了。希望对于未来Tableau Public来说是个好消息。
需要一点编码
如果我得选一个只用于数据的语言,我会选R。它是免费的,在其基本的语言之上,由大量的持续发展、不断增加的有用的包的支持,同时,还有很多免费的资源以供学习。首先,在那些资源中,我认为Coursera的这些课程足够好了。
考虑到所有这些对一个真正的初学者来说有点太多了,但是这些课程形成了一条非常好的学习路径,从数据科学的关键术语和想法的介绍,通过探索性的数据分析,那涵盖了有用的R包,像ggplot(一个非常热门的可视化工具),一直到通过Shiny来增加交互性,在网页上发布以及用数据来说讲事实。
R是我使用最频繁的软件,用于小型、快速分析和特设的可视化上。如果你有个数据集,而Excel因为数据集太大、不够灵活、可视化效果不好而难以应付,那么R是快速应用的完美选择。
如果要速度快,你也许应该学点SQL。相对于R来说,SQL在应用范围上很有针对性,(真的,这不是一个苹果和另一个苹果的简单比较)。但是,如果你需要深入数据集,收集数据供其它工具或语言来使用,这是一个你了解SQL的好机会。并且,从长远来看,这能带来回报。
我爱编程
通常情况下,“我应该从哪里入手?”这个问题的出现是因为网络上出现了大量交互式可视化信息。
不幸的是,你会发现你要学习很多才能建立起自己的可视化知识体系。但是,这是个尽管艰难但是值得的目标。
幸运的是,有很多非常好的资源可以利用。在交互式可视化底层用到的库和如今许多在浏览器里运行的数据可视化是基于D3.js,这是由Mike Bostock发明的。如果你想在线发布或者建立交互式可视化,D3.js是应该学习的好工具。这意味着通常你需要先学点Javascript,然后再特别学下D3.js。
Bostock的网站是囊括众多范例和教程的金矿。我也建议看看Scott Murray的《Interactive Data Visualization for the Web》,你可以从O’Reilly购买,也可以通过下面这个链接在线免费学习:http://chimera.labs.oreilly.com/books/1230000000345/index.html
在线版本非常棒,你可以在那本书里实践编写代码段,运行代码,然后把输出结果和书中自带的交互式范例进行比较。Murray针对初学者设计了很好的流程,首先带你一点点了解网页浏览器的工作原理、HTML/CSS以及Javascript,最后才让你一头扎进D3的细节中学习,他的确做得很好!
D3有一个非常特别的优势,那就是地理空间可视化。D3在创建很多不同种类的地图上做得很好,如果你关注这个领域,下面这个链接是现成的专业教程:http://bost.ocks.org/mike/bubble-mao/。直接应用D3可能很难,但是你可以基于很多其它工具来调用D3从而让事情变得容易点。我建议至少学点D3的基本知识,而非只是使用更抽象的绘图库。但是,如果那样很棘手,像Plot.ly这样的工具能帮助你把事情变得更容易入手。
最后,如果你真想学一种能做所有事,而且刚好在数据可视化上很出色的语言,那么去学Python。Python是我所例举的工具中最通用和最强大的,在数据科学界它是非常流行的。
我发现Python作为一种多用途的语言非常平易近人,但是,说实话,如果你所想要做的只是探索和可视化数据,那么它也许有点过了。例如,Youtube是用Python实现的,1百万行语句。如果你真心想走Python这条路,对入门Python来说,Code Academy课程是比较短(10到20小时)但有趣的。
最后,像D3.js之于Javascript抑或ggplot之于 R,有许多Python库适用于数据可视化。建立于一个较早的流行库matplotlib之上的Seaborn和 Bokeh也许是目前最好的,但是这是一个迅速发展和提高的领域。Seaborn和 Bokeh这两个网站展示了各种你能用那些工具创建的可视化。
微信名:
HadoopSummit
微信ID:
hadoopinchina
中国Hadoop技术峰会是亚太地区举办最早、规模最大、影响力最广阔的大数据盛会。
Chinahadoop.com是China Hadoop Summit的内容网站。
HadoopSummit是Chinahadoop.com的微信发布平台。