第四章 数据处理
上次我们了解了数据处理第一步数据清洗,这次我们进入数据加工
对于经过数据分析后的数据字段,并不能满足我们的数据分析需求,所以需要对现有的字段抽取,计算或转换形式成为我们分析需要的新字段
1.数据抽取:包括字段分列/字段合并/字段匹配
字段分列:如“姓名”分为“姓和名”
法1):菜单法:[数据]中的[数据工具]中的[分列]选择[分隔符号]中的[下一步]完成
法2):函数法:有时,我们需要提取特定的几个字符,或者其中的第几个字符,这时就要用到left()和right()函数
left(text,[num_chars]):第一个参数表示要抽取的文本,第二个表示需要提取字符串左起多少个字符
right(text,[num_chars]):基本同上,就是从右起多少个字符
字段合并:有时我们需要抽取几个数据列创建成为一个句子,比如要给用户发送信函,这是就有大量用户的信息要输入,我们可以使用字段合并得到文本化的文字利用concatenate()函数
concatenate(text1,text2,...),比如我们表里A2=小王,B2=5次,(迟到5次)我们就可以使用concatenate(A2,“迟到”,B2,“次”),这样就得到“小明迟到5次”的句子
字段匹配:要从其他数据表中获取字段,比如想截取B中的字段“住址”到A中,我们可以使用vlookup()函数
vlookup(lookp_value, table_array, col_index_num, range_lookup)第一个参数表示要在表格或区域的第一列中查找的值,第二个表示查找区域,第三个表示希望返回的值的列号,第四个为布尔类型,为“1”表示近似匹配,为“0”表示精确匹配,一般使用为0
2.数据计算 :简单计算/函数计算
简单计算:有时我们需要的字段不能直接从表中获得,要通过加减乘除计算得到,我想这里大家应该都很清楚
函数计算:平均值/求和/日期的加减法
这里主要说下日期的加减法:哭诉输入当前日期,可以使用today()和now()还可以使用ctrl+;和ctrl+;再按空格接着按ctrl+shift+;这里公式可以插入动态时间,快捷键是静态时间
我们经常会遇到需要日期增减的问题,例如我们希望通过添加两周时间来调整一个项目的计划日期,此时我们只需要用到+,-即可,但有时我们要对一个某年某月某日进行处理,可以用到date()函数 date(year(A2)+5,month(A2)-6,day(A2)+6);还可以使用dateif()计算工龄有时需要了解员工的工龄和某些信息的关系
date(start date,and_data,unit)第一个参数表示起始时间,第二个表示终止时间,unit有6种形式,Y整年,M整月,D整天,YD天数的差,YM月数的差,MD年数的差
3.数据分组
首先准备一个分组表,分组表里应该至少有字段“阙值”,“分组标识”,“备注(分组条件)”
使用vlookup()函数通过对分组表里阙值的查找,返回分组表中的分组标识字段
4.数据转换:数据表的行列转置/多选题几种录入方式之间的转换
1)数据表的行列转置
通过[选择性粘贴]解决转置,还可以选择性粘贴格式,公式,甚至还能选择数值将它们批量成负数或者对要粘贴的数和原数还可以进行加减乘除
选择性粘贴法1)先复制好数据区域,[开始]中的[剪贴板]到[粘贴]中选择[选择性粘贴]
法2)ctrl+alt+v快捷键会弹出,勾选转置
法3)直接复制,然后在粘贴出现的图标种选择转置
2)多选题的录入方式之间的转换
前面说道过对于多选题我们使用“0”和“1”标识是否被选中(二分法),还可以通过对每个选项用数字表示,多重法,但是多重法在Excel里无法分析,所以要将多重转化为二分
法1)使用if(isnumber(hlookup()),1,0),这里的hlookup()函数和vlookup()函数长得很像,其实功能上也很像,vlookup()是按列在指定区域查找,hlookup()函数是按行在指定区域查找
hlookup(lookp_value, table_array, col_index_num, range_lookup)第一个参数表示要在表格或区域的第一行中查找的值,第二个表示查找区域,第三个表示希望返回的值的行号,第四个为布尔类型,为“1”表示近似匹配,为“0”表示精确匹配,一般使用为0,这里注意如果找到会返回你指定的行号,如果没有找到会返回一个非数字
isnumber()函数很明显字面上就是判断是不是数,所以先使用isnumber(hlookup())判断是否返回了数字从而判断这一行里是否有该选项,再利用if()函数,如果是数字,则if()返回一个1,不是则返回一个0,这样就发现选中的选项位置会放上1,未选中的会放上0,那把多重法转化为二分法的目的就这样达到了
法2)使用if(isnumber(search("t",区域)),1,0),这里使用search()直接在区域里查找“1”在吗,在返回1,不在返回0,然后依次查找就能够把多重转为二分
但有时我们输入的多个选项变量会在一个单元格里,如下图,这是我们利用search()函数直接在单元格中查找
search(find_text,within_text,start_num),这里第一个参数表示要查找的字符串,第二个为要在哪个字符串中查,这里填要查的单元格就好,第三个参数指出从单元格中字符串的哪个位置开始找,它会返回要查找的字符串在原始字符串中首次出现的位置,(还是一个数字),也就是说找到就会返回一个数,找不到返回一个非数字
5.数据抽样
分为普查和抽样调查,一般公司都采用抽样,这里使用一个rand()函数,产生随机数函数,来选取随机样本
rand()产生[0,1]之间,rand()*a+b产生[b,a+b]之间的随机数 int(rand()*a+b))这里int()表示取整,例如我们要在5000人里产生1000个随机人做调查,这时使用随机数函数,先给5000人编号,编好号后可以利用rand()在1000个单元格产生1000个[1,5000]的随机数,从而找到要抽样的人