目录

1.Data Cleaning Method

2.Null Value & Data Tool

3.ETL Tool Usage

4.NULL在清洗过程的处理


1.Data Cleaning Method

(1)data file general clearning

  • 基本信息:行数、列数 、各列数值类型、sheet页数

  • 异常值:检查各列的值类型及范围,找出异常值,方法:按值排序、按值长度排序

  • 特殊字符:非英语言、单双引号、其他标点符号、表情符号、乱码

  • 处理缺失值:NULL/NAN/None/\N等都转换成空值

  • 重复值:对关键字段/唯一值字段 检查重复值

(2)excel / csv clearning feature

  • 值全是数字且以0开头,该0会被去掉,若有这种情况不要以excel打开且保存文件
  • 值全是数字且过长,会用科学记数法表示,需右键选择 "设置单元格格式" ->"自定义" -> "0"
 

2.Null Value & Data Tool

(1)mysql

  [1]导出
  • workbeach 导入NULL 为 "NULL"
  • select into outfile 导出NULL 为 \N
  [2]导入
  • NULL/NAN/NONE 不论大小写,导入mysql都为字符
  • 空字符导入为空字符;
  • n个单双引号导入仍为n个单双引号;
  • \n导入为空字符;
  • 只有\N导入才为NULL空值
 

(2)pandas

  [1]读取

  • NULL、null 读取为NaN ,Null读取为原字符
  • NaN、nan 读取为NaN,Nan读取为原字符
  • NONE、None、none 读取为原字符
  • ""、空字符 读取为NaN,''两个单引号读取为''
  • \N、\n 读取为原字符
 [2]导入mysql :只有NaN 导入mysql 才为NULL空值 ,其他都保持原字符
 
 

3.ETL Tool Usage

(1)select …into outfile 指定参数

  • fields terminated by ‘,’           指定逗号为字段分隔符

  • optionally enclosed by ‘"’     指定双引号为字段引用符(把字段括起来),指定optionally时只在char、varchar和text等字符型字段上加字段引用符,数值型的不会加字段引用符

  • escaped by  '\\’                     指定反斜杠为转义符 ,mysql默认转义字符为反斜杠,所以不指定escaped by,会采用反斜杠作为转义字符

  • lines terminated by  '\n’        指定\n为每行数据终止符

样例:select * from test.table into outfile '/var/lib/mysql-files/test.csv' fields terminated by ',' optionally enclosed by '\"' escaped by '\\'  lines terminated by '\n';

中文文档:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/select-into.html

 

(2)read_csv 指定参数

  • sep=‘,’                        指定逗号为字段分隔符

  • escapechar=‘\\’          指定反斜杠为转义符

  • quotechar=‘"’              指定双引号为字段引用符

官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html#pandas.read_csv

 

(3)to_csv 指定参数

  • sep=‘,’                        指定逗号为字段分隔符

  • escapechar=‘\\’          指定反斜杠为转义符

  • quotechar=‘"’              指定双引号为字段引用符

  • quoting=0                   指定0(QUOTE_MINIMAL) 表示最小量用双引号括起来,若字段内有逗号会括起来,1(QUOTE_ALL)全部括起来,2(QUOTE_NONNUMERIC)只括非数值字段(若字段dtype为浮点数也会括起来),3(QUOTE_NONE)全部不括

  • doublequote=False      指定为True时,且指定quotechar=‘"’和quoting=0,则如 ab\”cd 导出会变成 ab""cd , 若为False,ab\”cd 导出还是ab\”cd

官方文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html#pandas.DataFrame.to_csv

 

(4)load data指定参数

  • fields terminated by ‘,'          指定逗号为字段分隔符

  • optionally enclosed by ‘“’      指定双引号为字段引用符

  • escaped by  '\\’                    指定反斜杠为转义符

  • lines terminated by  '\n’       指定\n为每行数据终止符

样例:load data local infile '/home/test.csv' into table test.table character set utf8  fields terminated by ',' optionally enclosed by '\"'  escaped by '\\' lines terminated by '\n’ ;

如果需要跳过表头,则在最后加上 ignore 1 lines

中文文档:https://www.docs4dev.com/docs/zh/mysql/5.7/reference/load-data.html#load-data%E8%AF%AD%E6%B3%95

 
 

4.NULL在清洗过程的处理

NULL在整体清洗过程的处理流程图

流程说明:

(1)第1步:用mysql select into outfile命令把数据库数据导出生成file1, 其中数据库的NULL值在file1中变成\N

(2)第2步:用linux清洗脚本把 file1中\N去掉,因file1以逗号为分隔符,如A,\N,B一行数据,去掉\N后则变为 A,,B

(3)第3步:用pandas read_csv读取file1,file1中在第2步去掉了\N的字段,read_csv读取该字段为NaN(缺失值), 在此步对数据进行清洗,如去除\n,\r,\r\n等, 以及对日期时间字段转换为utc格式

(4)第4步:用pandas to_csv把第3步清洗的数据导出生成file2 ,其中NaN(缺失值)导出后在file2变成空字符,因file2以逗号为分隔符,则空字符的位置显示两个逗号(,,)

(5)第5步:用linux脚本把file2中由NaN变成空字符的字段 转换成\N

(6)第6步:用mysql load data命令把file2导入数据库,\N字段会在数据库中显示值为NULL

 
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