數據清洗

我的已將圖書和我的筆記上傳至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項目

相關文章
相關標籤/搜索