本書采用基于項目的方法, 介紹用Python完成數(shù)據(jù)獲取、數(shù)據(jù)清洗、數(shù)據(jù)探索、數(shù)據(jù)呈現(xiàn)、數(shù)據(jù)規(guī);妥詣踊倪^程。主要內(nèi)容包括: Python基礎(chǔ)知識, 如何從CSV、Excel、XML、JSON和PDF文件中提取數(shù)據(jù), 如何獲取與存儲數(shù)據(jù), 各種數(shù)據(jù)清洗與分析技術(shù), 數(shù)據(jù)可視化方法, 如何從網(wǎng)站和API中提取數(shù)據(jù)。
用傳統(tǒng)的電子表格來處理數(shù)據(jù)不僅效率低下,而且無法處理某些格式的數(shù)據(jù),對于混亂或龐大的數(shù)據(jù)集更是束手無策。本書將教你如何利用語法簡單、容易上手的Python輕松處理數(shù)據(jù)。作者通過循序漸進(jìn)的練習(xí),詳細(xì)介紹如何有效地獲取、清洗、分析與呈現(xiàn)數(shù)據(jù),如何將數(shù)據(jù)處理過程自動化,如何安排文件編輯與清洗任務(wù),如何處理更大的數(shù)據(jù)集,以及如何利用獲取的數(shù)據(jù)來創(chuàng)作引人入勝的故事。學(xué)完本書,你的數(shù)據(jù)處理和分析能力將更上一層樓。
* 快速了解Python基本語法、數(shù)據(jù)類型和語言概念
* 概述數(shù)據(jù)的獲取與存儲方式
* 清洗數(shù)據(jù)并格式化,以消除數(shù)據(jù)集中的重復(fù)值與錯誤
* 學(xué)習(xí)何時對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,何時對數(shù)據(jù)清理進(jìn)行測試并將其腳本化
* 使用Scrapy寫網(wǎng)絡(luò)爬蟲
* 利用新的Python庫和技術(shù)對數(shù)據(jù)集進(jìn)行探索與分析
* 使用Python解決方案將整個數(shù)據(jù)處理過程自動化
Jacqueline Kazil,數(shù)據(jù)科學(xué)家,zi深軟件開發(fā)者;钴S于Python軟件基金會、PyLadies等社區(qū)。曾參與美國總統(tǒng)創(chuàng)新伙伴項目,是美國政府技術(shù)組織18F的聯(lián)合創(chuàng)始人。曾擔(dān)任《華盛頓郵報》數(shù)據(jù)記者。
Katharine Jarmul,zi深Python開發(fā)者,PyLadies聯(lián)合創(chuàng)始人。喜歡數(shù)據(jù)分析和獲取、網(wǎng)頁抓取、教人學(xué)習(xí)Python以及Unix,期望通過教育和培訓(xùn)來促進(jìn)Python和其他開源語言的多元化。
前言 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 小結(jié) 13
第2 章 Python 基礎(chǔ) 14
2.1 基本數(shù)據(jù)類型 15
2.1.1 字符串 15
2.1.2 整數(shù)和浮點數(shù) 15
2.2 數(shù)據(jù)容器 18
2.2.1 變量 18
2.2.2 列表 21
2.2.3 字典 22
2.3 各種數(shù)據(jù)類型的用途 23
2.3.1 字符串方法:字符串能做什么 24
2.3.2 數(shù)值方法:數(shù)字能做什么 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 小結(jié) 33
第3 章 供機器讀取的數(shù)據(jù) 34
3.1 CSV 數(shù)據(jù) 35
3.1.1 如何導(dǎo)入CSV 數(shù)據(jù) 36
3.1.2 將代碼保存到文件中并在命令行中運行 39
3.2 JSON 數(shù)據(jù) 41
3.3 XML 數(shù)據(jù) 44
3.4 小結(jié) 56
第4 章 處理Excel 文件 58
4.1 安裝Python 包 58
4.2 解析Excel 文件 59
4.3 開始解析 60
4.4 小結(jié) 71
第5 章 處理PDF 文件,以及用Python 解決問題 73
5.1 盡量不要用PDF 73
5.2 解析PDF 的編程方法 74
5.2.1 利用slate 庫打開并讀取PDF 75
5.2.2 將PDF 轉(zhuǎn)換成文本 77
5.3 利用pdfminer 解析PDF 78
5.4 學(xué)習(xí)解決問題的方法 92
5.4.1 練習(xí):使用表格提取,換用另一個庫 94
5.4.2 練習(xí):手動清洗數(shù)據(jù) 98
5.4.3 練習(xí):試用另一種工具 98
5.5 不常見的文件類型 101
5.6 小結(jié) 101
第6 章 數(shù)據(jù)獲取與存儲 103
6.1 并非所有數(shù)據(jù)生而平等 103
6.2 真實性核查 104
6.3 數(shù)據(jù)可讀性、數(shù)據(jù)清潔度和數(shù)據(jù)壽命 105
6.4 尋找數(shù)據(jù) 105
6.4.1 打電話 105
6.4.2 美國政府?dāng)?shù)據(jù) 106
6.4.3 全球政府和城市開放數(shù)據(jù) 107
6.4.4 組織數(shù)據(jù)和非政府組織數(shù)據(jù) 109
6.4.5 教育數(shù)據(jù)和大學(xué)數(shù)據(jù) 109
6.4.6 醫(yī)學(xué)數(shù)據(jù)和科學(xué)數(shù)據(jù) 109
6.4.7 眾包數(shù)據(jù)和API 110
6.5 案例研究:數(shù)據(jù)調(diào)查實例 111
6.5.1 埃博拉病毒危機 111
6.5.2 列車安全 111
6.5.3 足球運動員的薪水 112
6.5.4 童工 112
6.6 數(shù)據(jù)存儲 113
6.7 數(shù)據(jù)庫簡介 113
6.7.1 關(guān)系型數(shù)據(jù)庫:MySQL 和PostgreSQL 114
6.7.2 非關(guān)系型數(shù)據(jù)庫:NoSQL 116
6.7.3 用Python 創(chuàng)建本地數(shù)據(jù)庫 117
6.8 使用簡單文件 118
6.8.1 云存儲和Python 118
6.8.2 本地存儲和Python 119
6.9 其他數(shù)據(jù)存儲方式 119
6.10 小結(jié) 119
第7 章 數(shù)據(jù)清洗:研究、匹配與格式化 121
7.1 為什么要清洗數(shù)據(jù) 121
7.2 數(shù)據(jù)清洗基礎(chǔ)知識 122
7.2.1 找出需要清洗的數(shù)據(jù) 123
7.2.2 數(shù)據(jù)格式化 131
7.2.3 找出離群值和不良數(shù)據(jù) 135
7.2.4 找出重復(fù)值 140
7.2.5 模糊匹配 143
7.2.6 正則表達(dá)式匹配 146
7.2.7 如何處理重復(fù)記錄 150
7.3 小結(jié) 151
第8 章 數(shù)據(jù)清洗:標(biāo)準(zhǔn)化和腳本化 153
8.1 數(shù)據(jù)歸一化和標(biāo)準(zhǔn)化 153
8.2 數(shù)據(jù)存儲 154
8.3 找到適合項目的數(shù)據(jù)清洗方法 156
8.4 數(shù)據(jù)清洗腳本化 157
8.5 用新數(shù)據(jù)測試 170
8.6 小結(jié) 172
第9 章 數(shù)據(jù)探索和分析 173
9.1 探索數(shù)據(jù) 173
9.1.1 導(dǎo)入數(shù)據(jù) 174
9.1.2 探索表函數(shù) 179
9.1.3 聯(lián)結(jié)多個數(shù)據(jù)集 182
9.1.4 識別相關(guān)性 186
9.1.5 找出離群值 187
9.1.6 創(chuàng)建分組 189
9.1.7 深入探索 192
9.2 分析數(shù)據(jù) 193
9.2.1 分離和聚焦數(shù)據(jù) 194
9.2.2 你的數(shù)據(jù)在講什么 196
9.2.3 描述結(jié)論 196
9.2.4 將結(jié)論寫成文檔 197
9.3 小結(jié) 197
第10 章 展示數(shù)據(jù) 199
10.1 避免講故事陷阱 199
10.1.1 怎樣講故事 200
10.1.2 了解聽眾 200
10.2 可視化數(shù)據(jù) 201
10.2.1 圖表 201
10.2.2 時間相關(guān)數(shù)據(jù) 207
10.2.3 地圖 208
10.2.4 交互式元素 211
10.2.5 文字 212
10.2.6 圖片、視頻和插畫 212
10.3 展示工具 213
10.4 發(fā)布數(shù)據(jù) 213
10.4.1 使用可用站點 213
10.4.2 開源平臺:創(chuàng)建一個新網(wǎng)站 215
10.4.3 Jupyter(曾名IPython notebook) 216
10.5 小結(jié) 219
第11 章 網(wǎng)頁抓。韩@取并存儲網(wǎng)絡(luò)數(shù)據(jù) 221
11.1 抓取什么和如何抓取 221
11.2 分析網(wǎng)頁 223
11.2.1 檢視:標(biāo)記結(jié)構(gòu) 224
11.2.2 網(wǎng)絡(luò)/ 時間線:頁面是如何加載的 230
11.2.3 控制臺:同JavaScript 交互 232
11.2.4 頁面的深入分析 236
11.3 得到頁面:如何通過互聯(lián)網(wǎng)發(fā)出請求 237
11.4 使用Beautiful Soup 讀取網(wǎng)頁 238
11.5 使用lxml 讀取網(wǎng)頁 241
11.6 小結(jié) 249
第12 章 高級網(wǎng)頁抓取:屏幕抓取器與爬蟲 251
12.1 基于瀏覽器的解析 251
12.1.1 使用Selenium 進(jìn)行屏幕讀取 252
12.1.2 使用Ghost.py 進(jìn)行屏幕讀取 260
12.2 爬取網(wǎng)頁 266
12.2.1 使用Scrapy 創(chuàng)建一個爬蟲 266
12.2.2 使用Scrapy 爬取整個網(wǎng)站 273
12.3 網(wǎng)絡(luò):互聯(lián)網(wǎng)的工作原理,以及為什么它會讓腳本崩潰 281
12.4 變化的互聯(lián)網(wǎng)(或腳本為什么崩潰) 283
12.5 幾句忠告 284
12.6 小結(jié) 284
第13 章 應(yīng)用編程接口 286
13.1 API 特性 287
13.1.1 REST API 與流式API 287
13.1.2 頻率限制 287
13.1.3 分級數(shù)據(jù)卷 288
13.1.4 API key 和token 289
13.2 一次簡單的Twitter REST API 數(shù)據(jù)拉取 290
13.3 使用Twitter REST API 進(jìn)行高級數(shù)據(jù)收集 292
13.4 使用Twitter 流式API 進(jìn)行高級數(shù)據(jù)收集 295
13.5 小結(jié) 297
第14 章 自動化和規(guī)模化 298
14.1 為什么要自動化 298
14.2 自動化步驟 299
14.3 什么會出錯 301
14.4 在哪里自動化 302
14.5 自動化的特殊工具 303
14.5.1 使用本地文件、參數(shù)及配置文件 303
14.5.2 在數(shù)據(jù)處理中使用云 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 大規(guī)模自動化 317
14.7.1 Celery:基于隊列的自動化 317
14.7.2 Ansible:操作自動化 318
14.8 監(jiān)控自動化程序 319
14.8.1 Python 日志 320
14.8.2 添加自動化信息 322
14.8.3 上傳和其他報告 326
14.8.4 日志和監(jiān)控服務(wù) 327
14.9 沒有萬無一失的系統(tǒng) 328
14.10 小結(jié) 328
第15 章 結(jié)論 330
15.1 數(shù)據(jù)處理者的職責(zé) 330
15.2 數(shù)據(jù)處理之上 331
15.2.1 成為一名更優(yōu)秀的數(shù)據(jù)分析師 331
15.2.2 成為一名更優(yōu)秀的開發(fā)者 331
15.2.3 成為一名更優(yōu)秀的視覺化講故事者 332
15.2.4 成為一名更優(yōu)秀的系統(tǒng)架構(gòu)師 332
15.3 下一步做什么 332
附錄A 編程語言對比 334
附錄B 初學(xué)者的Python 學(xué)習(xí)資源 336
附錄C 學(xué)習(xí)命令行 338
附錄D 高級Python 設(shè)置 349
附錄E Python 陷阱 361
附錄F IPython 指南 370
附錄G 使用亞馬遜網(wǎng)絡(luò)服務(wù) 374
關(guān)于作者 378
關(guān)于封面 378
收起全部↑