数据清洗

我的已将图书和我的笔记上传至CSDN资源php

地址:https://download.csdn.net/download/qq_37865996/10518179mysql

 

 

干净的数据——数据清洗入门与实践正则表达式

第一章  为何要清洗数据sql

数据科学过程:识别问题->数据收集与存储->数据清洗->数据分析和机器学习->数据展示和可视化实现->问题决议。数据库

 

第二章  基础知识——格式、类型与编码json

1.  文件格式浏览器

(1) 文本文件和二进制文件网络

①  文件的打开和读写机器学习

a)  .xlsx为扩展名的Excel文件,以.docx为扩展名的Word文件、以.pptx为扩展名的Powerpoint文件;编辑器

b)  .png.jpg.gif为扩展名的图形文件;

c)  .mp3.ogg .wmv.mp4为扩展名的音乐和视频文件;

d)  .txt为扩展名的文本文件。

②深刻文件内部

(2) 常见的文本文件格式

目前关注三种:分隔格式(结构化数据)JSON格式(半结构化数据)、HTML格式(非结构化数据)。

分隔格式:

JSON格式:

2.  归档与压缩

(1) 归档

操做语句:tar cvf fileArchive.tar reallyBigFile.csv anotherBigFile.csb

逆操做:tar xvf fileArchive.tar

查阅.tar文件的基本信息:tar -tf fileArchive.tar

(2) 压缩

广泛使用.zip格式文件

3.  数据类型、空值与编码

(1) 数据类型

① 数字类型数据

a.  整数(正数、负数,整数范围?)

b.  小数(小数部分的长度、精度)

c.  数字/非数字(可否参与数学计算)

② 日期和时间

③ 字符串

④ 其余数据类型(如:集合/枚举、布尔、Blob

2)数据类型间的相互转换

数据损耗问题:同种类型间的不一样范围转换;不一样精度间的转换。

3)转换策略

①  基于SQL的操做

例一:调整时间格式 2000-01-21 045100451amFridayJanuary 212000

a.  concat()和日期时间函数结合起来使用

 

b.  使用data_format()函数

 

例二:从字符串类型转换到MySQL的日期类型

使用内置函数str_to_date()

例三:字符串类型的数据转换为小数

使用convert()函数

②  文件级别的类型转换

(1)Excel

a.  Excel中有格式化菜单来进行数据类型转换。选择想要修改的单元格,使用ribbon上的下拉菜单进行操做。

b.  使用Format Cells对话框,可经过格式化菜单打开。

c.  Istext()函数可对单元格中数据是否为文本类型数据进行判断;isnumber()函数会对数据是否为数字给出相似的结果。

(2)  JSON

使用PHP生成JSON文件,调用json_encode()可进行数据类型的调整;

也能够在使用D3时经过JS代码迫使目标数据进行数据类型转换。

4)隐藏在数据森林中的空值

 分清零、空、NULL的含义

①零是可测量、有意义的数字。

②空的含义较多:空白、空值、不可见字符

null:不等同于任何值

中间名的例子可使用“空”而不能使用NULL

零取代空在使用虚拟日期或是日期片断时较有用。

(5) 字符编码

①  MySQL数据中找出多字节字符:经过比较字节长度(length()函数)和 字符长度(char_length()函数)将多字节格式编码的数据寻找出来。

语句:length(Name)!=char_length(Name);

②  找出MySQL中以Latin-1编码存储的Unicode字符以及其等价的UTF-8编码形式

③  处理文件级别的UTF-8编码

问题引入:Python2.7中的open()函数不能处理UTF-8字符。

方法1:过滤UTF-8字符,会形成难以估量的数据损失。

方法2:以UTF-8字符写入文件,f=codeca.open(outfile.txt,a+,utf-8)

第三章  数据清洗的老黄牛——电子表格和文本编辑器

1.  电子表格中的数据清洗

电子表格中,如Excel,导入数据时,是经过寻找逗号或制表符把数据分为不一样的列。可是,有些时候找不到制表符,这时候操做步骤为:

i 选中某列,在数据菜单中开启文本分列向导,第一个步骤中选择固定的宽度,第二个步骤中双击绘制在描述字段上的分割线。

ii 某些列由于长度较为差别大,因此要对这样的列在执行一次文本分列。使用分割字符功能,使用查找和替换将好比空格这样的分隔标志替换 。

iii若是格式出现了问题,就在单元格格式中调整格式。

