从爬虫到可视化,我的数据拓展之路



  • 原文作者:周宁奕

    史前时代

    大数据时代,媒体最热闹,隔三差五被微信朋友圈的文章洗礼,Hadoop、Spark、Redis、Elastic Search,漂亮的名词背了不少,好像学了很多,然而其实并不会用。

    alt text

    刚进入数据领域,为了理解潮流的名词,我买了本数据仓库的书,书写的比较有条理,很长很学术,很厚很完整,我从晚上12点看,基本12.30就睡着了,催眠作用比喝牛奶实用的多,可以想象最后这本书压箱底了几年,而且直到现在还压着。

    作为一个大公司的码农,如果寻求安逸,大家可以在自己的领域里很舒服,比如很早的我,作为可视化工程师从来就不碰数据,用个random函数做个假数据,和后端工程师对下格式,最后把自己造的数据换成服务器的真数据就好了。数据无非是后端给到我的一个api,其实不关心后端在干嘛也可以混的顺理成章。那我知道webgl渲染的一些细节,知道怎么去做可视化映射,怎么利用canvas和div做动画,但仍然不会写SQL,不知道数据库是怎么存数据的,也不知道怎么去搞分析,不知道一个数据可视化在商业分析中扮演了怎样的角色,不知道业务方会想些什么,以及什么交互对用户是很重要的。

    产业越大,切的越细,数据就是这样,我们想想最简单的数据处理,就是一张excel的表格,写个函数加减乘除,妥妥拽拽就可以求点结果画点图,中学生都会做,但当你数据量大了,数据的依赖多了,分析复杂了,有了客户端,有安全性问题,七八十来个因素一加,这个产业就被复杂的工种切得支离破碎,从前大家都会用excel,现在一些人就活在了自己领域的孤岛里,比如我们做数据可视化,可以把可视化做的更美更交互,但其实人家发明excel的时候是为了解决数据统计问题,美美的数据可视化并不完全解决人家的商业问题,我们如何让自己的技术栈变得更广一点?

    新世界的窗户

    当大河发源于冰川的时候,有时小的和后山上的小溪一个体量,同理一个学科的初衷也许简单的惊人,分分钟就能搞出一个demo,比如写爬虫,请求服务器,解析下,完了存起来,你在nodejs写不到20行就可以搞最小demo:

    alt text

    从某种意义上说,百度是中国最大的爬虫,从一个简单的初心出发,爬虫可以从20行的小程序到变成一个40000人公司的核心技术(当然比喻极端了点) 当然我们也没有那么多野心,无非是这个程序怎么可以变得更强大,更重要的是更酷更有趣。

    从某一年的秋天开始,我写下第一行爬虫发现入门是如此简单后,就开始孜孜不倦地去爬取各种网站,根据写网站的一点简单经验,可以说那些不用登陆的二线互联网公司的网站基本是爬的一马平川,餐饮、火车票、飞机票、poi点,一切都来的很爽很简单。

    找一点意义

    上大一的时候,曾经非常讨厌C++课,因为看不懂黑界面里跑的“Hello World”有啥意义,同理,我相信这个只能在命令打印一行数据的爬虫对80%人来说也乏善可陈,我们的爬虫如何变得更酷呢?

    如果考试和魔兽争霸一样有趣,正常智商的人都能成为超级学霸,如果我们玩的技术有趣一点,我们就能发展自我驱动的学习。爬虫有啥用,需要把简单的技术嫁接到有意思的事情上去,比如做可视化,我们用数据去量化我们朦胧感知的世界,比如用杭州市外卖的数据去印证滨江区现在发展到啥程度了,比如看上海的各种业态在上海不同的区域里怎么分布,比如用招聘网站的数据看哪个职位更有钱途,过去我们知道房子保值,也知道IT是个很热门的方向,但我们未必知道哪个城市的某几个版块涨的快,IT的哪个领域最有机会,趋势又是怎样的。我们如何获得真实的数据然后让人看明白趋势找到有价值的区域?

    房子是许多人这辈子最大的投资,因此研究也许对你非常重要,而仔细想想,房价这玩意,价值大而数据量小,一个上海两千万人, 700万户房,x%正在交易,你说这个数据能有多大?一个链家正在卖的房子10万套,我们不用hadoop,不用spark,搞搞mysql或者postgres,最常见的数据库就可以畅游房价数据。

    那么,最直接的房价应用就是选房了,房源的信息很多,我们的要求很多,链家网的选择器按钮却很少,生了娃的丈母娘公公婆婆一起住,至少是三室一厅的房,你又有了心仪的版块,其他版块的房子距离上班太远,房龄太老的房子不想住,不想提前和一群老年人住一块,其实首付有没有那么多,其实月供也略紧巴,一定不能超出x万元,然后,带个搞笑的,搞不好哪家亲戚说门牌号不能带4…

    根据这么多要求,你看链家网的房源,搞不好看的头昏脑胀,你跑到店里去问中介,中介大概觉得你要求太高不好对付,那么还有一种办法,我们把链家网所有的数据趴下来,然后写个sql,这样我们可以看全上海的房源有没有match你的房子了:

    alt text

    最简单的的sql选择语句,就可以解决你的查询之苦,sql还有许多用法,sql也不仅仅只针对一个数据库,我们的房价应用也不仅仅可以给自己找房子,你是一个开发商,你是一个中介公司,你是房屋管理部门,这份数据的使用方式都不一样。

    有一个问题,如果我们的sql查出来很多数据,我们看的很累,那该怎么办?

    数据可视化

    这是我的职业,也是我写到这里比较缺乏激情的部分,因为平时做的太多了。

    但过去的几年里,当我把真实的数据画出来的时候,已经产生过无数次震撼,如果我们画地图,把全球数千个城市跃然图上,当我们把每个城市的麦当劳和肯德基放在一起对比,当我们把城市所有房子的单价、总价、增长幅度分别画在地图上…无论是房子、基站还是个人lbs甚至一个物联网设备,在城市的尺度都是一个点。当可视化呈现,你都会发现许多趋势,有时并不是点本身让你发现了惊喜,而是整个社会有机生长所产生的pattern,让你产生了新的思考和认识。

    alt text
    alt text

    数据可视化千千万,地理可视化也无穷尽,地理只是其中的一块,但窥一斑而知全豹,我们如何去实现原生的地图点图,又如何用可视化界最通用的d3去实现点图,又如何用leaflet这样偏gis的库去实现,点图是否随着缩放而变化,在缩放的过程中是固定了像素还是固定了尺度,是否可以随着时间的迁移而运动,是否采用不同的渲染方案去绘制,是否可以让点击而产生一些交互…

    可视化的选择也很多,其实excel和keynote就很好,你不一定需要编程,编程也不一定需要搞GIS,GIS也有许多种,但其实小小的点图既简单又不简单,有聊聊数行代码写得完的点图,也有洋洋洒洒数百行写不完的,延伸而言,每一种知识都不难理解,做完美每一件事情都不简单,这也是可视化存在的意义,而不是前人就发明了一种万能的可视化方法。

    没错,最后是一个广告

    前面是我之前学习的一些片段,串起来成了一节课,因此最后是关于我们在太阁开课的广告。

    沁原老师说,可以来太阁搞一个在线全栈工程师的课程,我的内心是紧张的,虽然大大小小的xx大会讲过许多次,但还没完全习惯对着屏幕自言自语,也没想到第一期来的同学多的出乎我的意料,如何对这些同学的学费负责?

    在聊天中,我发现第一期的同学的职业和经历非常杂,有分析师,有博士生,有学政治经济的,也有程序员,所以我也有点纠结,和太阁的另外几位同学花了很不少时间去准备这个课程,设定内容,平衡难度,etc…

    正如前面所述,最简单的数据分析就如处理一张excel一样简单,因此数据分析的每个环节都有简单的理念和目的,比如爬虫就是找到数据,数据库就是一个数据的容器,而可视化就是把数据 映射到图形,还有很多重要的知识,他们都是简单的,而且随着技术的发展和变迁,很多原理依然有用,因此原理很重要,另一个就是实操,这必须不能是一碗原理鸡汤。

    每节课,我们会从最小demo开始,遇到接二连三实际的问题,然后这个程序会变得越来越大,越来越复杂,我是这么学习的,学科的进化往往也是这样发展的,是归纳式的,问题导向的,步步为营的,你遇到了问题才去改进你的代码和设计,并不是我们过去教科书那种演绎的方式,告诉你有哪些问题。

    我们的内容很多,深挖浅述的一个月课程,也许可以花掉大家几年的时间去延展,希望有兴趣的你,和我们一起挖出许许多多微小的上游,在你未来的职业生涯里汇成一条奔流到海的长江。

    写了几百字介绍了课程,马上报名就截止了,欢迎有兴趣的同学戳我们的链接。

    https://www.bittiger.io/livecourses/uEq7R9CawYw9E3ixZ


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待