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