iv若是某列开端有额外的空格字符,能够在旁边新插入一个列,使用trim()函数。

v使用clean()函数完成文本剪裁。

vi结束剩余操做。

 

字符串拼接

函数concatenate()能够接受多个字符串参数,链接在一块儿。

条件格式化查找异常数据;排序查找异常数据。

电子表格中的数据清洗完毕后,须要进行长期的存储:

i可从电子表格中建立CSV数据,如Neo4jMySQL使用LOAD DATA IN FILE的命令可把数据从分隔文件加载到数据库中。

ii使用电子表格生成SQL:在电子表格用用内部构造INSERT语句,而后在数据库中运行生成的命令。使用concatenate()函数将咱们在电子表格每行多列共同构造的INSERT命令链接起来,就可实如今MySQL中的大量语句运行。

2.  文本编辑器里的数据清洗

改变大小写是数据清洗工做中很常见的任务。诸如此类,咱们须要使用相应的查找与替换功能进行处理。如替换为换行(回车)\r

正则表达式是一种以特殊语言编写的匹配模式,可是用处不大。

文本排序和去重处理。

第四章  讲通用语言——数据转换

1.  基于工具的快速转换

(1)  从电子表格到CSV(注:CSV文件只能描述Excel的一组数据)

(2)  从电子表格到JSON(使用一些在线工具)

(3)  使用phpMyAdminSQL语句中生成CSVJSON

2.  使用PHP实现数据转换

(1)  使用PHP实现SQLJSON的数据转换:使用PHP脚本链接enron数据库,云习性SQL查询语句把查询结果输出为JSON格式文件。

               

(2)  使用PHP实现SQLCSV的数据转换

<?php

//链接数据库,设置查询语句并运行

$dbc=mysqli_connect(localhost,username,password,enron)or die(Error connecting to database!.mysqli_error());

$select_query=SELECT concat(firstName,\\,lastName)as name,email_id FROM employeelist ORDER BY latName;

$select_result =mysqli_query($dbc,$select_query);

If(!$select_result)

 die(SELECT failed![$select_query].mysqli_error());

//--CSV格式数据输出--

//设置文件流

$file=fopen(php://output,w);

If($file &&$select_result)

{

header(Content-Type:text/csv);

header(Content-Disposition:attachment;

Filename=enronEmail.csv”’);

//将每行结果数据都以CSV格式写入文件中

while($row=mysql_fetch_assoc($select_result))

{

fputcsv($file.array_values($row));

}

}

?>

(3)  使用PHP实现从JSONCSV的数据转换,从CSVJSON的数据转换:读取文件,指定输出。

3.  使用Python实现数据转换

(1)  使用Python实现CSVJSON的数据转换

 

(2)  使用csvkit实现CSVJSON的数据转换

csvjson enronEmail.csv > enronEmail.json

  csvcut bigDile.csv -c 1,3 > firstThidCols.csv

(3)  使用Python实现JSONCSV的数据转换

 

 

第五章  收集并清洗来自网络的数据

1.理解HTML页面结构

(1)  行分隔模型:关注HTML标签

(2)  树形结构模型:定义父标签和子标签

2.爬虫操做:Python和正则表达式、BeautifulSoup、基于Chrome浏览器的Scraper工具。

 

第六章  清洗PDF文件中的数据

1.  PDF难以清洗:PDF是二进制格式文件

2.  简单方案——复制

3.  第二种技术——pdfMiner

4.  第三种技术——Tabula

5.  第四种技术——Acrobat

 

第七章  RDBMS清洗技术

下载数据->清洗数据->数据导入MySQL(使用往MySQL中导入电子表格数据)

->发现并清洗异常数据(转义字符、&等其余未知字符)->清洗日期

->分离用户说起、标签和URL->建立一些新的数据表->分别提取

 

第八章  数据分享的最佳实践

1.准备干净的数据包:

压缩的纯文本数据,如CSVJSON

压缩的SQL文件(因版本、配置等不一样须要说明)

在线数据库访问(需提供用户名和密码以追踪用户)

API

使用GitHub发布数据

GitHub是一个基于云的文件仓库,但在存储非代码类型数据时仍是有一些局限性,对文件大小有着严格的限制

2.为数据编写文档

1README文档

2)文件头

3)数据模型和图表

4)维基或CMS

3.为数据设置使用条款与许可协议

4.数据发布

 

