Python數據科學手冊(第2版) Python Data Science Handbook: Essential Tools for Working with Data, 2/e
[美]傑克·萬托布拉斯(Jake VanderPlas)
- 出版商: 人民郵電
- 出版日期: 2025-02-01
- 定價: $839
- 售價: 8.5 折 $713
- 語言: 簡體中文
- 頁數: 484
- 裝訂: 平裝
- ISBN: 7115662665
- ISBN-13: 9787115662668
-
相關分類:
Data Science
- 此書翻譯自: Python Data Science Handbook: Essential Tools for Working with Data, 2/e (Paperback)
-
相關翻譯:
Python 資料科學學習手冊, 2/e (Python Data Science Handbook: Essential Tools for Working with Data, 2/e) (繁中版)
已絕版
商品描述
本書為數據科學領域經典熱銷書升級版,基於GitHub熱門開源項目,全面涵蓋數據分析與數據科學領域的重要工具。全書共分為五部分,每部分介紹一兩個Python數據科學中的重點工具包。首先從IPython和Jupyter開始,它們提供了數據科學家需要的計算環境;第二部分講解NumPy如何高效地存儲和操作大型數組;第三部分講解pandas如何高效地存儲和操作帶標簽的列式數據;第四部分聚焦Matplotlib,展示其豐富的數據可視化功能;第五部分以scikit-learn為主,這個程序庫為最重要的機器學習算法提供了高效整潔的Python版實現。本書適合有一定Python使用經驗,並想進一步掌握Python數據分析能力的讀者。
作者簡介
Jake VanderPlas 谷歌公司軟件工程師,scikit-learn核心團隊成員,SciPy項目維護者,Matplotlib和Pandas等熱門項目的貢獻者,因其長期致力於創建、開發和維護開源Python工具而在數據科學社區享有盛譽,擁有美國華盛頓大學博士學位,曾任華盛頓大學eScience學院物理科學研究院院長。
目錄大綱
目錄
對本書的贊譽 xv
譯者序 xvii
前言 xix
第 一部分 Jupyter:超越Python
第 1章 IPython和Jupyter入門 3
1.1 啟動IPython shell 3
1.2 啟動Jupyter Notebook 3
1.3 IPython的幫助和文檔 4
1.3.1 用符號 獲取文檔 5
1.3.2 用符號 獲取源代碼 6
1.3.3 用Tab補全的方式探索模塊 6
1.4 IPython shell中的快捷鍵 8
1.4.1 導航快捷鍵 8
1.4.2 文本輸入快捷鍵 9
1.4.3 命令歷史快捷鍵 9
1.4.4 其他快捷鍵 10
第 2章 增強的交互功能 11
2.1 IPython魔法命令 11
2.1.1 執行外部代碼:%run 11
2.1.2 計算代碼運行時間:%timeit 12
2.1.3 魔法函數的幫助: 、%magic和%lsmagic 12
2.2 輸入和輸出歷史 13
2.2.1 IPython的輸入和輸出對象 13
2.2.2 下劃線快捷鍵和以前的輸出 14
2.2.3 禁止輸出 14
2.2.4 相關的魔法命令 15
2.3 IPython和shell命令 15
2.3.1 shell快速入門 15
2.3.2 IPython中的shell命令 16
2.3.3 在shell中傳入或傳出值 16
2.3.4 與shell相關的魔法命令 17
第3章 調試及性能分析 19
3.1 錯誤和調試 19
3.1.1 控制異常:%xmode 19
3.1.2 調試:當閱讀軌跡追溯不足以解決問題時 21
3.2 代碼性能與耗時分析 23
3.2.1 代碼段計時:%timeit和%time 23
3.2.2 對整個腳本進行性能分析:%prun 24
3.2.3 用%lprun進行逐行性能分析 25
3.2.4 用%memit和%mprun進行內存分析 26
3.3 IPython參考資料 27
3.3.1 網絡資源 27
3.3.2 相關圖書 28
第二部分 NumPy入門
第4章 理解Python中的數據類型 31
4.1 Python整型不僅僅是一個整型 32
4.2 Python列表不僅僅是一個列表 33
4.3 Python中的固定類型數組 35
4.4 從Python列表創建數組 35
4.5 從頭創建數組 36
4.6 NumPy標準數據類型 37
第5章 NumPy數組基礎 38
5.1 NumPy數組的屬性 38
5.2 數組索引:獲取單個元素 39
5.3 數組切片:獲取子數組 40
5.3.1 一維子數組 40
5.3.2 多維子數組 41
5.3.3 非副本視圖的子數組 41
5.3.4 創建數組的副本 42
5.4 數組的變形 42
5.5 數組拼接和拆分 43
5.5.1 數組的拼接 43
5.5.2 數組的拆分 44
第6章 NumPy數組的計算:通用函數 46
6.1 緩慢的循環 46
6.2 通用函數介紹 47
6.3 探索NumPy的通用函數 48
6.3.1 數組的運算 48
6.3.2 絕對值 49
6.3.3 三角函數 49
6.3.4 指數和對數 50
6.3.5 專業的通用函數 51
6.4 高級的通用函數特性 51
6.4.1 指定輸出 51
6.4.2 聚合 52
6.4.3 外積 52
6.5 通用函數:更多的信息 53
第7章 聚合:最小值、最大值和其他值 54
7.1 數組值求和 54
7.2 最小值和最大值 55
7.2.1 多維度聚合 55
7.2.2 其他聚合函數 56
7.3 示例:美國總統的平均身高是多少 56
第8章 數組的計算:廣播 59
8.1 廣播的介紹 59
8.2 廣播的規則 61
8.2.1 廣播示例1 61
8.2.2 廣播示例2 62
8.2.3 廣播示例3 62
8.3 廣播的實際應用 63
8.3.1 數組的歸一化 63
8.3.2 畫一個二維函數 64
第9章 比較、掩碼和布爾邏輯 65
9.1 示例:統計下雨天數 65
9.2 將比較運算符看作通用函數 66
9.3 操作布爾數組 67
9.3.1 統計記錄的個數 68
9.3.2 布爾運算符 69
9.4 將布爾數組作為掩碼 70
9.5 使用關鍵字and/or與邏輯操作運算符&/| 70
第 10章 花式索引 73
10.1 探索花式索引 73
10.2 組合索引 74
10.3 示例:選擇隨機點 75
10.4 用花式索引修改值 76
10.5 示例:數據區間劃分 77
第 11章 數組排序 80
11.1 NumPy中的快速排序:np.sort和np.argsort 81
11.2 沿著行或列排序 81
11.3 部分排序:分區 82
11.4 示例:k個最近鄰 82
第 12章 結構化數據:NumPy的結構化數組 86
12.1 生成結構化數組 87
12.2 更高級的復合數據類型 88
12.3 記錄數組:結構化數組的扭轉 89
12.4 關於pandas 89
第三部分 pandas數據處理
第 13章 pandas對象簡介 93
13.1 pandas的Series對象 93
13.1.1 Serise是通用的NumPy數組 94
13.1.2 Series是特殊的字典 95
13.1.3 創建Series對象 95
13.2 pandas的DataFrame對象 96
13.2.1 DataFrame是通用的NumPy數組 96
13.2.2 DataFrame是特殊的字典 97
13.2.3 創建DataFrame對象 97
13.3 pandas的Index對象 99
13.3.1 將Index看作不可變量組 99
13.3.2 將Index看作有序集合 99
第 14章 數據取值與選擇 101
14.1 Series數據選擇方法 101
14.1.1 將Series看作字典 101
14.1.2 將Series看作一維數組 102
14.1.3 索引器:loc和iloc 103
14.2 DataFrame數據選擇方法 104
14.2.1 將DataFrame看作字典 104
14.2.2 將DataFrame看作二維數組 105
14.2.3 其他取值方法 107
第 15章 pandas數值運算方法 108
15.1 通用函數:保留索引 108
15.2 通用函數:索引對齊 109
15.2.1 Series索引對齊 109
15.2.2 DataFrame索引對齊 110
15.3 通用函數:DataFrame與Series的運算 111
第 16章 處理缺失值 113
16.1 處理缺失值的方法選擇 113
16.2 pandas的缺失值 114
16.2.1 None作為哨兵值 114
16.2.2 NaN:數值類型的缺失值 115
16.2.3 pandas中NaN與None的差異 115
16.3 pandas可空類型 116
16.4 處理缺失值 117
16.4.1 發現缺失值 117
16.4.2 剔除缺失值 117
16.4.3 填充缺失值 119
第 17章 分層索引 121
17.1 多級索引Series 121
17.1.1 笨辦法 121
17.1.2 好辦法:pandas多級索引 122
17.1.3 高維數據的多級索引 123
17.2 多級索引的創建方法 124
17.2.1 顯式地創建多級索引 125
17.2.2 多級索引的級別名稱 125
17.2.3 多級列索引 126
17.3 多級索引的取值與切片 127
17.3.1 Series多級索引 127
17.3.2 DataFrame多級索引 128
17.4 多級索引行列轉換 129
17.4.1 有序的索引和無序的索引 129
17.4.2 索引stack與unstack 130
17.4.3 索引的設置與重置 131
第 18章 合並數據集:concat與append操作 132
18.1 知識回顧:NumPy數組的合並 133
18.2 通過pd.concat實現簡單合並 133
18.2.1 索引重復 134
18.2.2 類似join的合並 135
18.2.3 append方法 136
第 19章 合並數據集:合並與連接 137
19.1 關系代數 137
19.2 數據連接的類型 138
19.2.1 一對一連接 138
19.2.2 多對一連接 139
19.2.3 多對多連接 139
19.3 設置數據合並的鍵 140
19.3.1 參數on的用法 140
19.3.2 left_on與right_on參數 140
19.3.3 left_index與right_index參數 141
19.4 設置數據連接的集合操作規則 142
19.5 重復列名:suffixes參數 143
19.6 案例:美國各州的統計數據 144
第 20章 聚合與分組 149
20.1 行星數據 149
20.2 pandas的簡單聚合功能 150
20.3 groupby:分割、應用和組合 152
20.3.1 分割、應用和組合 152
20.3.2 GroupBy對象 153
20.3.3 聚合、過濾、轉換和應用 155
20.3.4 設置分割的鍵 157
第 21章 數據透視表 160
21.1 演示數據透視表 160
21.2 手工製作數據透視表 161
21.3 數據透視表語法 161
21.3.1 多級數據透視表 162
21.3.2 其他數據透視表選項 162
21.4 案例:美國人的生日 163
第 22章 向量化字符串操作 168
22.1 pandas字符串操作簡介 168
22.2 pandas字符串方法列表 169
22.2.1 與Python字符串方法相似的方法 169
22.2.2 使用正則表達式的方法 170
22.2.3 其他字符串方法 171
22.3 案例:食譜數據庫 173
22.3.1 製作簡單的美食推薦系統 174
22.3.2 繼續完善美食推薦系統 175
第 23章 處理時間序列 176
23.1 Python的日期與時間工具 176
23.1.1 Python的原生日期與時間工具:datetime與dateutil 177
23.1.2 時間類型數組:NumPy的datetime64類型 177
23.1.3 pandas的日期與時間工具:理想與現實的最佳解決方案 179
23.2 pandas時間序列:用時間作索引 179
23.3 pandas時間序列數據結構 180
23.4 有規律的時間序列:pd.date_range 181
23.5 時間頻率與偏移量 182
23.6 重採樣、移位和窗口 183
23.6.1 重採樣與頻率轉換 184
23.6.2 時間移位 186
23.6.3 滾動窗口 186
23.7 案例:美國西雅圖自行車統計數據的可視化 188
23.7.1 數據可視化 189
23.7.2 深入挖掘數據 191
第 24章 高性能pandas:eval與query 194
24.1 query與eval的設計動機:復合表達式 194
24.2 用pandas.eval實現高性能運算 195
24.3 用DataFrame.eval實現列間運算 196
24.3.1 用DataFrame.eval新增列 197
24.3.2 DataFrame.eval使用局部變量 198
24.4 DataFrame.query方法 198
24.5 性能決定使用時機 199
24.6 參考資料 199
第四部分 Matplotlib數據可視化
第 25章 Matplotlib常用技巧 203
25.1 導入Matplotlib 203
25.2 設置繪圖樣式 203
25.3 用不用show?如何顯示圖形 203
25.3.1 在腳本中畫圖 204
25.3.2 在IPython shell中畫圖 204
25.3.3 在Jupyter Notebook中畫圖 204
25.3.4 將圖形保存為文件 205
25.3.5 兩種畫圖接口 206
第 26章 簡單線形圖 209
26.1 調整圖形:線條的顏色與風格 212
26.2 調整圖形:坐標軸上下限 214
26.3 設置圖形標簽 216
26.4 Matplotlib陷阱 218
第 27章 簡單散點圖 219
27.1 用plt.plot畫散點圖 219
27.2 用plt.scatter畫散點圖 222
27.3 plot與scatter:效率對比 224
27.4 可視化誤差 224
27.4.1 基本誤差線 225
27.4.2 連續誤差 226
第 28章 密度圖與等高線圖 228
28.1 三維函數的可視化 228
28.2 頻次直方圖、數據區間劃分和分佈密度 232
28.3 二維頻次直方圖與數據區間劃分 234
28.3.1 plt.hist2d:二維頻次直方圖 235
28.3.2 plt.hexbin:六邊形區間劃分 235
28.3.3 核密度估計 236
第 29章 配置圖例 238
29.1 選擇圖例顯示的元素 241
29.2 在圖例中顯示不同尺寸的點 242
29.3 同時顯示多個圖例 243
第30章 配置顏色條 245
30.1 配置顏色條 246
30.1.1 選擇配色方案 247
30.1.2 顏色條刻度的限制與擴展功能的設置 249
30.1.3 離散型顏色條 250
30.2 案例:手寫數字 250
第31章 多子圖 253
31.1 plt.axes:手動創建子圖 253
31.2 plt.subplot:簡單網格子圖 255
31.3 plt.subplots:用一行代碼創建網格 256
31.4 plt.GridSpec:實現更復雜的排列方式 257
第32章 文字與註釋 260
32.1 案例:節假日對美國出生率的影響 260
32.2 坐標變換與文字位置 262
32.3 箭頭與註釋 264
第33章 自定義坐標軸刻度 267
33.1 主要刻度與次要刻度 267
33.2 隱藏刻度與標簽 268
33.3 增減刻度數量 270
33.4 花哨的刻度格式 272
33.5 格式生成器與定位器小結 274
第34章 Matplotlib自定義:配置文件與樣式表 276
34.1 手動配置圖形 276
34.2 修改默認配置:rcParams 278
34.3 樣式表 280
34.3.1 默認風格 280
34.3.2 FiveThirtyEight風格 281
34.3.3 ggplot風格 281
34.3.4 bmh風格 282
34.3.5 黑色背景風格 282
34.3.6 灰度風格 283
34.3.7 Seaborn風格 283
第35章 用Matplotlib畫三維圖 285
35.1 三維數據點與線 286
35.2 三維等高線圖 287
35.3 線框圖和曲面圖 289
35.4 曲面三角剖分 291
35.5 案例:默比烏斯帶 292
第36章 用Seaborn做數據可視化 294
36.1 Seaborn圖形介紹 295
36.1.1 頻次直方圖、KDE和密度圖 295
36.1.2 成對圖 297
36.1.3 分面頻次直方圖 298
36.2 分類圖 299
36.2.1 聯合分佈 300
36.2.2 條形圖 301
36.3 案例:探索馬拉松比賽成績數據 302
36.4 參考資料 309
36.5 其他Python畫圖程序庫 310
第五部分 機器學習
第37章 什麽是機器學習 313
37.1 機器學習的分類 313
37.2 機器學習應用的定性示例 314
37.2.1 分類:預測離散標簽 314
37.2.2 回歸:預測連續標簽 316
37.2.3 聚類:為無標簽數據添加標簽 318
37.2.4 降維:推斷無標簽數據的結構 320
37.3 小結 321
第38章 scikit-learn簡介 322
38.1 scikit-learn的數據表示 322
38.1.1 特徵矩陣 323
38.1.2 目標數組 323
38.2 scikit-learn的估計器API 325
38.2.1 API基礎知識 326
38.2.2 監督學習示例:簡單線性回歸 326
38.2.3 監督學習示例:鳶尾花數據分類 329
38.2.4 無監督學習示例:鳶尾花數據降維 330
38.2.5 無監督學習示例:鳶尾花數據聚類 331
38.3 應用:手寫數字探索 332
38.3.1 加載並可視化手寫數字 332
38.3.2 無監督學習:降維 333
38.3.3 數字分類 334
38.4 小結 337
第39章 超參數與模型驗證 338
39.1 模型驗證 338
39.1.1 錯誤的模型驗證方法 338
39.1.2 正確的模型驗證方法:留出集 339
39.1.3 交叉驗證 339
39.2 選擇最優模型 341
39.2.1 偏差與方差的均衡 342
39.2.2 scikit-learn驗證曲線 343
39.3 學習曲線 347
39.4 驗證實踐:網格搜索 350
39.5 小結 351
第40章 特徵工程 352
40.1 分類特徵 352
40.2 文本特徵 353
40.3 圖像特徵 354
40.4 衍生特徵 355
40.5 缺失值插補 357
40.6 特徵管道 358
第41章 專題:樸素貝葉斯分類 359
41.1 貝葉斯分類 359
41.2 高斯樸素貝葉斯 360
41.3 多項式樸素貝葉斯 362
41.4 樸素貝葉斯的應用場景 365
第42章 專題:線性回歸 367
42.1 簡單線性回歸 367
42.2 基函數回歸 370
42.2.1 多項式基函數 370
42.2.2 高斯基函數 371
42.3 正則化 373
42.3.1 嶺回歸(L2範數正則化) 375
42.3.2 Lasso回歸(L1範數正則化) 376
42.4 案例:預測自行車流量 377
第43章 專題:支持向量機 382
43.1 支持向量機的由來 382
43.2 支持向量機:間隔最大化 384
43.2.1 擬合支持向量機 385
43.2.2 超越線性邊界:核函數SVM模型 387
43.2.3 SVM優化:軟化間隔 390
43.3 案例:人臉識別 391
43.4 小結 395
第44章 專題:決策樹與隨機森林 397
44.1 隨機森林的基礎:決策樹 397
44.1.1 創建一棵決策樹 398
44.1.2 決策樹與過擬合 400
44.2 估計器集成算法:隨機森林 401
44.3 隨機森林回歸 403
44.4 案例:用隨機森林識別手寫數字 404
44.5 小結 407
第45章 專題:主成分分析 408
45.1 PCA簡介 408
45.1.1 用PCA降維 411
45.1.2 用PCA做數據可視化:手寫數字 412
45.1.3 成分的含義 413
45.1.4 選擇成分的數量 414
45.2 用PCA做噪聲過濾 415
45.3 案例:特徵臉 417
45.4 小結 419
第46章 專題:流形學習 420
46.1 流形學習:“HELLO” 420
46.1.1 多維標度法(MDS) 422
46.1.2 將MDS用於流形學習 424
46.2 非線性嵌入:當MDS失敗時 426
46.3 非線性流形:局部線性嵌入 427
46.4 關於流形方法的一些思考 429
46.5 示例:用Isomap處理人臉數據 430
46.6 示例:手寫數字的可視化結構 433
第47章 專題:k-means聚類 437
47.1 k-means簡介 437
47.2 k-means算法:期望最大化 439
47.3 案例 444
47.3.1 案例1:用k-means算法處理手寫數字 444
47.3.2 案例2:將k-means用於色彩壓縮 447
第48章 專題:高斯混合模型 451
48.1 高斯混合模型誕生的原因:k-means算法的缺陷 451
48.2 廣義E-M:高斯混合模型 454
48.3 選擇協方差的類型 458
48.4 將GMM用作密度估計器 458
48.5 示例:用GMM生成新的數據 462
第49章 專題:核密度估計 465
49.1 KDE的由來:直方圖 465
49.2 核密度估計的實際應用 469
49.3 通過交叉驗證選擇帶寬 470
49.4 示例:不是很樸素的貝葉斯 471
49.4.1 解析自定義估計器 472
49.4.2 使用自定義估計器 474
第50章 應用:人臉識別管道 476
50.1 HOG特徵 476
50.2 HOG實戰:一個簡單的人臉識別器 477
50.2.1 獲取一組正訓練樣本 478
50.2.2 獲取一組負訓練樣本 478
50.2.3 組合數據集並提取HOG特徵 479
50.2.4 訓練一個支持向量機 479
50.2.5 在新圖像中尋找人臉 480
50.3 註意事項與改進方案 482
50.4 機器學習參考資料 483
目錄
對本書的贊譽 xv
譯者序 xvii
前言 xix
第 一部分 Jupyter:超越Python
第 1章 IPython和Jupyter入門 3
第 2章 增強的交互功能 11
第3章 調試及性能分析 19
第二部分 NumPy入門
第4章 理解Python中的數據類型 31
第5章 NumPy數組基礎 38
第6章 NumPy數組的計算:通用函數 46
第7章 聚合:最小值、最大值和其他值 54
第8章 數組的計算:廣播 59
第9章 比較、掩碼和布爾邏輯 65
第 10章 花式索引 73
第 11章 數組排序 80
第 12章 結構化數據:NumPy的結構化數組 86
第三部分 pandas數據處理
第 13章 pandas對象簡介 93
第 14章 數據取值與選擇 101
第 15章 pandas數值運算方法 108
第 16章 處理缺失值 113
第 17章 分層索引 121
第 18章 合並數據集:concat與append操作 132
第 19章 合並數據集:合並與連接 137
第 20章 聚合與分組 149
第 21章 數據透視表 160
第 22章 向量化字符串操作 168
第 23章 處理時間序列 176
第 24章 高性能pandas:eval與query 194
第四部分 Matplotlib數據可視化
第 25章 Matplotlib常用技巧 203
第 26章 簡單線形圖 209
第 27章 簡單散點圖 219
第 28章 密度圖與等高線圖 228
第 29章 配置圖例 238
第30章 配置顏色條 245
第31章 多子圖 253
第32章 文字與註釋 260
第33章 自定義坐標軸刻度 267
第34章 Matplotlib自定義:配置文件與樣式表 276
第35章 用Matplotlib畫三維圖 285
第36章 用Seaborn做數據可視化 294
第五部分 機器學習
第37章 什麽是機器學習 313
第38章 scikit-learn簡介 322
第39章 超參數與模型驗證 338
第40章 特徵工程 352
第41章 專題:樸素貝葉斯分類 359
第42章 專題:線性回歸 367
第43章 專題:支持向量機 382
第44章 專題:決策樹與隨機森林 397
第45章 專題:主成分分析 408
第46章 專題:流形學習 420
第47章 專題:k-means聚類 437
第48章 專題:高斯混合模型 451
第49章 專題:核密度估計 465
第50章 應用:人臉識別管道 476