第1章 為什麼需要清洗數據 1
1.1 新視角 1
1.2 數據科學過程 2
1.3 傳達數據清洗工作的內容 3
1.4 數據清洗環境 4
1.5 入門示例 5
1.6 小結 9
第2章 基礎知識——格式、 類型與編碼 11
2.1 文件格式 11
2.1.1 文本文件與二進製文件 11
2.1.2 常見的文本文件格式 14
2.1.3 分隔格式 14
2.2 歸檔與壓縮 20
2.2.1 歸檔文件 20
2.2.2 壓縮文件 21
2.3 數據類型、空值與編碼 24
2.3.1 數據類型 25
2.3.2 數據類型間的相互轉換 29
2.3.3 轉換策略 30
2.3.4 隱藏在數據森林中的空值 37
2.3.5 字符編碼 41
2.4 小結 46
第3章 數據清洗的老黃牛——電子錶格和文本編輯器 47
3.1 電子錶格中的數據清洗 47
3.1.1 Excel的文本分列功能 47
3.1.2 字符串拆分 51
3.1.3 字符串拼接 51
3.2 文本編輯器裏的數據清洗 54
3.2.1 文本調整 55
3.2.2 列選模式 56
3.2.3 加強版的查找與替換功能 56
3.2.4 文本排序與去重處理 58
3.2.5 Process Lines Containing 60
3.3 示例項目 60
3.3.1 第一步:問題陳述 60
3.3.2 第二步:數據收集 60
3.3.3 第三步:數據清洗 61
3.3.4 第四步:數據分析 63
3.4 小結 63
第4章 講通用語言——數據轉換 64
4.1 基於工具的快速轉換 64
4.1.1 從電子錶格到CSV 65
4.1.2 從電子錶格到JSON 65
4.1.3 使用phpMyAdmin從SQL
語句中生成CSV或JSON 67
4.2 使用PHP實現數據轉換 69
4.2.1 使用PHP實現SQL到JSON的數據轉換 69
4.2.2 使用PHP實現SQL到CSV的數據轉換 70
4.2.3 使用PHP實現JSON到CSV的數據轉換 71
4.2.4 使用PHP實現CSV到JSON的數據轉換 71
4.3 使用Python實現數據轉換 72
4.3.1 使用Python實現CSV到JSON的數據轉換 72
4.3.2 使用csvkit實現CSV到JSON的數據轉換 73
4.3.3 使用Python實現JSON到CSV的數據轉換 74
4.4 示例項目 74
4.4.1 第一步:下載GDF格式的Facebook數據 75
4.4.2 第二步:在文本編輯器中查看GDF文件 75
4.4.3 第三步:從GDF格式到JSON格式的轉換 76
4.4.4 第四步:構建D3圖 79
4.4.5 第五步:把數據轉換成Pajek格式 81
4.4.6 第六步:簡單的社交網絡分析 83
4.5 小結 84
第5章 收集並清洗來自網絡的數據 85
5.1 理解HTML頁麵結構 85
5.1.1 行分隔模型 86
5.1.2 樹形結構模型 86
5.2 方法一:Python和正則錶達式 87
5.2.1 第一步:查找並保存實驗用的Web文件 88
5.2.2 第二步:觀察文件內容並判定有價值的數據 88
5.2.3 第三步:編寫Python程序把數據保存到CSV文件中 89
5.2.4 第四步:查看文件並確認清洗結果 89
5.2.5 使用正則錶達式解析HTML的局限性 90
5.3 方法二:Python和BeautifulSoup 90
5.3.1 第一步:找到並保存實驗用的文件 90
5.3.2 第二步:安裝BeautifulSoup 91
5.3.3 第三步:編寫抽取數據用的Python程序 91
5.3.4 第四步:查看文件並確認清洗結果 92
5.4 方法三:Chrome Scraper 92
5.4.1 第一步:安裝Chrome擴展Scraper 92
5.4.2 第二步:從網站上收集數據 92
5.4.3 第三步:清洗數據 94
5.5 示例項目:從電子郵件和論壇中抽取數據 95
5.5.1 項目背景 95
5.5.2 第一部分:清洗來自Google Groups電子郵件的數據 96
5.5.3 第二部分:清洗來自網絡論壇的數據 99
5.6 小結 105
第6章 清洗PDF文件中的數據 106
6.1 為什麼PDF文件很難清洗 106
6.2 簡單方案——復製 107
6.2.1 我們的實驗文件 107
6.2.2 第一步:把我們需要的數據復製齣來 108
6.2.3 第二步:把復製齣來的數據粘貼到文本編輯器中 109
6.2.4 第三步:輕量級文件 110
6.3 第二種技術——pdfMiner 111
6.3.1 第一步:安裝pdfMiner 111
6.3.2 第二步:從PDF文件中提取文本 111
6.4 第三種技術——Tabula 113
6.4.1 第一步:下載Tabula 113
6.4.2 第二步:運行Tabula 113
6.4.3 第三步:用Tabula提取數據 114
6.4.4 第四步:數據復製 114
6.4.5 第五步:進一步清洗 114
6.5 所有嘗試都失敗之後——第四種技術 115
6.6 小結 117
第7章 RDBMS清洗技術 118
7.1 準備 118
7.2 第一步:下載並檢查Sentiment140 119
7.3 第二步:清洗要導入的數據 119
7.4 第三步:把數據導入MySQL 120
7.4.1 發現並清洗異常數據 121
7.4.2 創建自己的數據錶 122
7.5 第四步:清洗&字符 123
7.6 第五步:清洗其他未知字符 124
7.7 第六步:清洗日期 125
7.8 第七步:分離用戶提及、標簽和URL 127
7.8.1 創建一些新的數據錶 128
7.8.2 提取用戶提及 128
7.8.3 提取標簽 130
7.8.4 提取URL 131
7.9 第八步:清洗查詢錶 132
7.10 第九步:記錄操作步驟 134
7.11 小結 135
第8章 數據分享的最佳實踐 136
8.1 準備乾淨的數據包 136
8.2 為數據編寫文檔 139
8.2.1 README文件 139
8.2.2 文件頭 141
8.2.3 數據模型和圖錶 142
8.2.4 維基或CMS 144
8.3 為數據設置使用條款與許可協議 144
8.4 數據發布 146
8.4.1 數據集清單列錶 146
8.4.2 Stack Exchange上的Open Data 147
8.4.3 編程馬拉鬆 147
8.5 小結 148
第9章 Stack Overflow項目 149
9.1 第一步:關於Stack Overflow的問題 149
9.2 第二步:收集並存儲Stack Overflow數據 151
9.2.1 下載Stack Overflow數據 151
9.2.2 文件解壓 152
9.2.3 創建MySQL數據錶並加載數據 152
9.2.4 構建測試錶 154
9.3 第三步:數據清洗 156
9.3.1 創建新的數據錶 157
9.3.2 提取URL並填寫新數據錶 158
9.3.3 提取代碼並填寫新錶 159
9.4 第四步:數據分析 161
9.4.1 哪些代碼分享網站最為流行 161
9.4.2 問題和答案中的代碼分享網站都有哪些 162
9.4.3 提交內容會同時包含代碼分享URL和程序源代碼嗎 165
9.5 第五步:數據可視化 166
9.6 第六步:問題解析 169
9.7 從測試錶轉嚮完整數據錶 169
9.8 小結 170
第10章 Twitter項目 171
10.1 第一步:關於推文歸檔數據的問題 171
10.2 第二步:收集數據 172
10.2.1 下載並提取弗格森事件的
數據文件 173
10.2.2 創建一個測試用的文件 174
10.2.3 處理推文ID 174
10.3 第三步:數據清洗 179
10.3.1 創建數據錶 179
10.3.2 用Python為新錶填充數據 180
10.4 第四步:簡單的數據分析 182
10.5 第五步:數據可視化 183
10.6 第六步:問題解析 186
10.7 把處理過程應用到全數據量(非測試用)數據錶 186
10.8 小結 187
· · · · · · (
收起)