《七周成为数据分析师》第三周之Excel文本清洗函数

浏览: 2758

啦啦啦,第二周的笔记以后再补上,现在想先趁热打铁,把第三周Excel的实战笔记写上。

其实之前仔细《从职场新人到数据分析高手——Excel应该这样学》这本书啃了一遍,而且里面的实战项目也一一跟着做了,算是有excel数据分析基础的。

秦璐老师的《七周成为数据分析师》课程简单了讲了一些Excel使用较高频的函数,并系统地分为 文本清洗函数、关联匹配函数、逻辑运算函数、计算统计函数、时间序列函数 来做介绍。所以这里我也简单地记录下我跟着课程做的Excel函数实战。

首先是文本清洗函数,其实课程内容就是秦璐老师发的Excel实战篇文章https://zhuanlan.zhihu.com/p/24084300中讲到的,我跟着自己实践了3遍。

现在贴上实战过程:

Clipboard Image.png

上表是招聘网站上约5000条的数据分析师职位数。

1.拿到数据时先观察数据,字段名称都是英文,看一下columns的含义:城市、公司全名、公司ID……数据基本涵盖了职位分析的所需。

2.首先看一下哪些字段数据可以去除。companyId和positionId是数据的唯一标示,类似该职位的身份证号,这次分析用不到关联vlookup,我们先隐藏。companyFullName和companyShortName则重复了,只需要留一个公司名称,companyFullName依旧隐藏。

注:尽量不删除数据,而是隐藏,保证原始数据的完整。

3.接下来进行数据清洗和转换。

  • 数据有无缺失值

数据的缺失值很大程度上影响分析结果。

如果某一字段缺失数据较多(超过50%),分析过程中要考虑是否删除该字段,因为缺失过多就没有业务意义了。

Excel中可以通过选取该列,在屏幕的右下角查看计数,以此判别有无缺失。

该表共有6877条数据,companyLabelList、businessZones、positionLables都有缺失,但不多。不影响实际分析。

  • 数据是否一致化

一致化指的是数据是否有统一的标准或命名。例如上海市数据分析有限公司和上海数据分析有限公司,差别就在一个市字,主观上肯定会认为是同一家公司,但是对机器和程序依旧会把它们认成两家。会影响计数、数据透视的结果。

  • 数据是否有脏数据

脏数据是分析过程中很讨厌的环节。例如乱码,错位,重复值,未匹配数据,加密数据等。能影响到分析的都算脏数据,没有一致化也可以算。

我们看表格中有没有重复数据。

这里有一个快速窍门,使用Excel的删除重复项功能,快速定位是否有重复数据,还记得positionId么?因为它是唯一标示,如果重复了,就说明有重复的职位数据。看来不删除它是正确的。

下面对positionId列进行重复项删除操作:

Clipboard Image.png

  • 数据标准结构

数据标准结构,就是将特殊结构的数据进行转换和规整。

表格中,companyLableList就是以数组形式保存。这会影响我们的分析。businessZones、positionAdvantage和positionLables也是同样问题,我们后续得将这类格式拆分开来。

Clipboard Image.png

薪水的话用了几K表示,但这是文本,并不能直接用于计算。而且是一个范围,后续得按照最高薪水和最低薪水拆成两列

  • 数据清洗

数据大概了解后,就可以进行数据清洗啦:

数据清洗可以新建Sheet,方便和原始数据区分开来。

先清洗薪水吧。将salary拆成最高薪水和最低薪水,这里我就用2种方法啦。

方法1:直接分列,以"-"为拆分符,得到两列数据,然后利用替换功能删除 k这个字符串。得到结果。

Clipboard Image.png

选中salary列,“数据”-“分列”功能,选择“下一步”,在分隔符号选择“其他”,填入“-”,

Clipboard Image.png

然后继续点击“下一步”,将目标区域选在两列空白列的首行,我选在了“$R$1,$S$1”,点击“完成”,奇迹诞生啦!

Clipboard Image.png

然后如果想去掉"k"的话,就直接替换掉就行啦!

方法2:利用文本查找的思想。先用 =FIND("k",P2,1)。查找第一个k(最低薪酬)出现的位置。

Clipboard Image.png

这里利用find函数得到的就是第一个k出现的位置,那我们要先得到底薪,就要用left函数,刚才我们已经用find函数定位找到“k"所在的位置,这里的left函数中的[num_chars]意思即为要找到几位,则可嵌入我们刚刚写的FIND("k",P2,1)。如果要把"k"去掉,这里的FIND("k",P2,1)可以再减1。

