作者簡介:
Jacqueline Kazil
數據科學傢,資深軟件開發者。活躍於Python軟件基金會、PyLadies等社區。曾參與美國總統創新夥伴項目,是美國政府技術組織18F的聯閤創始人。曾擔任《華盛頓郵報》數據記者。
Katharine Jarmul
資深Python開發者,PyLadies聯閤創始人。喜歡數據分析和獲取、網頁抓取、教人學習Python以及Unix,期望通過教育和培訓來促進Python和其他開源語言的多元化。
譯者簡介:
張亮(hysic)
畢業於北京大學物理學院,愛好機器學習和數據分析的核安全工程師。
呂傢明
2016年畢業於哈爾濱工業大學,現就職於騰訊,從事搜索、Query分析等相關工作,熟悉大規模數據下的數據挖掘和機器學習實踐。
前言 xiii
第1章 Python 簡介 1
1.1 為什麼選擇Python 4
1.2 開始使用Python 4
1.2.1 Python 版本選擇 5
1.2.2 安裝Python 6
1.2.3 測試Python 9
1.2.4 安裝pip 11
1.2.5 安裝代碼編輯器 12
1.2.6 安裝IPython(可選) 13
1.3 小結 13
第2章 Python 基礎 14
2.1 基本數據類型 15
2.1.1 字符串 15
2.1.2 整數和浮點數 15
2.2 數據容器 18
2.2.1 變量 18
2.2.2 列錶 21
2.2.3 字典 22
2.3 各種數據類型的用途 23
2.3.1 字符串方法:字符串能做什麼 24
2.3.2 數值方法:數字能做什麼 25
2.3.3 列錶方法:列錶能做什麼 26
2.3.4 字典方法:字典能做什麼 27
2.4 有用的工具:type、dir 和help 28
2.4.1 type 28
2.4.2 dir 28
2.4.3 help 30
2.5 綜閤運用 31
2.6 代碼的含義 32
2.7 小結 33
第3章 供機器讀取的數據 34
3.1 CSV 數據 35
3.1.1 如何導入CSV 數據 36
3.1.2 將代碼保存到文件中並在命令行中運行 39
3.2 JSON 數據 41
3.3 XML 數據 44
3.4 小結 56
第4章 處理Excel 文件 58
4.1 安裝Python 包 58
4.2 解析Excel 文件 59
4.3 開始解析 60
4.4 小結 71
第5章 處理PDF 文件,以及用Python 解決問題 73
5.1 盡量不要用PDF 73
5.2 解析PDF 的編程方法 74
5.2.1 利用slate 庫打開並讀取PDF 75
5.2.2 將PDF 轉換成文本 77
5.3 利用pdfminer 解析PDF 78
5.4 學習解決問題的方法 92
5.4.1 練習:使用錶格提取,換用另一個庫 94
5.4.2 練習:手動清洗數據 98
5.4.3 練習:試用另一種工具 98
5.5 不常見的文件類型 101
5.6 小結 101
第6章 數據獲取與存儲 103
6.1 並非所有數據生而平等 103
6.2 真實性核查 104
6.3 數據可讀性、數據清潔度和數據壽命 105
6.4 尋找數據 105
6.4.1 打電話 105
6.4.2 美國政府數據 106
6.4.3 全球政府和城市開放數據 107
6.4.4 組織數據和非政府組織數據 109
6.4.5 教育數據和大學數據 109
6.4.6 醫學數據和科學數據 109
6.4.7 眾包數據和API 110
6.5 案例研究:數據調查實例 111
6.5.1 埃博拉病毒危機 111
6.5.2 列車安全 111
6.5.3 足球運動員的薪水 112
6.5.4 童工 112
6.6 數據存儲 113
6.7 數據庫簡介 113
6.7.1 關係型數據庫:MySQL 和PostgreSQL 114
6.7.2 非關係型數據庫:NoSQL 116
6.7.3 用Python 創建本地數據庫 117
6.8 使用簡單文件 118
6.8.1 雲存儲和Python 118
6.8.2 本地存儲和Python 119
6.9 其他數據存儲方式 119
6.10 小結 119
第7章 數據清洗:研究、匹配與格式化 121
7.1 為什麼要清洗數據 121
7.2 數據清洗基礎知識 122
7.2.1 找齣需要清洗的數據 123
7.2.2 數據格式化 131
7.2.3 找齣離群值和不良數據 135
7.2.4 找齣重復值 140
7.2.5 模糊匹配 143
7.2.6 正則錶達式匹配 146
7.2.7 如何處理重復記錄 150
7.3 小結 151
第8章 數據清洗:標準化和腳本化 153
8.1 數據歸一化和標準化 153
8.2 數據存儲 154
8.3 找到適閤項目的數據清洗方法 156
8.4 數據清洗腳本化 157
8.5 用新數據測試 170
8.6 小結 172
第9章 數據探索和分析 173
9.1 探索數據 173
9.1.1 導入數據 174
9.1.2 探索錶函數 179
9.1.3 聯結多個數據集 182
9.1.4 識彆相關性 186
9.1.5 找齣離群值 187
9.1.6 創建分組 189
9.1.7 深入探索 192
9.2 分析數據 193
9.2.1 分離和聚焦數據 194
9.2.2 你的數據在講什麼 196
9.2.3 描述結論 196
9.2.4 將結論寫成文檔 197
9.3 小結 197
第10章 展示數據 199
10.1 避免講故事陷阱 199
10.1.1 怎樣講故事 200
10.1.2 瞭解聽眾 200
10.2 可視化數據 201
10.2.1 圖錶 201
10.2.2 時間相關數據 207
10.2.3 地圖 208
10.2.4 交互式元素 211
10.2.5 文字 212
10.2.6 圖片、視頻和插畫 212
10.3 展示工具 213
10.4 發布數據 213
10.4.1 使用可用站點 213
10.4.2 開源平颱:創建一個新網站 215
10.4.3 Jupyter(曾名IPython notebook) 216
10.5 小結 219
第11章 網頁抓取:獲取並存儲網絡數據 221
11.1 抓取什麼和如何抓取 221
11.2 分析網頁 223
11.2.1 檢視:標記結構 224
11.2.2 網絡/ 時間綫:頁麵是如何加載的 230
11.2.3 控製颱:同JavaScript 交互 232
11.2.4 頁麵的深入分析 236
11.3 得到頁麵:如何通過互聯網發齣請求 237
11.4 使用Beautiful Soup 讀取網頁 238
11.5 使用lxml 讀取網頁 241
11.6 小結 249
第12章 高級網頁抓取:屏幕抓取器與爬蟲 251
12.1 基於瀏覽器的解析 251
12.1.1 使用Selenium 進行屏幕讀取 252
12.1.2 使用Ghost.py 進行屏幕讀取 260
12.2 爬取網頁 266
12.2.1 使用Scrapy 創建一個爬蟲 266
12.2.2 使用Scrapy 爬取整個網站 273
12.3 網絡:互聯網的工作原理,以及為什麼它會讓腳本崩潰 281
12.4 變化的互聯網(或腳本為什麼崩潰) 283
12.5 幾句忠告 284
12.6 小結 284
第13章 應用編程接口 286
13.1 API 特性 287
13.1.1 REST API 與流式API 287
13.1.2 頻率限製 287
13.1.3 分級數據捲 288
13.1.4 API key 和token 289
13.2 一次簡單的Twitter REST API 數據拉取 290
13.3 使用Twitter REST API 進行高級數據收集 292
13.4 使用Twitter 流式API 進行高級數據收集 295
13.5 小結 297
第14章 自動化和規模化 298
14.1 為什麼要自動化 298
14.2 自動化步驟 299
14.3 什麼會齣錯 301
14.4 在哪裏自動化 302
14.5 自動化的特殊工具 303
14.5.1 使用本地文件、參數及配置文件 303
14.5.2 在數據處理中使用雲 308
14.5.3 使用並行處理 310
14.5.4 使用分布式處理 312
14.6 簡單的自動化 313
14.6.1 CronJobs 314
14.6.2 Web 接口 316
14.6.3 Jupyter notebook 316
14.7 大規模自動化 317
14.7.1 Celery:基於隊列的自動化 317
14.7.2 Ansible:操作自動化 318
14.8 監控自動化程序 319
14.8.1 Python 日誌 320
14.8.2 添加自動化信息 322
14.8.3 上傳和其他報告 326
14.8.4 日誌和監控服務 327
14.9 沒有萬無一失的係統 328
14.10 小結 328
第15章 結論 330
15.1 數據處理者的職責 330
15.2 數據處理之上 331
15.2.1 成為一名更優秀的數據分析師 331
15.2.2 成為一名更優秀的開發者 331
15.2.3 成為一名更優秀的視覺化講故事者 332
15.2.4 成為一名更優秀的係統架構師 332
15.3 下一步做什麼 332
附錄A 編程語言對比 334
附錄B 初學者的Python 學習資源 336
附錄C 學習命令行 338
附錄D 高級Python 設置 349
附錄E Python 陷阱 361
附錄F IPython 指南 370
附錄G 使用亞馬遜網絡服務 374
關於作者 378
關於封麵 378
· · · · · · (
收起)