想做数据分析,分析用的数据get到了吗?
想做数据分析吗?
我不知道别人想不想,我是挺想的。
我从大学开始学了7年数学,一直以来我都没有找到自己学习数学的意义,尽管别人说数学是基础学科,什么都可以做。可对我来说,毕业了找工作不知道自己适合做什么;甚至对于别人问“你学数学都学些什么,那些都有什么用呢”都不知道如何回答。我一直在思考怎样才能学有所用,用自己的知识来赢得优势。
在经历了单纯的觉得数据分析好像跟我有点匹配,所以半踏入门槛后(工作换为统计相关),最近突然意识到数据分析的奇妙乐趣还有很多看得见的好处--
- 职业发展:自从互联网飞速发展以来,数据呈现爆炸式增长,利用数据来制定战略指导业务做出决策已经逐渐成为公司们的标配。所以我觉得数据分析职位需求量大,天花板相对高,可以长期从事的行业。
- 学以致用:让我看到了数学在实际中的应用,当年学起来那么枯燥的东西,那些从来没有理解过全靠死记硬背的东西,原来是有这么多用处的。虽然现在用的相对于学的还都是皮毛,不影响我有一种豁然开朗的感觉。
- 思维提升:数据分析是一种用严谨的框架把事实清晰的展示出来的过程。这会锻炼我们在解决问题时,更加系统,有逻辑和理性。
- 应用场景:其实事物都是相通的,有了数据分析的思维,对于平时做决策做计划都可以拿来用。另外还可以识别那些貌似有信服力的数据,防止被骗,反过来如果去说服别人的时候,基于数据表达更清晰有力。对于容易纠结又很喜欢所有事情都有规则的我来说,简直像是找到了法宝。
最近都沉浸在新世界大门打开的喜悦之中, 不过也不能光顾着乐,既然这么喜欢,那就应该让自己在数据分析方面变得更加专业,实现精神物质共同提高。
怎么能做到呢?
- 我的想法: 先对数据分析对应的知识技能系统有一个全面的了解,然后查漏补缺。同时,为了提高效率,找一个认为可以指导自己系统学习的课程来跟随学习,从初级到中级,搭建起自己的框架。
- 我的行动: 找到了适合想法的课程,跟随课程学习:每周一个模块,至少7小时的学习,并且完成相应的模块作业发给老师。
- 我的OS: 不够smart的目标都是耍流氓,不能让自己立刻行动起来的目标也是一样。
开始做数据分析了?
还没有那么快,我们得先get到分析用的数据。也许有人会说真正工作中,数据往往都是被准备好的,这一步真的有必要吗?
我认为有。一方面我对数据分析应用的期待是全部生活而不是仅限于工作。另一方面,即使只在工作中用,作为一个数据分析者,数据是工作的源头,自己对于怎么得到源头一点都不了解,相当于自己工作从头就不可控,这个风险我不想要。最后,现在学习阶段,有了自己抓取的数据,对于之后的可视化和分析都很有用。
所以我们的课程作业从抓取数据开始。具体的要求是:
1. 数据内容:自己感兴趣行业数据或者自己工作相关,可以在之后用来进行分析和可视化
2. 数据量:>10000条
3. 数据获取工具:易操作的第三方软件(建议)比如 JSK
Step1 梳理任务内容
- 内容方面要自己感兴趣或者工作相关,并且可以用于之后的分析。我自己工作相关的数据暂时想不到可以抓取的网站,而且我也没有想好可以做什么分析,所以pass了。考虑可获得+感兴趣+能分析,最后决定收集招聘网站关于数据分析职位的信息。
- 数据量要求过万条。我想这个很合理,因为同一个问题数量级不同的时候呈现出的情况可能完全不同,实际应用的时候,数据分析的数据量不会太小,数据太少与要达到的学习目标不匹配。
- 数据收集工具:在此之前我在自学Python被它的爬虫搞的晕头转向,基本已经放弃了爬数这块。原来还有傻瓜式的工具,学起来。不过使用过觉得还是自己会写程序更靠谱。
Step2 制定操作计划
1. 确定抓取目标:
(1) 智联招聘网站上数据分析职位在全国范围内的招聘情况;
(2) 包括的信息层面有:公司(城市+规模+性质+行业)+职位要求(学历+经验+人数+职位类别)+薪资+福利;
(3) 数据量要大于1万条.
2. 学习爬虫工具的操作。
3. 整合数据存成excel文件。
4. 总结反思。
Step3 具体执行
- 确定爬虫工具需要使用的功能,如下图所示:列表和翻页采集保证了数据条数,层级保证了数据内容的全面。
2. 爬取数据:我一共尝试了三次来解决碰到的问题,主要是根据实际情况调整目标设定以及软件操作问题:
问题1:智联招聘每次搜索,结果列表最多只显示90页。也就是说,我希望做的后续分析中,一线城市本身职位需求分布情况(因为实际结果显示不全)以及不同城市的职位数量对比都没有办法做。
问题分析:网站无法满足我的任务目标。可以考虑的路径:
1) 不换内容,更换招聘网站:我对其他招聘网站不熟,找寻时间不可控.
2) 更换项目内容: 按照可以搜集到1W条的网站更换内容,不想本末倒置;
3) 不换网站,调整任务目标:思考是否可以在现有网站条件下达成目标。
解决办法:我选择了调整任务,考虑将原有任务分解,减少每次搜索结果的数量使其控制在5400条之内;然后将分解采集的数据合并起来。
任务分解思路1:将全国改为北上广深杭5大城市分别采集再合并;缺点是一线城市的职位搜索数量必然是超过5400条的,所以每个城市都采集不全。但因为已经周五了,马上要到交作业的时候了,我还是尝试了这种方式,数据内容大于10000条达标了,就是用于分析的意义不大。
任务分解思路2:最后还是不能接受为了完成作业而完成作业,所以重新梳理分析目标:看北京最近一周招聘数据学析相关岗位分布情况。为了能够get全部数据,搜索条件为:北京+最近一周招聘+全职+职位类别。每个职位类别单独出结果最后再合并。
问题2:采集列表数据不全,每一页上显示60条招聘信息,只抓取到了10几条。
原因分析:设定路径时选定的内容位置并不是固定的。这是网站的显示方式设定为“详细”时的情况。
解决办法:没有查到如何应对位置不固定的方法,所以从如何能让信息位置固定,发现将网站显示方式设定为“列表”即可,缺点是在这一层采集到的目标信息变少了,第二层的信息要相应增加。
问题3:要采集的职位类别有10个,需要建立10个规则吗?
解决办法:只需要在测试成功的规则中加入线索就好了,把10个职位类别第1页的网址添加到线索栏即可。(图片是网络示例,不是我项目的)
问题4:分层采集时间很长,而且最后合并的时候发现采集内容不正确,串行了。
原因分析:涉及2方面,一个是在设定规则的时候没有注意确认测试内容是否正确;另一方面,对于采集数据的时间预估不够。
解决办法:
采集内容部分:
1. 设定规则时仔细确认测试内容是否符合预期再保存;
2. 进行抓取时检查,先将部分采集信息导入excel,确认信息符合预期。
采集速度部分:
利用“单搜”+“集搜”同时进行。还是会有点慢,没有发现更好的方法。
问题5:从软件系统导入excel后无法使用vlookup公式。
原因分析:系统导出的数据是设有格式的,不能直接运算。
解决办法:将数据选择性粘贴一下,按text格式。
问题6:将结果导入excel文件,因为抓数软件的免费导数额度是10000条,不能满足需求。
解决办法:直接用excel导入
- 将xlm文件导入excel: https://jingyan.baidu.com/article/7082dc1c49b90fe40a89bd1b.html
3. 整理结果
1) 第1层和第2层数据分别去重,并删除不必要的变量;
2) 将2层数据通过第2层数据所在的网址用vlookup公式合并;
3)数据内容简单处理并保存。
Step4 总结反思
在这个过程中我没有把握好的地方:
- 没有做自己的学习计划。因为课程要求很具体,建议每天学习1小时,每周完成一个小目标。自己觉得目标这么清楚,课程貌似也不难按照它做就好了,结果发现时间不够了,到了周五晚上我的数据还没抓取完成。
- 没有想清楚再行动。在第1次抓取中碰到了很多问题,当时就有种时间紧张的感觉,于是急急忙忙的开始了第2次抓取,结果发现这次是无用功。最终又重新梳理,反复确认后开始了第三次抓取。
- 对抓取数据用时的重视程度不够。我在第1次尝试后就知道第2层数据抓取太慢,但是并没有量化具体时间并找办法,导致在确定最终方案后,发现第2层需要抓取48小时。
下一次自己的改进计划:
- 明确预期学习进度:在周一至周五完成全部内容的学习和操作,周六能直接开始写总结。
- 做自己的学习计划:拿到课程后,全面了解内容,按照每部分预估时长,设定完成时间节点。
- 加快理论学习速度,尽快进入实操阶段,并按照实际使用时间调整制定的计划。
- 遇到问题找到解决方案后,不要立马开始行动,而是全局梳理一遍流程,确认无误后再进行下一步操作。慢即是快。
- 知乎的总结现在Word中完全排版后再导入。
期待我的下一个小目标~~