Clipboard Image.png


最高薪水也是同样的思路,但不能使用k,因为第二个薪水位置不固定。需要利用find查找"-"位置,然后截取 从"-" 到最后第二个位置的字符串。

这里我尝试着使用了mid函数,Clipboard Image.png,用了这个,看看结果怎么样:

Clipboard Image.png

结果成功!如果想把top(1)列的"k"去掉,该怎么办呢?Clipboard Image.png用这公式就可以啦。


然后检查一下有没有错误,利用筛选功能快速定位。Clipboard Image.png发现竟然有错误!看下怎么回事:

Clipboard Image.png

发现原来是大写字母“K”,因为find对大小写敏感,此时用search函数,或者将K替换成k都能解决。我就选择简单的替换功能啦。

Clipboard Image.png


接下来分析PositionName,单独针对positionName用数据透视表。统计各名称出现的次数。

Clipboard Image.png

出现次数为3次以下的职位,有约一千,都是各类特别称谓……更改职位名称似乎不现实,那就用关键词查找的思路,找出包含有数据分析、分析师、数据运营等关键词的岗位。利用if函数来判断,这里需要count和find的嵌套,就得到了多条件查找后的结果。Clipboard Image.png

单纯的find 只会查找数据分析这个词,必须嵌套count才会变成真数组。

Clipboard Image.png

1为包含,0不包含。将1过滤出来,这就是需要分析的最终数据。


还有BusinessZone、PositionLabel等标签,这里就不清洗啦,可以直接用分列功能将数组标签排列出来。


分析过程

因为主要数据均是文本格式,所以偏向汇总统计的计算。如果数值型的数据比较多,就会涉及到统计、比例等概念。如果有时间类数据,那么还会有趋势、变化的概念。

整体分析使用数据透视表完成,先利用数据透视表获得汇总型统计

Clipboard Image.png

这里我利用数据透视表的筛选器,将包含有数据分析、分析师、数据运营等关键词的岗位(即判断为1的岗位)筛选出来。

看来北京的数据分析岗位机会远较其他城市多。1-3年和3-5年两个时间段的缺口更大。应届毕业生似乎比1年一下经验的更吃香。

再看一下公司对数据分析师的缺口如何。

Clipboard Image.png

看上去是公司越大,需要的数据分析师越多。

但这样的分析并不准确。因为这只是一个汇总数据,而不是比例数据,我们需要计算的是不同类型企业人均招聘数。

如果北京的互联网公司特别多,那么即使有1000多个岗位发布也不算缺口大,如果南京的互联网公司少,即使只招聘30个,也是充满需求的。

还有一种情况是企业刚好招聘满数据分析师,就不发布岗位了,数据包含的只是正在招聘数据分析师的企业,这些都是限制分析的因素。我们要明确。

(这是秦璐老师的原话,真的觉得,光用工具做好数据分析是不行的,我们还要去观察发现,去总结,去找原因)


看一下各城市招聘Top5公司。还是用数据透视表来筛选,以北京为例:

Clipboard Image.png

筛选出岗位数最多的前5项,再看看其他城市的,最后汇总得到以下结果:

Clipboard Image.png

可以看到北京的美团以78个数据分析职位招聘力压群雄,甚至一定程度上拉高了北京的数据。


下面再来看一下数据分析师的薪水。嘿嘿,这个大家肯定都关注!

Clipboard Image.png

这里的列标签是avg,我采用的是(bottom+top)/2,至于有一些“10k以上"的数据,则是将以上去掉,再平均啦,取个平均值。所以数据并不是很准确,取个大概。

我们看到南京、西安在应届生中数据最高,是因为招聘职位不多,因为单独一两个企业的高薪影响了平均数,其余互联网二线城市同理。当工作年限达到3年以上,北上深杭的数据分析师薪资则明显高于其他城市。

数据会有误差性么?会的,因为存在薪资极值影响。而数据透视表没有中位数选项。我们也可以单独用分位数进行计算,降低误差。

薪资可以用更细的维度计算,比如学历、比如公司行业领域,是否博士生远高于本科生,是否金融业薪资高于O2O。

另外数据分析师的薪资,可能包括奖金、年终奖、季度奖等隐形福利。


分析过程还可以利用其他维度来进行分析,就是用数据透视表进行多维分析啦!例如还可以看一下数据分析的职位标签,看看需求等等,将职位标签和薪水关联,是另外一种分析思路。这里就不续赘啦~\(≧▽≦)/~啦啦啦 还会继续做别的案例的~晚安。

推荐 4
本文由 顾小t 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册