zoukankan      html  css  js  c++  java
  • 数据清洗

    个人已将图书和个人笔记上传至CSDN资源

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

     

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

    第一章 为什么要清洗数据

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

     

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

    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. 文本编辑器里的数据清洗

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

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

    文本排序和去重处理。

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

    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. 文本编辑器里的数据清洗

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

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

    文本排序和去重处理。

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

    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项目

     

     

  • 相关阅读:
    cmd 新建安卓工程
    新创建的android工程里面没有activity问题解决
    背景色横向渐变css5
    Serialable与Parcelable
    Observer观察者模式
    Linux基础(1)
    android 出现Make sure the Cursor is initialized correctly before accessing data from it
    android项目中导入actionbarsherlock 需要注意的地方
    android BadgeView的使用(图片上的文字提醒)
    android仿系统Launcher界面,实现分屏,左右滑动效果(ViewSwitcher)
  • 原文地址:https://www.cnblogs.com/WittPeng/p/9261767.html
Copyright © 2011-2022 走看看