我的已將圖書和我的筆記上傳至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 04:51:00爲4:51am,Friday,January 21,2000
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數據,如Neo4j、MySQL使用LOAD DATA IN FILE的命令可把數據從分隔文件加載到數據庫中。
ii使用電子表格生成SQL:在電子表格用用內部構造INSERT語句,而後在數據庫中運行生成的命令。使用concatenate()函數將咱們在電子表格每行多列共同構造的INSERT命令鏈接起來,就可實如今MySQL中的大量語句運行。
2. 文本編輯器裏的數據清洗
改變大小寫是數據清洗工做中很常見的任務。諸如此類,咱們須要使用相應的查找與替換功能進行處理。如替換爲換行(回車)\r
正則表達式是一種以特殊語言編寫的匹配模式,可是用處不大。
文本排序和去重處理。
第四章 講通用語言——數據轉換
1. 基於工具的快速轉換
(1) 從電子表格到CSV(注:CSV文件只能描述Excel的一組數據)
(2) 從電子表格到JSON(使用一些在線工具)
(3) 使用phpMyAdmin從SQL語句中生成CSV或JSON
2. 使用PHP實現數據轉換
(1) 使用PHP實現SQL到JSON的數據轉換:使用PHP腳本鏈接enron數據庫,雲習性SQL查詢語句把查詢結果輸出爲JSON格式文件。
(2) 使用PHP實現SQL到CSV的數據轉換
<?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實現從JSON到CSV的數據轉換,從CSV到JSON的數據轉換:讀取文件,指定輸出。
3. 使用Python實現數據轉換
(1) 使用Python實現CSV到JSON的數據轉換
(2) 使用csvkit實現CSV到JSON的數據轉換
csvjson enronEmail.csv > enronEmail.json
csvcut bigDile.csv -c 1,3 > firstThidCols.csv
(3) 使用Python實現JSON到CSV的數據轉換
第五章 收集並清洗來自網絡的數據
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.準備乾淨的數據包:
壓縮的純文本數據,如CSV、JSON等
壓縮的SQL文件(因版本、配置等不一樣須要說明)
在線數據庫訪問(需提供用戶名和密碼以追蹤用戶)
API
使用GitHub發佈數據
GitHub是一個基於雲的文件倉庫,但在存儲非代碼類型數據時仍是有一些侷限性,對文件大小有着嚴格的限制
2.爲數據編寫文檔
(1)README文檔
(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 04:51:00爲4:51am,Friday,January 21,2000
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數據,如Neo4j、MySQL使用LOAD DATA IN FILE的命令可把數據從分隔文件加載到數據庫中。
ii使用電子表格生成SQL:在電子表格用用內部構造INSERT語句,而後在數據庫中運行生成的命令。使用concatenate()函數將咱們在電子表格每行多列共同構造的INSERT命令鏈接起來,就可實如今MySQL中的大量語句運行。
2. 文本編輯器裏的數據清洗
改變大小寫是數據清洗工做中很常見的任務。諸如此類,咱們須要使用相應的查找與替換功能進行處理。如替換爲換行(回車)\r
正則表達式是一種以特殊語言編寫的匹配模式,可是用處不大。
文本排序和去重處理。
第四章 講通用語言——數據轉換
1. 基於工具的快速轉換
(1) 從電子表格到CSV(注:CSV文件只能描述Excel的一組數據)
(2) 從電子表格到JSON(使用一些在線工具)
(3) 使用phpMyAdmin從SQL語句中生成CSV或JSON
2. 使用PHP實現數據轉換
(1) 使用PHP實現SQL到JSON的數據轉換:使用PHP腳本鏈接enron數據庫,雲習性SQL查詢語句把查詢結果輸出爲JSON格式文件。
(2) 使用PHP實現SQL到CSV的數據轉換
<?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實現從JSON到CSV的數據轉換,從CSV到JSON的數據轉換:讀取文件,指定輸出。
3. 使用Python實現數據轉換
(1) 使用Python實現CSV到JSON的數據轉換
(2) 使用csvkit實現CSV到JSON的數據轉換
csvjson enronEmail.csv > enronEmail.json
csvcut bigDile.csv -c 1,3 > firstThidCols.csv
(3) 使用Python實現JSON到CSV的數據轉換
第五章 收集並清洗來自網絡的數據
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.準備乾淨的數據包:
壓縮的純文本數據,如CSV、JSON等
壓縮的SQL文件(因版本、配置等不一樣須要說明)
在線數據庫訪問(需提供用戶名和密碼以追蹤用戶)
API
使用GitHub發佈數據
GitHub是一個基於雲的文件倉庫,但在存儲非代碼類型數據時仍是有一些侷限性,對文件大小有着嚴格的限制
2.爲數據編寫文檔
(1)README文檔
(2)文件頭
(3)數據模型和圖表
(4)維基或CMS
3.爲數據設置使用條款與許可協議
4.數據發佈
第九章第十章 兩個項目——
Stack Overflow項目、Twiter項目