数据清洗是为了解决数据质量问题,“脏数据”一般有以下三种类型:
1、残缺数据
这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。
2、错误数据
这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败,这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
3、重复数据
对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。
数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。
1、Trim
功能:去除单元格两端的空格。
语法:=TRIM(text)
text指要移除空格的文本或者单元格名称
说明:此方法只能删除字符串首尾的空格,而不能删除字符串中间的空格!因为英文单词之间的空格是必须的,Excel不会去除这种空格!
2、Clean
有时文字值包含起始空格、 尾随或多个嵌入的空格字符 (Unicode 字符集值 32 和 160) 或非打印字符 (Unicode 字符集值 0 到 31、 127、 129、 141、 143、 144 和 157)。这些字符进行排序、 筛选或搜索时,有时会导致意外的结果。
功能:删除文本中所有不能打印的字符。
语法:=CLEAN(text)
CLEAN 函数语法具有以下参数:
text,必需。要从中删除非打印字符的任何工作表信息。
3、Concatenate
功能:连接单元格内的内容
语法:= CONCATENATE(text1, [text2], ...)
text1为必需,要联接的第一个项目。项目可以是文本值、数字或单元格引用。
[text2]表示text2为选填的意思,下同。
说明:concatenate能够连接的参数最多只有30个,而&则没有限制。
4、Mid
功能:提取字符串中间的字符串
语法:= MID(text, start_num, num_chars)
text必填。包含要提取字符的文本字符串。
Start_num必填。文本中要提取的第一个字符的位置。文本中第一个字符的 start_num 为 1,以此类推。
Num_chars必填。指定希望 MID 从文本中返回字符的个数。
5、Left
如果继续想从出生年月里提取年份,则需要用到left函数。
功能:提取字符串左边的字符串
语法:= LEFT(text, [num_chars])
Text,必需。 包含要提取的字符的文本字符串。
num_chars,可选。 指定要由 LEFT 提取的字符的数量。
Num_chars 必须大于或等于零。
如果 num_chars 大于文本长度,则 LEFT 返回全部文本。
如果省略 num_chars,则假定其值为 1。
6、right
与left类似,如果想从出生年月里提取月日,则需要用到right函数。
功能:提取字符串右边的字符串
语法:=RIGHT(text,[num_chars])
text 必需。包含要提取字符的文本字符串。
num_chars可选。指定希望RIGHT提取的字符数。
7、repalce
功能:替换字符串中的连续几个字符或者某个字符
语法:= REPLACE(old_text, start_num, num_chars, new_text)
Old_text必填。要替换其部分字符的文本。
Start_num必填。old_text 中要替换为 new_text 的字符位置。
Num_chars必填。old_text 中希望 REPLACE 使用 new_text 来进行替换的字符数。
New_text必填。将替换 old_text 中字符的文本。
8、substitute
也可以利用substitute实现。
功能:替换字符串中的连续几个字符或者某个字符
语法:=SUBSTITUTE(text, old_text, new_text, [instance_num])
text必填。需要替换其中字符的文本,或对含有文本(需要替换其中字符)的单元格的引用。
Old_text必填。需要替换的文本。
New_text必填。用于替换 old_text 的文本。
Instance_num虽然日程表需要数据点之间常量的步骤,预测.指定要用 new_text 替换 old_text 的事件。如果指定了 instance_num,则只有满足要求的 old_text 被替换。否则,文本中出现的所有 old_text 都会更改为 new_text。
匿名回答于2021-09-07 02:20:16
1.缺失数据
导致数据缺失的原因有很多种,例如系统问题、人为问题等。假如出现了数据缺失情况,为了不影响数据分析结果的准确性,在数据分析时就需要进行补值,或者将空值排除在分析范围之外。
排除空值会减少数据分析的样本总量,这个时候可以选择性地纳入一些平均数、比例随机数等。若系统中还留有缺失数据的相关记录,可以通过系统再次引入,若系统中也没有这些数据记录,就只能通过补录或者直接放弃这部分数据来解决。
2.重复数据
相同的数据出现多次的情况相对而言更容易处理,因为只需要去除重复数据即可。但假如数据出现不完全重复的情况,例如某酒店VIP会员数据中,除了住址、姓名不一样,其余的大多数数据都是一样的,这种重复数据的处理就比较麻烦了。假如数据中有时间、日期,仍然可以以此作为判断标准来解决,但假如没有时间、日期这些数据,就只能通过人工筛选来处理。
3.错误数据
错误数据一般是因为数据没有按照规定程序进行记录而出现的。例如异常值,某个产品价格为1到100元,而统计中偏偏出现200这个值;例如格式错误,将文字录成了日期格式;例如数据不统一,关于天津的记录有天津、tianjin。
对于异常值,可以通过限定区间的方法进行排除;对于格式错误,需要通过系统内部逻辑结构进行查找;对于数据不统一,无法从系统方面去解决,因为它并不属于真正的“错误”,系统并不能判断出天津和tianjin属于同一“事物”,因此只能通过人工干预的方法,做出匹配规则,用规则表去关联原始表。例如,一旦出现tianjin这个数据就直接匹配到天津。
4.不可用数据
有些数据虽然正确但却无法使用。例如地址为“上海浦东新区”,想要对“区”级别的数据进行分析时,还需要将“浦东”拆出来。这种情况的解决方案只能用关键词匹配的方法,而且不一定能够得到完美解决。
匿名回答于2021-12-05 21:12:03