Excel进行数据分析数据理解数据清洗构建模型
众所周知,excel是一个强大的办公软件。作为一个统计学专业的学生,一提到数据分析,大家所用的都是python、C、R等语言,却忘了很多基本的工作完全可以在excel里面用更简单的操作完成,尤其是那些对编程头痛的小伙伴,这是一种福音,当然这些可能只是数据分析师的初级工作。这篇文章是在听了知乎上猴子的live直播后自己整理的,希望能够进一步巩固自己的操作能力。
数据理解
1、 _试图的详细化 _
拿到一份数据,我们首先要观察行和列,看看都有哪些属性,如果想要全部看到每一列每一行的数据,就全选列表,然后进行 自动换行 操作,就会呈现下面的效果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121100431707.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
2、 _excel中的数据类型 _
在excel中如果字符串格式写出的数字是左对齐的,数值格式写出的数字是右对齐的。如下图所示:
3、 _数据的隐藏 _
如果想要隐藏某一列或者某一行,选中这一行(列),然后隐藏就好了。
如果想要显示全部的被隐藏行(列),全选数据然后在开始的 格式 选项里面选择取消隐藏行(列)
数据清洗
数据清洗的步骤一般有:选择子集、列名重命名、删除重复值、缺失值处理、一致化处理、数据排序、异常值处理。前两个非常简单,删除不要的列和重命名即可,下面只介绍其他的。
1、 _删除重复值 _
比如在 职位ID 这个属性中,有很多重复的职位,我们将它删除掉。选中这一列,在选项卡的 数据 标识下选择 删除重复值 就好了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121101851106.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
2、 _缺失值处理 _
处理缺失值的4种办法,根据情况灵活使用:
- 人工补全
- 删除缺失数据
- 均值代替
- 用统计模型计算
点击每一列,下面会有这一列的计数,告诉你这一列共有多少个值。我们发现:职位ID这一列经过重复值删除后有5032列,而城市只有5030,我们将缺失的位置查找出来。(
条件定位空值 )
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121102732279.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
通过公司简称,我们将地址全部填充为上海。(使用ctrl+enter即可)Ctrl+Enter快捷键,在不连续的单元格中同时输入同一个数据或公式时很好用。
3、 _分列功能 _
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121103005122.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
需要注意的是:分列功能会覆盖掉右列单元格,所以我们记得先要复制这一列到最后一个空白列的地方,再进行分列操作。分割后效果如下:
4、 _函数的使用 _ - AVERAGE(均值函数),这个函数非常熟悉,就不多介绍了,但是这个函数只能针对数值型的数据。
- FIND(查找字符串所在单元格的位置)
FIND(“要查找的字符串”,列位置)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121103440169.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70) - lEFT/RIGHT(字符串所在单元格位置,从左/右截取长度)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121103802108.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70) - MID(字符串所在单元格位置,开始位置,截取长度)
5、 _利用上述函数处理薪资特征 _
我们想找出最高薪水和最低薪水,并且求出均值,该怎么办呢?
最低薪水:从左边开始截取,到k所在位置的前一个结束。很容易。
最高薪水:从中间开始截取,起始的位置是从-
的位置前一个,那么截取长度呢?因为有的是2位数薪水,有的是一位数薪水。所以我们还得借助len这个函数,找到字符串的长度,减去-
所在的位置就是后面字符串的长度,去掉k占掉的1个字符串位置,就是我们要截取的长度。截取长度用图理解一下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121105245855.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
通过输入公式下拉,就可以将所有的行都进行相同的填充,当数据过多的时候,下拉填充耗费时间长,有一个简单的方法可以试试
怎么让EXCEL中单元格自动填充公式?
进行了这样的操作后,我们要检查一下最低薪水和最高薪水中是不是所有的的值都像我们期待的一样填充了。利用筛选功能,筛选出最低薪水和最高薪水一列,发现有#value的值,把他们查找出来,看看是因为什么原因没有填充成功。
最低薪水因为有k用K表示,导致不能识别出来,我们用替换函数把K换成k即可,换完之后检查,通过。
最高薪水因为HR写的时候只写了最低的工资下限:如15k以上。所以针对这些样本,我们让最高工资等于最低工资即可。换完之后筛选检查,通过。
平均薪资:进行如上处理后,我们得到的是字符串类型的数字,不能直接用平均值函数。我们将他们先进行选择性复制(只复制值)到新列,进行 分列
操作,转换成数字型的就可以了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121113126865.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
6、 _数据排序 _
这一功能主要是通过 排序和筛选 功能实现的,比较简单。
7、 _数据透析表看异常值 _
在这一部分我们想要只把数据分析有关的岗位筛选出来,以便于后面的分析工作。看下面的步骤:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121154421732.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
首先通过查找函数找到有这些关键词的岗位,如果没有这些关键词出现,这个函数将会返回一个错误标识,我们通过count函数处理一下:如果没有这些关键词,返回0,如果有这些关键词,则返回出现的次数。(比如数据分析师:数据分析,分析师都出现了,即函数返回2)。最后用IF函数将出现的标记为是,没有出现的标记为否。
进行完这一步之后,通过筛选功能把是的样本找到,然后将这些样本复制到新的excel表中,作为我们清洗数据后的结果。
构建模型
数据透视表
在excel里面进行数据分析,我们不会涉及到很复杂的模型,在这里我们主要是借助数据透视表功能实现,这里的数据是我们进行过数据清洗之后的数据。
问题一:在哪些城市找到数据分析师工作的机会更大。
建立数据透视表,将城市选做行,将工作年限选做列,城市选做值,如下步骤:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121161648333.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
通过对行标签进行计数,我们看到从计数从大到小的城市排列。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012116180725.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121161901605.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
如果想要查看各城市的占比,单击右键,选择 值显示方式 下的 列汇总的百分比 ,会有
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121162400191.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
问题二:数据分析师的平均薪水的描述性统计怎么做?
安装分析工具库加载项,然后在数据下点击数据分析,选择描述性统计。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121162821911.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
结果如下:
问题三:数据分析师的薪水如何?
我们想要知道不同的城市这个岗位的平均工资 。
建立数据透视表,选择城市作为行标签,平均薪水作为值,但是这其实是显示的每个城市的平均工资总和,我们如果想要看到平均的平均,如下操作即可:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121163150850.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
结果如下(排序后):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121163238700.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
我们想要知道不同的工作年限要求对工资的影响
同样的方法,只不过将行标签改为工作年限即可。
结果如下(排序后):
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121163503774.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
结论
通过上面的分析,我们可以得到的以下分析结论有:
1)数据分析这一岗位,有大量的工作机会集中在北上广深以及新一线城市,如果你将来去这些城市找工作,可以提高你成功的条件概率。
2)从待遇上看,数据分析师留在深圳发展是个不错的选择,其次是北京、上海。
3)数据分析是个年轻的职业方向,大量的工作经验需求集中在1-3年。
对于数据分析师来说,5年似乎是个瓶颈期,如果在5年之内没有提升自己的能力,大概以后的竞争压力会比较大。
4)随着经验的提升,数据分析师的薪酬也在不断提高,10年以上工作经验的人,能获得相当丰厚的薪酬。
日期数据处理(数据集已经更换)
1、 _格式统一处理 _
首先进行分列功能,会产生如下结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121164406185.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
可以看到大部分的格式都已经转换成功,还有一小部分没有成功。
点击设置单元格格式,如下操作,就ok了:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121164458562.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
2、 _按月分类 _
想要知道每月用户的增长量
建立数据透视表:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121165603520.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
设置分组:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121165614995.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121165628627.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
3、 _按照每月的最大值建表 _
我们在以上的建立表的过程中默认的是使用的求和,如果想要知道每一个月的最大值呢?在 值字段设置
里设置即可。上面的求每个城市的平均工资的平均也可以用这种方法。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121170145995.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
多表关联查询
一直听说VLOOKUP函数是个强大的函数,这次希望能够系统的学习一下。知乎猴子总结的VLOOKUP函数的参数,我觉得非常有意思。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012117372185.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
敲黑板重点:精确查找和近似查找(模糊查找)的区别
1)精确查找是指从第一行开始往最后一行逐个查找。一找到匹配项就停止查询,所以返回找到的第一个值。
2)当你要近似查找的时候,它就会苦逼地查遍所有的数据,返回的是最后一个匹配到的值
如果是精确查找的话那就将第四个参数设置为0。
1、 _学生信息和三好学生信息查找 _
如果三好学生表中只有名字,我们想要知道他所在的班级。我们通过这个函数来实现。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175057455.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175107666.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012117512452.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175151484.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175201448.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
我们可以发现:对于重名的同学,我们只找出了第一个同学。怎么查找出重复值呢?
首先我们先将学号和姓名拼接在一起组成一个唯一的特征(只代表一个同学)。然后借助这一列来查找(方法同上)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175418684.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190121175427883.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
这里&是表示将两个单元格的内容拼接在一起。
2、 _消费数据分组 _
我们现在有这样一组数据,我们想要通过他们的月消费水平将他们的消费分组(低消费、中消费、高消费)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122204532755.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
- step1:首先设置一些新的列,把分组的依据写出来,如下:
- step2:使用VLOOKUP函数,第一个参数是月消费水平那一组,第二个参数是新建的表区域,第三个参数是第二列(2),第四个参数是1(近似查找),用图表示:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122210423768.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
当把第一个值找出来,往下拉的时候,出现了如下结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122210705694.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
出现这种情况的原因是:当往下拉的时候,引用的单元格会随着实际的单元格而改变,导致后面的值出现错误。所以这里涉及到绝对引用和相对引用的知识。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122210846587.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
绝对引用 :引用的单元格不会随着实际单元格的改变而改变。
比如:我们现在知道每个员工的基本工资,每个人的补贴都是一样的(5000),计算他们的实际工资。如果按照下面的操作:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122211008651.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
会出现问题,因为F2的值是空值,所以第二个人的实际工资会出现错误。我们改成绝对引用:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122211059197.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
相对引用 :函数中的单元格会随着实际单元格的改变而改变。比如每个人的补贴不一样时:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122211318588.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1X3dlbnFpb25n,size_16,color_FFFFFF,t_70)
在excel的快捷键里:
tips :
使用这个VLOOKUP这个函数过程中,如果出现错误标识“#N/A”,一般是3个原因导致:
1)第2个参数:查找范围里第一列的值必须是要查找的值。
比如这个案例里第2个参数选定的的范围里第一列是姓名,是要查找值的列。
2)数据存在空格,此时可以嵌套使用TRIM函数将空格批量删除。
3)数据类型或格式不一致,此时将数据类型或格式转为一致即可。