第九章第十章 两个项目——

Stack Overflow项目、Twiter项目

 

 

 

 

干净的数据——数据清洗入门与实践

第一章  为何要清洗数据

数据科学过程:识别问题->数据收集与存储->数据清洗->数据分析和机器学习->数据展示和可视化实现->问题决议。

 

第二章  基础知识——格式、类型与编码

1.  文件格式

(1) 文本文件和二进制文件

①  文件的打开和读写

a)  .xlsx为扩展名的Excel文件,以.docx为扩展名的Word文件、以.pptx为扩展名的Powerpoint文件;

b)  .png.jpg.gif为扩展名的图形文件;

c)  .mp3.ogg .wmv.mp4为扩展名的音乐和视频文件;

d)  .txt为扩展名的文本文件。

②深刻文件内部

(2) 常见的文本文件格式

目前关注三种:分隔格式(结构化数据)JSON格式(半结构化数据)、HTML格式(非结构化数据)。

分隔格式:

JSON格式:

2.  归档与压缩

(1) 归档

操做语句:tar cvf fileArchive.tar reallyBigFile.csv anotherBigFile.csb

逆操做:tar xvf fileArchive.tar

查阅.tar文件的基本信息:tar -tf fileArchive.tar

(2) 压缩

广泛使用.zip格式文件

3.  数据类型、空值与编码

(1) 数据类型

① 数字类型数据

a.  整数(正数、负数,整数范围?)

b.  小数(小数部分的长度、精度)

c.  数字/非数字(可否参与数学计算)

② 日期和时间

③ 字符串

④ 其余数据类型(如:集合/枚举、布尔、Blob

2)数据类型间的相互转换

数据损耗问题:同种类型间的不一样范围转换;不一样精度间的转换。

3)转换策略

①  基于SQL的操做

例一:调整时间格式 2000-01-21 045100451amFridayJanuary 212000

a.  concat()和日期时间函数结合起来使用

 

b.  使用data_format()函数

 

例二:从字符串类型转换到MySQL的日期类型

使用内置函数str_to_date()

例三:字符串类型的数据转换为小数

使用convert()函数

②  文件级别的类型转换

(1)Excel

a.  Excel中有格式化菜单来进行数据类型转换。选择想要修改的单元格,使用ribbon上的下拉菜单进行操做。

b.  使用Format Cells对话框,可经过格式化菜单打开。

c.  Istext()函数可对单元格中数据是否为文本类型数据进行判断;isnumber()函数会对数据是否为数字给出相似的结果。

(2)  JSON

使用PHP生成JSON文件,调用json_encode()可进行数据类型的调整;

也能够在使用D3时经过JS代码迫使目标数据进行数据类型转换。

4)隐藏在数据森林中的空值

 分清零、空、NULL的含义

①零是可测量、有意义的数字。

②空的含义较多:空白、空值、不可见字符

null:不等同于任何值

中间名的例子可使用“空”而不能使用NULL

零取代空在使用虚拟日期或是日期片断时较有用。

(5) 字符编码

①  MySQL数据中找出多字节字符:经过比较字节长度(length()函数)和 字符长度(char_length()函数)将多字节格式编码的数据寻找出来。

语句:length(Name)!=char_length(Name);

②  找出MySQL中以Latin-1编码存储的Unicode字符以及其等价的UTF-8编码形式

③  处理文件级别的UTF-8编码

问题引入:Python2.7中的open()函数不能处理UTF-8字符。

方法1:过滤UTF-8字符,会形成难以估量的数据损失。

方法2:以UTF-8字符写入文件,f=codeca.open(outfile.txt,a+,utf-8)

第三章  数据清洗的老黄牛——电子表格和文本编辑器

1.  电子表格中的数据清洗

电子表格中,如Excel,导入数据时,是经过寻找逗号或制表符把数据分为不一样的列。可是,有些时候找不到制表符,这时候操做步骤为:

i 选中某列,在数据菜单中开启文本分列向导,第一个步骤中选择固定的宽度,第二个步骤中双击绘制在描述字段上的分割线。

ii 某些列由于长度较为差别大,因此要对这样的列在执行一次文本分列。使用分割字符功能,使用查找和替换将好比空格这样的分隔标志替换 。

iii若是格式出现了问题,就在单元格格式中调整格式。

iv若是某列开端有额外的空格字符,能够在旁边新插入一个列,使用trim()函数。

