数据分析 - 数据项目 之 项目实践 - 数据清洗与ETL工具使用
目录1.Data Clearning Matter2.Null Value & Data Tool3.ETL Tool orders4.NULL在清洗过程的处理1.Data Clearning Matter(1)data file general clearning基本信息:行数、列数 、各列数值类型、sheet页数异常值:检查各列的值类型及范围,找出异常值,方法:按值排序、按值长度排序特
目录
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
- workbeach 导入NULL 为 "NULL"
- select into outfile 导出NULL 为 \N
- 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 读取为原字符
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
(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

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