Gooseeker类似傻瓜相机,设定好了程序,只需要操作简单的步骤便可以获取要分析的数据。当然简单是相对的,因为第一次使用,很多地方不是特别的明白,幸好网站有很多教程,还可以网站发帖提问,加入QQ群也有管理员回答问题,在管理员的帮助下,倒腾了几天终于有些明朗了。当然这个网站会提供其他收费的服务,比如快捷方式提取数据需要积分购买打包数据,也就是我们需要查的一些数据结果Gooseeker已经做好了,如果你不想自己获取,可以直接购买。不过对于我来说,比较享受从困惑到明朗这个过程,自己动手,丰衣足食。免费用了Gooseeker的服务,这里也算打个广告。不过免费爬取的次数是有限的,幸亏在用完免费的数据之前存了一版相对完整的数据。这次的案例是利用Gooseeker爬取深圳市罗湖区租房的数据,开始选的是链家的网站,进入详情页后发现提供的信息非常少,又转向了Q房网,数据直观,而且比较全面。有兴趣的可以对比下两个网站的列表页和详情页的区别。
爬取数据的总体思路:
用GS浏览器打开网址,编注需要用到的字段;因为查到的信息往往有几十页,所以每一页都需要一样的命令,此时需要分页获取相同内容的操作;如果需要进入具体的详情页,获取详情页信息,此时需要将详情页的需要的字段做分级操作,然后得到的是两个excel文件,最后需要运用相应的函数将excel做合并处理,需要用到的功能有这么几个:
- 列表采集
- 分页采集
- 层级采集
- 多层级合并
每一个在Gooseeker的网站上都有详细的教程,这里没有用到层级采集和多层级合并,因为层级采集要进入到每个详情页里,获取的数据量比较大,如果再抓取详情页的数据会非常慢,只好中途暂停了,只获取了列表页的内容,一共10013条 ,如下图
在选取数据之前需要明确数据分析的目的,比如想分析哪个区域的租金最贵,租金与楼层的对应关系,房租价格与房源数的对应关系等等。其实在选数据时思路不太清晰,只是想选全一点数据,有的数据其实最后也没有用到,还有一些数据没有取到。
理解完数据信息后,对数据进行清洗,主要包括:选择关键子集,列表重命名,删除重复值,缺失值处理,一致化处理,数据排列,异常值处理。
首先删除无用子集,在开始定义规则时,N列包括3个内容,行政区域,城区和小区,这些内容如果开始分别定义,会显示在不同的列中。那么这里就需要将其分列。以为是简单的分列,结果里面藏着坑,这里分享一下。表面上看格式很正常,但使用分列后,只能显示第一个“-”之前的内容,也就是“南山”。在公式栏里发现存在着一个换行。那么问题来了,如果使用分列功能,必须批量的将这个换行删掉。
百度了一下方法,这个我没有验证,因为用的是MAC, 不知道怎么调出NUM键,有兴趣的可以验证一下:
步骤1:按下Ctrl+H
步骤2:鼠标单击“查找内容”右边的输入框
步骤3:按下键盘右上角的Num LK键
步骤4:按住Alt+Fn键不放,再先后按小键盘上的1、0各1下
步骤5:单击“全部替换”按钮
步骤6:按下esc键,完毕。
另一种是论坛的一个朋友回复的方法,正好利用了这节课学的查找功能,看来对于查找的函数还没有融会贯通,还处于懵懂状态,感谢这位朋友。课程里讲的是查找提取含有一个“-”的内容,而这里含有两个“-”,难度系数提高一点。首先查找行政区,这个相对简单一些。
其次,查找两个“-“中间的城区内容,自己开始想的思路是确定是用mid函数,后两个变量选取的位置从第一个”-“后一位开始,选取的长度用len函数减去第一个”-“之前的长度,再减去第二个”-“后的长度,公式如下图:
有没有发现其实Len(A2)就抵销了,直接用下面的也可以。
又发现一个问题,M列里隐藏了很多内容,而且里有空格,有换行。存在换行的时候是不可能用分列了,那么需要将空格和换行都删掉,在一位同学帮助下,先用替换将空格去掉,然后用Clean函数将换行去除,特别的对比一下:
函数TRIM用于删除单词或字符间多余的空格,仅保留一个空格。函数CLEAN则用于删除文本中的换行。两个函数都是用于规范文本书写的函数。用clean将其换行删掉后,将内容复制到新的一列,必须是文本形式,然后进行分列即可。
通过筛选功能发现部分房源区域这一栏格式与前面并不一样,只写了小区名称,那么后面自然查找不出来,不过再后面学校一栏有包括区域的字段,那么可以将其查找出来。查找关键字并找出的需要用到的函数:多个IF(ISNUMBER(FIND("target",withtext)),"target")函数,如果Find函数能找到目标,则会显示在第几个位置,是数字;嵌套ISNUMBER函数,如果其参数是数字则返回True,否则false; 再嵌套IF函数,提取目标字段。
如果查找的关键词有多个,那么增加多个上述函数,几个目标字段,最后面就有几个括号。
这里再留个问号,是不是还可以找到更简便的方法。
上述操作后,行政区域一列有未找到的情况,出现false,共261条记录,往下拉发现,多行重复,将重复值删除,最后还剩26个未找到行政区域的行,参照总体样本可忽略不记,将其删除。
由于上面发现重复值的存在,那么检查一下是否还有其他信息重复出现,选中房租一列,按降序排列,发现重复信息较多。用“数据“选项卡下的”删除重复项“功能,一下次删除了7000条左右的内容。 这一步应该先做,现在才做只是因为才发现这个问题。
面积这一列用查找替代功能将平米去除,再用“月租”除以“面积”得到“每平米月租”楼层这一列有若干内容直接写的层数,相应的归类为中高低层,定义小于等于3层的归为低层,3层-6层归类为中层,6层以上归类为高层。运用公式:
G列是新插入一列,这里想将其复制到F列,问题又来了,筛选后的结果不可以直接复制,因为还有隐藏的列,试了复制可见单元格这个方法,但依然有问题,然后就试了下面网址讲的方法,成功。
关于复制可见单元格的方法如下:
到这数据清洗到一段落,开始对深圳租房市场的分析,主要使用数据透视表。
1、不同行政区域的不同装修租房价格比较
从表中可以看出,深圳租房市场,南山、福田、罗湖区域占领前三的位置,光明新区,大鹏新区,坪山的平均租房价格最低;价格也随着装修档次的提高而提高。在盐田区域,出现了普通装修的价格超过豪华和精装修价格的情况,不过盐田一共29个房源,数据太少,不足以说明问题。
2、不同楼层的不同装修程度的比较
中、高层价格随着装修的程度不同成正比变化,豪华装修的价格是毛坯价格的两倍左右。低层出现了异常,普通装修的价格超过了精装修的价格,存在一种可能,普通装修的房源总体地段要好于精装修的地段,没想到好的验证方法,留个问号。
3、不同区域租房价格比较与房源数
从上述数据可得出趋势,价格越高的区域,提供的房源数越多
4. 描述统计分析
从描述统计的结果可以得出:深圳市租房平均价格在96元/米/月,所有房源一半的面积平均价格位于84.39元以下,100元/米/月是出现频率最高的租房价格。
总结:这次作业拖延了几天,其实每天也都在看,可能不懂的地方太多了,都想去弄懂,excel强大功能的背后,需要对其规则非常了解,比如做一个操作没得到想要的结果,我们并不一定能意识到是什么导致的,搜索的结果也需要辨别,表面很简单的问题却需要花费很久的时间。因为是第一次做数据分析的案例,还是存在很多问题,比如分析的目的不明确,取数据时只是将觉得需要的数据取出来,没有结合特定的目的,这也导致可能需要的数据并没有取出来。比如离地铁的距离,这一数据没有成功提取出来。 另外分析结果也比较局限,整体思路不清晰。描述统计部分对于各个指标值的理解不透彻。需要多看数据分析的文章,学习思路,涉及的理论与方法还需要结合实例多实践,看懂与会操作之间要有无数的实践
特别强调一下,写的文章其实是对自己学的东西的回顾总结,也想跟大家分享一下经验,避免不了会有一些错误的地方和不太聪明的方法,如果对于某一方法有不同的见解,非常欢迎指点和交流,这篇文章也会不定时的更新。