v使用clean()函数完成文本剪裁。

vi结束剩余操做。

 

字符串拼接

函数concatenate()能够接受多个字符串参数,链接在一块儿。

条件格式化查找异常数据;排序查找异常数据。

电子表格中的数据清洗完毕后,须要进行长期的存储:

i可从电子表格中建立CSV数据,如Neo4jMySQL使用LOAD DATA IN FILE的命令可把数据从分隔文件加载到数据库中。

ii使用电子表格生成SQL:在电子表格用用内部构造INSERT语句,而后在数据库中运行生成的命令。使用concatenate()函数将咱们在电子表格每行多列共同构造的INSERT命令链接起来,就可实如今MySQL中的大量语句运行。

2.  文本编辑器里的数据清洗

改变大小写是数据清洗工做中很常见的任务。诸如此类,咱们须要使用相应的查找与替换功能进行处理。如替换为换行(回车)\r

正则表达式是一种以特殊语言编写的匹配模式,可是用处不大。

文本排序和去重处理。

第四章  讲通用语言——数据转换

1.  基于工具的快速转换

(1)  从电子表格到CSV(注:CSV文件只能描述Excel的一组数据)

(2)  从电子表格到JSON(使用一些在线工具)

(3)  使用phpMyAdminSQL语句中生成CSVJSON

2.  使用PHP实现数据转换

(1)  使用PHP实现SQLJSON的数据转换:使用PHP脚本链接enron数据库,云习性SQL查询语句把查询结果输出为JSON格式文件。

 

(2)  使用PHP实现SQLCSV的数据转换

<?php

//链接数据库,设置查询语句并运行

$dbc=mysqli_connect(localhost,username,password,enron)or die(Error connecting to database!.mysqli_error());

$select_query=SELECT concat(firstName,\\,lastName)as name,email_id FROM employeelist ORDER BY latName;

$select_result =mysqli_query($dbc,$select_query);

If(!$select_result)

 die(SELECT failed![$select_query].mysqli_error());

//--CSV格式数据输出--

//设置文件流

$file=fopen(php://output,w);

If($file &&$select_result)

{

header(Content-Type:text/csv);

header(Content-Disposition:attachment;

Filename=enronEmail.csv”’);

//将每行结果数据都以CSV格式写入文件中

while($row=mysql_fetch_assoc($select_result))

{

fputcsv($file.array_values($row));

}

}

?>

(3)  使用PHP实现从JSONCSV的数据转换,从CSVJSON的数据转换:读取文件,指定输出。

3.  使用Python实现数据转换

(1)  使用Python实现CSVJSON的数据转换

 

(2)  使用csvkit实现CSVJSON的数据转换

csvjson enronEmail.csv > enronEmail.json

  csvcut bigDile.csv -c 1,3 > firstThidCols.csv

(3)  使用Python实现JSONCSV的数据转换

 

 

第五章  收集并清洗来自网络的数据

1.理解HTML页面结构

(1)  行分隔模型:关注HTML标签

(2)  树形结构模型:定义父标签和子标签

2.爬虫操做:Python和正则表达式、BeautifulSoup、基于Chrome浏览器的Scraper工具。

 

第六章  清洗PDF文件中的数据

1.  PDF难以清洗:PDF是二进制格式文件

2.  简单方案——复制

3.  第二种技术——pdfMiner

4.  第三种技术——Tabula

5.  第四种技术——Acrobat

 

第七章  RDBMS清洗技术

下载数据->清洗数据->数据导入MySQL(使用往MySQL中导入电子表格数据)

->发现并清洗异常数据(转义字符、&等其余未知字符)->清洗日期

->分离用户说起、标签和URL->建立一些新的数据表->分别提取

 

第八章  数据分享的最佳实践

1.准备干净的数据包:

压缩的纯文本数据,如CSVJSON

压缩的SQL文件(因版本、配置等不一样须要说明)

在线数据库访问(需提供用户名和密码以追踪用户)

API

使用GitHub发布数据

GitHub是一个基于云的文件仓库,但在存储非代码类型数据时仍是有一些局限性,对文件大小有着严格的限制

2.为数据编写文档

1README文档

2)文件头

3)数据模型和图表

4)维基或CMS

3.为数据设置使用条款与许可协议

4.数据发布

 

第九章第十章 两个项目——

Stack Overflow项目、Twiter项目

相关文章
相关标签/搜索