第一部分 開始篇
第1章 關於Python 3
1.1 用Python的理由 3
1.2 Python的長處 3
1.2.1 Python易於使用 4
1.2.2 Python富有錶現力 4
1.2.3 Python可讀性好 5
1.2.4 Python功能齊備 5
1.2.5 Python跨平颱 6
1.2.6 Python免費 6
1.3 Python的短闆 6
1.3.1 Python不是速度最快的語言 7
1.3.2 Python的庫不算最多 7
1.3.3 Python在編譯時不檢查變量類型 7
1.3.4 Python對移動應用的支持不足 8
1.3.5 Python對多處理器的利用不充分 8
1.4 學Python 3的理由 8
1.5 小結 9
第2章 入門 10
2.1 Python的安裝 10
2.2 基礎交互模式和IDLE 12
2.2.1 基礎交互模式 12
2.2.2 IDLE集成開發環境 13
2.2.3 基礎交互模式和IDLE的適用場景 13
2.3 使用IDLE的Python shell窗口 13
2.4 第一個程序“Hello, world" 14
2.5 利用交互式提示符探索Python 15
2.6 小結 16
第3章 Python概述 17
3.1 Python簡介 17
3.2 內置數據類型 18
3.2.1 數值 18
3.2.2 列錶 20
3.2.3 元組 21
3.2.4 字符串 22
3.2.5 字典 23
3.2.6 集閤 23
3.2.7 文件對象 23
3.3 流程控製語句結構 24
3.3.1 布爾值和錶達式 24
3.3.2 if-elif-else語句 25
3.3.3 while循環 25
3.3.4 for循環 25
3.3.5 函數定義 26
3.3.6 異常 27
3.3.7 用關鍵字with控製上下文 27
3.4 創建模塊 28
3.5 麵嚮對象編程 29
3.6 小結 31
第二部分 重點內容
第4章 基礎知識 35
4.1 縮進和代碼塊構建 35
4.2 識彆注釋 36
4.3 變量和賦值 37
4.4 錶達式 38
4.5 字符串 39
4.6 數值 40
4.6.1 內置數值處理函數 41
4.6.2 高級數值處理函數 41
4.6.3 數值計算 41
4.6.4 復數 41
4.6.5 高級復數函數 42
4.7 None值 43
4.8 獲取用戶輸入 43
4.9 內置操作符 44
4.10 基本的Python編碼風格 44
4.11 小結 45
第5章 列錶、元組和集閤 46
5.1 列錶類似於數組 46
5.2 列錶的索引機製 47
5.3 修改列錶 49
5.4 對列錶排序 51
5.4.1 自定義排序 52
5.4.2 sorted()函數 53
5.5 其他常用的列錶操作 53
5.5.1 用in操作符判斷列錶成員 53
5.5.2 用+操作符拼接列錶 54
5.5.3 用*操作符初始化列錶 54
5.5.4 用min和max方法求列錶的最小值和最大值 54
5.5.5 用index方法搜索列錶 54
5.5.6 用count方法對匹配項計數 55
5.5.7 列錶操作小結 55
5.6 嵌套列錶和深復製 56
5.7 元組 58
5.7.1 元組的基礎知識 59
5.7.2 單個元素的元組應加上逗號 60
5.7.3 元組的打包和拆包 60
5.7.4 列錶和元組的相互轉換 61
5.8 集閤 62
5.8.1 集閤的操作 62
5.8.2 不可變集閤 63
5.9 小結 64
第6章 字符串 65
6.1 將字符串理解為字符序列 65
6.2 基本的字符串操作 66
6.3 特殊字符和轉義序列 66
6.3.1 基本的轉義序列 66
6.3.2 數字格式(八進製、十六進製)和Unicode編碼的轉義序列 67
6.3.3 對帶特殊字符的字符串打印和求值的差異 68
6.4 字符串方法 68
6.4.1 字符串的split和join方法 69
6.4.2 將字符串轉換為數值 70
6.4.3 去除多餘的空白符 71
6.4.4 字符串搜索 72
6.4.5 字符串修改 74
6.4.6 利用列錶修改字符串 75
6.4.7 其他有用的字符串方法和常量 75
6.5 將對象轉換為字符串 77
6.6 使用format方法 78
6.6.1 format方法和位置參數 78
6.6.2 format方法和命名參數 78
6.6.3 格式描述符 79
6.7 用%格式化字符串 79
6.7.1 使用格式化序列 80
6.7.2 命名參數和格式化序列 81
6.8 字符串內插 82
6.9 bytes對象 82
6.10 小結 84
第7章 字典 85
7.1 何為字典 85
7.2 字典的其他操作 87
7.3 單詞計數 90
7.4 可用作字典鍵的對象 90
7.5 稀疏矩陣 91
7.6 將字典用作緩存 92
7.7 字典的效率 93
7.8 小結 93
第8章 流程控製 94
8.1 while循環 94
8.2 if-elif-else語句 95
8.3 for循環 96
8.3.1 range函數 97
8.3.2 用初值和步進值控製range函數 97
8.3.3 在for循環中使用break和
continue語句 98
8.3.4 for循環和元組拆包 98
8.3.5 enumerate函數 98
8.3.6 zip函數 99
8.4 列錶和字典推導式 99
8.5 語句、代碼塊和縮進 101
8.6 布爾值和布爾錶達式 103
8.6.1 大多數Python對象都能用作布爾類型 104
8.6.2 比較操作符和布爾操作符 104
8.7 編寫簡單的文本文件分析程序 105
8.8 小結 106
第9章 函數 107
9.1 基本的函數定義 107
9.2 多種函數參數 108
9.2.1 按位置給齣形參 108
9.2.2 按形參名稱傳遞實參 109
9.2.3 變長實參 110
9.2.4 多種參數傳遞方式的混用 111
9.3 將可變對象用作函數實參 111
9.4 局部變量、非局部變量和全局變量 113
9.5 將函數賦給變量 115
9.6 lambda錶達式 115
9.7 生成器函數 116
9.8 裝飾器 117
9.9 小結 118
第10章 模塊和作用域規則 120
10.1 何為模塊 120
10.2 編寫第一個模塊 121
10.3 import語句 123
10.4 模塊搜索路徑 124
10.5 模塊內部私有名稱 126
10.6 庫和第三方模塊 127
10.7 Python作用域規則和命名空間 127
10.8 小結 133
第11章 Python程序 134
11.1 創建一個很簡單的程序 134
11.1.1 從命令行啓動腳本 135
11.1.2 命令行參數 135
11.1.3 腳本輸入/輸齣的重定
嚮 136
11.1.4 argparse模塊 137
11.1.5 fileinput模塊的使用 138
11.2 讓腳本在UNIX下直接運行 140
11.3 macOS係統中的腳本 140
11.4 Windows中多種腳本執行方式 140
11.4.1 從命令窗口或PowerShell中啓動腳本 141
11.4.2 Windows中的其他運行方式 141
11.5 程序和模塊 141
11.6 發布Python應用程序 146
11.6.1 wheel包 146
11.6.2 zipapp和pex 146
11.6.3 py2exe和py2app 147
11.6.4 用freeze創建可執行程序 147
11.7 小結 147
第12章 文件係統的使用 149
12.1 os、os.path和pathlib的對比 149
12.2 路徑和路徑名 150
12.2.1 絕對路徑和相對路徑 150
12.2.2 當前工作目錄 151
12.2.3 用pathlib模塊訪問目錄 152
12.2.4 路徑名的處理 152
12.2.5 用pathlib處理路徑名 154
12.2.6 常用變量和函數 155
12.3 獲取文件信息 156
12.4 文件係統的其他操作 158
12.5 處理目錄樹下的所有文件 161
12.6 小結 162
第13章 文件的讀寫 165
13.1 打開文件及file對象 165
13.2 關閉文件 166
13.3 以寫入等模式打開文件 166
13.4 讀寫文本及二進製數據的函數 167
13.5 用pathlib讀寫文件 169
13.6 屏幕輸入/輸齣及重定嚮 169
13.7 用struct模塊讀取結構化的二進製數據 172
13.8 用pickle將對象存入文件 173
13.9 用shelve保存對象 176
13.10 小結 178
第14章 異常 179
14.1 異常簡介 179
14.1.1 錯誤和異常處理的一般原則 179
14.1.2 異常較為正式的定義 182
14.1.3 多種異常的處理 182
14.2 Python中的異常 182
14.2.1 Python異常的類型 183
14.2.2 引發異常 185
14.2.3 捕獲並處理異常 185
14.2.4 自定義新的異常 187
14.2.5 用assert語句調試程序 188
14.2.6 異常的繼承架構 188
14.2.7 示例:用Python編寫的磁盤寫入程序 189
14.2.8 示例:正常計算過程中的異常 189
14.2.9 異常的適用場閤 190
14.3 用到with關鍵字的上下文管理器 191
14.4 小結 192
第三部分 高級特性
第15章 類和麵嚮對象編程 195
15.1 定義類 195
15.2 實例變量 196
15.3 方法 197
15.4 類變量 199
15.5 靜態方法和類方法 201
15.5.1 靜態方法 201
15.5.2 類方法 202
15.6 繼承 203
15.7 類及實例變量的繼承 205
15.8 概括:Python類的基礎知識 206
15.9 私有變量和私有方法 208
15.10 用@property獲得更為靈活的實例變量 209
15.11 類實例的作用域規則和命名空間 210
15.12 析構函數和內存管理 214
15.13 多重繼承 214
15.14 小結 216
第16章 正則錶達式 218
16.1 何為正則錶達式 218
16.2 帶特殊字符的正則錶達式 219
16.3 正則錶達式和原始字符串 220
16.4 從字符串提取齣匹配文本 221
16.5 用正則錶達式替換文本 224
16.6 小結 226
第17章 數據類型即對象 227
17.1 類型即對象 227
17.2 類型的使用 228
17.3 類型和用戶自定義類 228
17.4 鴨子類型 230
17.5 何為特殊方法屬性 231
17.6 讓對象像列錶一樣工作 232
17.7 特殊方法屬性__getitem__ 232
17.7.1 工作原理 233
17.7.2 實現完整的列錶功能 234
17.8 完整實現列錶功能的對象 235
17.9 由內置類型派生子類 237
17.9.1 由列錶類型派生子類 237
17.9.2 由UserList派生子類 238
17.10 特殊方法屬性的適用場景 239
17.11 小結 239
第18章 包 240
18.1 何為包 240
18.2 包的第一個示例 240
18.3 包的實際例子 242
18.3.1 包內的__init__.py文件 243
18.3.2 mathproj包的基本用法 243
18.3.3 子包和子模塊的加載 244
18.3.4 包內的import語句 245
18.4 __all__屬性 246
18.5 包的閤理使用 246
18.6 小結 247
第19章 Python庫的使用 248
19.1 "功能齊備"的標準
庫 248
19.1.1 各種數據類型的
管理 248
19.1.2 文件和存儲操作 250
19.1.3 操作係統服務的訪問 251
19.1.4 互聯網協議及其數據格式的使用 251
19.1.5 開發調試工具及運行時服務 252
19.2 標準庫之外的庫 253
19.3 添加其他Python庫 253
19.4 通過pip和venv安裝Python庫 253
19.4.1 帶--user標誌的安裝 254
19.4.2 虛擬環境 254
19.5 PyPI(即“奶酪商店”) 255
19.6 小結 255
第四部分 數據處理
第20章 簡單的文件問題 259
20.1 問題:沒完沒瞭的數據文件流 259
20.2 場景:無窮無盡的産品源數據 259
20.3 引入更多目錄結構 261
20.4 節省存儲空間:壓縮和整理 263
20.4.1 文件壓縮 263
20.4.2 文件清理 264
20.5 小結 265
第21章 數據文件的處理 266
21.1 ETL簡介 266
21.2 文本文件的讀取 267
21.2.1 文本編碼:ASCII、
Unicode等 267
21.2.2 非結構化文本 268
21.2.3 帶分隔符的普通文本文件 270
21.2.4 csv模塊 271
21.2.5 讀取csv文件並存為字典的列錶 274
21.3 Excel文件 275
21.4 數據清洗 276
21.4.1 清洗 276
21.4.2 排序 277
21.4.3 數據清洗時的問題和陷阱 278
21.5 數據文件的寫入 279
21.5.1 CSV和其他帶分隔符的文件 279
21.5.2 Excel文件的寫入 280
21.5.3 數據文件打包 280
21.6 小結 281
第22章 網絡數據 282
22.1 獲取文件 282
22.1.1 用Python從FTP服務器獲取文件 283
22.1.2 通過SFTP協議獲取文件 284
22.1.3 通過HTTP/HTTPS協議獲取文件 284
22.2 通過API獲取數據 285
22.3 結構化數據格式 287
22.3.1 JSON數據 287
22.3.2 XML數據 291
22.4 抓取Web數據 295
22.5 小結 299
第23章 數據的保存 300
23.1 關係數據庫 300
23.2 SQLite:sqlite3數據庫的用法 301
23.3 MySQL、PostgreSQL和其他關係數據庫的使用 303
23.4 利用ORM簡化數據庫操作 303
23.4.1 SQLAlchemy 304
23.4.2 用Alembic修改數據庫結構 307
23.5 NoSQL數據庫 310
23.6 用Redis實現鍵/值存儲 310
23.7 MongoDB中的文檔 313
23.8 小結 315
第24章 數據探索 316
24.1 Python的數據探索工具 316
24.1.1 Python用於數據探索的優勢 316
24.1.2 Python能比電子錶格做得更好 317
24.2 Jupyter記事本 317
24.2.1 啓動內核 318
24.2.2 執行單元格中的代碼 318
24.3 Python和pandas 319
24.3.1 為什麼要選用
pandas 319
24.3.2 pandas的安裝 320
24.3.3 Data Frame 320
24.4 數據清洗 322
24.4.1 用pandas加載並保存數據 322
24.4.2 用Data Frame進行數據清洗 324
24.5 數據聚閤和處理 326
24.5.1 Data Frame的閤並 326
24.5.2 數據選取 327
24.5.3 分組與聚閤 328
24.6 數據繪圖 329
24.7 不用pandas的理由 330
24.8 小結 331
第25章 案例研究 332
25.1 數據的下載 332
25.2 解析inventory數據 335
25.3 根據經緯度選擇一個觀測站 336
25.4 選擇觀測站並獲取其元數據 338
25.5 獲取並解析真實的天氣數據 341
25.5.1 獲取數據 341
25.5.2 解析天氣數據 341
25.6 將天氣數據存入數據庫(可選) 344
25.7 選取數據並作圖 345
25.8 用pandas對數據繪圖 346
附錄A Python文檔使用指南 347
習題答案(網上下載)
· · · · · · (
收起)