譯者序 xiii
前言 xv
第1 章 IPython:超越Python 1
1.1 shell還是Notebook 1
1.1.1 啓動IPython shell 2
1.1.2 啓動Jupyter Notebook 2
1.2 IPython的幫助和文檔 3
1.2.1 用符號? 獲取文檔 3
1.2.2 通過符號?? 獲取源代碼 4
1.2.3 用Tab補全的方式探索模塊 5
1.3 IPython shell中的快捷鍵 7
1.3.1 導航快捷鍵 7
1.3.2 文本輸入快捷鍵 7
1.3.3 命令曆史快捷鍵 8
1.3.4 其他快捷鍵 9
1.4 IPython魔法命令 9
1.4.1 粘貼代碼塊:%paste和%cpaste 9
1.4.2 執行外部代碼:%run 10
1.4.3 計算代碼運行時間:%timeit 11
1.4.4 魔法函數的幫助:?、%magic 和%lsmagic 11
1.5 輸入和輸齣曆史 12
1.5.1 IPython的輸入和輸齣對象 12
1.5.2 下劃綫快捷鍵和以前的輸齣 13
1.5.3 禁止輸齣 13
1.5.4 相關的魔法命令 13
1.6 IPython和shell命令 14
1.6.1 shell快速入門 14
1.6.2 IPython中的shell命令 15
1.6.3 在shell中傳入或傳齣值 15
1.7 與shell相關的魔法命令 16
1.8 錯誤和調試 17
1.8.1 控製異常:%xmode 17
1.8.2 調試:當閱讀軌跡追溯不足以解決問題時 19
1.9 代碼的分析和計時 21
1.9.1 代碼段計時:%timeit和%time 22
1.9.2 分析整個腳本:%prun 23
1.9.3 用%lprun進行逐行分析 24
1.9.4 用%memit和%mprun進行內存分析 25
1.10 IPython參考資料 26
1.10.1 網絡資源 26
1.10.2 相關圖書 27
第2 章 NumPy入門 28
2.1 理解Python中的數據類型 29
2.1.1 Python整型不僅僅是一個整型 30
2.1.2 Python列錶不僅僅是一個列錶 31
2.1.3 Python中的固定類型數組 32
2.1.4 從Python列錶創建數組 32
2.1.5 從頭創建數組 33
2.1.6 NumPy標準數據類型 34
2.2 NumPy數組基礎 35
2.2.1 NumPy數組的屬性 36
2.2.2 數組索引:獲取單個元素 37
2.2.3 數組切片:獲取子數組 38
2.2.4 數組的變形 41
2.2.5 數組拼接和分裂 42
2.3 NumPy數組的計算:通用函數 44
2.3.1 緩慢的循環 44
2.3.2 通用函數介紹 45
2.3.3 探索NumPy的通用函數 46
2.3.4 高級的通用函數特性 49
2.3.5 通用函數:更多的信息 51
2.4 聚閤:最小值、最大值和其他值 51
2.4.1 數組值求和 51
2.4.2 最小值和最大值 52
2.4.3 示例:美國總統的身高是多少 54
2.5 數組的計算:廣播 55
2.5.1 廣播的介紹 55
2.5.2 廣播的規則 57
2.5.3 廣播的實際應用 60
2.6 比較、掩碼和布爾邏輯 61
2.6.1 示例:統計下雨天數 61
2.6.2 和通用函數類似的比較操作 62
2.6.3 操作布爾數組 64
2.6.4 將布爾數組作為掩碼 66
2.7 花哨的索引 69
2.7.1 探索花哨的索引 69
2.7.2 組閤索引 70
2.7.3 示例:選擇隨機點 71
2.7.4 用花哨的索引修改值 72
2.7.5 示例:數據區間劃分 73
2.8 數組的排序 75
2.8.1 NumPy中的快速排序:np.sort和np.argsort 76
2.8.2 部分排序:分隔 77
2.8.3 示例:K個最近鄰 78
2.9 結構化數據:NumPy的結構化數組 81
2.9.1 生成結構化數組 83
2.9.2 更高級的復閤類型 84
2.9.3 記錄數組:結構化數組的扭轉 84
2.9.4 關於Pandas 85
第3 章 Pandas數據處理 86
3.1 安裝並使用Pandas 86
3.2 Pandas對象簡介 87
3.2.1 Pandas的Series對象 87
3.2.2 Pandas的DataFrame對象 90
3.2.3 Pandas的Index對象 93
3.3 數據取值與選擇 95
3.3.1 Series數據選擇方法 95
3.3.2 DataFrame數據選擇方法 98
3.4 Pandas數值運算方法 102
3.4.1 通用函數:保留索引 102
3.4.2 通用函數:索引對齊 103
3.4.3 通用函數:DataFrame與Series的運算 105
3.5 處理缺失值 106
3.5.1 選擇處理缺失值的方法 106
3.5.2 Pandas的缺失值 107
3.5.3 處理缺失值 110
3.6 層級索引 113
3.6.1 多級索引Series 113
3.6.2 多級索引的創建方法 116
3.6.3 多級索引的取值與切片 119
3.6.4 多級索引行列轉換 121
3.6.5 多級索引的數據纍計方法 124
3.7 閤並數據集:Concat與Append操作 125
3.7.1 知識迴顧:NumPy數組的閤並 126
3.7.2 通過pd.concat實現簡易閤並 126
3.8 閤並數據集:閤並與連接 129
3.8.1 關係代數 129
3.8.2 數據連接的類型 130
3.8.3 設置數據閤並的鍵 132
3.8.4 設置數據連接的集閤操作規則 134
3.8.5 重復列名:suffixes參數 135
3.8.6 案例:美國各州的統計數據 136
3.9 纍計與分組 140
3.9.1 行星數據 140
3.9.2 Pandas的簡單纍計功能 141
3.9.3 GroupBy:分割、應用和組閤 142
3.10 數據透視錶 150
3.10.1 演示數據透視錶 150
3.10.2 手工製作數據透視錶 151
3.10.3 數據透視錶語法 151
3.10.4 案例:美國人的生日 153
3.11 嚮量化字符串操作 157
3.11.1 Pandas字符串操作簡介 157
3.11.2 Pandas字符串方法列錶 159
3.11.3 案例:食譜數據庫 163
3.12 處理時間序列 166
3.12.1 Python的日期與時間工具 166
3.12.2 Pandas時間序列:用時間作索引 169
3.12.3 Pandas時間序列數據結構 170
3.12.4 時間頻率與偏移量 172
3.12.5 重新取樣、遷移和窗口 173
3.12.6 更多學習資料 178
3.12.7 案例:美國西雅圖自行車統計數據的可視化 179
3.13 高性能Pandas:eval()與query() 184
3.13.1 query()與eval()的設計動機:復閤代數式 184
3.13.2 用pandas.eval()實現高性能運算 185
3.13.3 用DataFrame.eval()實現列間運算 187
3.13.4 DataFrame.query()方法 188
3.13.5 性能決定使用時機 189
3.14 參考資料 189
第4 章 Matplotlib數據可視化 191
4.1 Matplotlib常用技巧 192
4.1.1 導入Matplotlib 192
4.1.2 設置繪圖樣式 192
4.1.3 用不用show()?如何顯示圖形 192
4.1.4 將圖形保存為文件 194
4.2 兩種畫圖接口 195
4.2.1 MATLAB風格接口 195
4.2.2 麵嚮對象接口 196
4.3 簡易綫形圖 197
4.3.1 調整圖形:綫條的顔色與風格 199
4.3.2 調整圖形:坐標軸上下限 200
4.3.3 設置圖形標簽 203
4.4 簡易散點圖 204
4.4.1 用plt.plot畫散點圖 205
4.4.2 用plt.scatter畫散點圖 206
4.4.3 plot與scatter:效率對比 208
4.5 可視化異常處理 208
4.5.1 基本誤差綫 209
4.5.2 連續誤差 210
4.6 密度圖與等高綫圖 211
4.7 頻次直方圖、數據區間劃分和分布密度 215
4.8 配置圖例 219
4.8.1 選擇圖例顯示的元素 221
4.8.2 在圖例中顯示不同尺寸的點 222
4.8.3 同時顯示多個圖例 223
4.9 配置顔色條 224
4.9.1 配置顔色條 224
4.9.2 案例:手寫數字 228
4.10 多子圖 230
4.10.1 plt.axes:手動創建子圖 230
4.10.2 plt.subplot:簡易網格子圖 231
4.10.3 plt.subplots:用一行代碼創建網格 233
4.10.4 plt.GridSpec:實現更復雜的排列方式 234
4.11 文字與注釋 235
4.11.1 案例:節假日對美國齣生率的影響 236
4.11.2 坐標變換與文字位置 237
4.11.3 箭頭與注釋 239
4.12 自定義坐標軸刻度 241
4.12.1 主要刻度與次要刻度 242
4.12.2 隱藏刻度與標簽 243
4.12.3 增減刻度數量 244
4.12.4 花哨的刻度格式 245
4.12.5 格式生成器與定位器小結 247
4.13 Matplotlib自定義:配置文件與樣式錶 248
4.13.1 手動配置圖形 248
4.13.2 修改默認配置:rcParams 249
4.13.3 樣式錶 251
4.14 用Matplotlib畫三維圖 255
4.14.1 三維數據點與綫 256
4.14.2 三維等高綫圖 256
4.14.3 綫框圖和麯麵圖 258
4.14.4 麯麵三角剖分 259
4.15 用Basemap可視化地理數據 261
4.15.1 地圖投影 263
4.15.2 畫一個地圖背景 267
4.15.3 在地圖上畫數據 269
4.15.4 案例:美國加州城市數據 270
4.15.5 案例:地錶溫度數據 271
4.16 用Seaborn做數據可視化 273
4.16.1 Seaborn與Matplotlib 274
4.16.2 Seaborn圖形介紹 275
4.16.3 案例:探索馬拉鬆比賽成績數據 283
4.17 參考資料 290
4.17.1 Matplotlib資源 290
4.17.2 其他Python畫圖程序庫 290
第5 章 機器學習 291
5.1 什麼是機器學習 291
5.1.1 機器學習的分類 292
5.1.2 機器學習應用的定性示例 292
5.1.3 小結 299
5.2 Scikit-Learn簡介 300
5.2.1 Scikit-Learn的數據錶示 300
5.2.2 Scikit-Learn的評估器API 302
5.2.3 應用:手寫數字探索 309
5.2.4 小結 313
5.3 超參數與模型驗證 313
5.3.1 什麼是模型驗證 314
5.3.2 選擇最優模型 317
5.3.3 學習麯綫 322
5.3.4 驗證實踐:網格搜索 326
5.3.5 小結 327
5.4 特徵工程 327
5.4.1 分類特徵 327
5.4.2 文本特徵 329
5.4.3 圖像特徵 330
5.4.4 衍生特徵 330
5.4.5 缺失值填充 332
5.4.6 特徵管道 332
5.5 專題:樸素貝葉斯分類 333
5.5.1 貝葉斯分類 333
5.5.2 高斯樸素貝葉斯 334
5.5.3 多項式樸素貝葉斯 336
5.5.4 樸素貝葉斯的應用場景 339
5.6 專題:綫性迴歸 340
5.6.1 簡單綫性迴歸 340
5.6.2 基函數迴歸 342
5.6.3 正則化 346
5.6.4 案例:預測自行車流量 349
5.7 專題:支持嚮量機 353
5.7.1 支持嚮量機的由來 354
5.7.2 支持嚮量機:邊界最大化 355
5.7.3 案例:人臉識彆 363
5.7.4 支持嚮量機總結 366
5.8 專題:決策樹與隨機森林 367
5.8.1 隨機森林的誘因:決策樹 367
5.8.2 評估器集成算法:隨機森林 371
5.8.3 隨機森林迴歸 373
5.8.4 案例:用隨機森林識彆手寫數字 374
5.8.5 隨機森林總結 376
5.9 專題:主成分分析 376
5.9.1 主成分分析簡介 377
5.9.2 用PCA作噪音過濾 383
5.9.3 案例:特徵臉 385
5.9.4 主成分分析總結 387
5.10 專題:流形學習 388
5.10.1 流形學習:“HELLO” 388
5.10.2 多維標度法(MDS) 389
5.10.3 將MDS用於流形學習 391
5.10.4 非綫性嵌入:當MDS失敗時 393
5.10.5 非綫性流形:局部綫性嵌入 395
5.10.6 關於流形方法的一些思考 396
5.10.7 示例:用Isomap 處理人臉數據 397
5.10.8 示例:手寫數字的可視化結構 400
5.11 專題:k-means聚類 402
5.11.1 k-means簡介 403
5.11.2 k-means算法:期望最大化 404
5.11.3 案例 409
5.12 專題:高斯混閤模型 415
5.12.1 高斯混閤模型(GMM)為什麼會齣現:k-means算法
的缺陷 415
5.12.2 一般化E-M:高斯混閤模型 417
5.12.3 將GMM用作密度估計 421
5.12.4 示例:用GMM生成新的數據 425
5.13 專題:核密度估計 427
5.13.1 KDE的由來:直方圖 428
5.13.2 核密度估計的實際應用 431
5.13.3 示例:球形空間的KDE 433
5.13.4 示例:不是很樸素的貝葉斯 436
5.14 應用:人臉識彆管道 439
5.14.1 HOG特徵 440
5.14.2 HOG實戰:簡單人臉識彆器 441
5.14.3 注意事項與改進方案 445
5.15 機器學習參考資料 446
5.15.1 Python中的機器學習 446
5.15.2 通用機器學習資源 447
關於作者 448
關於封麵 448
· · · · · · (
收起)