在數據分析方面,Python實際上已經遠遠超越VBA,因為使用Pyhton提供的數據處理函數和模塊就可以實現很多功能,既快速、可靠又簡便。本書結合OpenPyXl、win32com、xlwings和pandas等Python包全面介紹使用Python實現Excel腳本開發(fā)的各種可能性,涉及的內容包括:Python語言基礎、Python文件操作、Excel對象模型、Excel圖形繪制、Excel圖表繪制、字典在Excel中的應用、正則表達式在Excel中的應用、使用Pandas包提高數據處理效率、使用Matplotlib包繪圖、Python與Excel VBA混合編程等。本書適合任何對Excel Python腳本開發(fā)感興趣的朋友閱讀,可以是有編程需求的職場辦公人員、數據分析人員、大學生、科研人員和程序員等。
童大謙具有15年以上VB、VBA、.NET開發(fā)經驗,開發(fā)了多個數學、數據分析與可視化方面的軟件,以及與科研院所合作開發(fā)了若干個軟件系統(tǒng)。對Python、MATLAB、SPSS、R等數據分析軟件非常熟悉,出版多本相關圖書。曾在高校執(zhí)教,CSDN高級講師,全網學員目前近20萬人。
語言基礎篇
第1章 Python語言基礎 2
1.1 Python語言及其編程環(huán)境 2
1.1.1 Python語言及其特點 2
1.1.2 下載和安裝Python 3
1.1.3 Python語言的編程環(huán)境 4
1.2 常量和變量 7
1.2.1 常量 8
1.2.2 變量及其名稱 9
1.2.3 變量的聲明、賦值和刪除 9
1.2.4 深入變量 11
1.2.5 變量的數據類型 12
1.3 數字 12
1.3.1 整型數字 12
1.3.2 浮點型數字 13
1.3.3 復數 13
1.3.4 類型轉換 14
1.3.5 Python的整數緩存機制 15
1.4 字符串 16
1.4.1 創(chuàng)建字符串 16
1.4.2 索引和切片 17
1.4.3 轉義字符 17
1.4.4 字符串的格式化輸出 18
1.4.5 字符串的長度和大小寫 20
1.4.6 字符串的分割、連接和刪除 21
1.4.7 字符串的查找和替換 22
1.4.8 字符串的比較 23
1.4.9 字符串緩存機制 24
1.5 列表 25
1.5.1 創(chuàng)建列表 25
1.5.2 添加列表元素 28
1.5.3 索引和切片 29
1.5.4 刪除列表元素 31
1.5.5 列表的排序 32
1.5.6 操作函數 32
1.5.7 二維列表 33
1.6 元組 34
1.6.1 元組的創(chuàng)建和刪除 34
1.6.2 索引和切片 35
1.6.3 基本運算和操作 36
1.7 字典 37
1.7.1 字典的創(chuàng)建 37
1.7.2 索引 38
1.7.3 字典元素的增刪改 39
1.7.4 字典數據的格式化輸出 40
1.8 集合 41
1.8.1 集合的創(chuàng)建 41
1.8.2 集合元素的添加和刪除 42
1.8.3 集合的運算 42
1.9 處理日期和時間 45
1.9.1 獲取日期和時間 45
1.9.2 格式化日期和時間 46
1.10 表達式 47
1.10.1 算術運算符 47
1.10.2 關系運算符 48
1.10.3 邏輯運算符 49
1.10.4 賦值/成員/身份運算符 50
1.10.5 運算符的優(yōu)先級 50
1.11 流程控制 52
1.11.1 判斷結構 52
1.11.2 循環(huán)結構——for循環(huán) 57
1.11.3 循環(huán)結構——while循環(huán) 61
1.11.4 其他結構 63
1.12 函數 65
1.12.1 內部函數 65
1.12.2 標準模塊函數 67
1.12.3 自定義函數 69
1.12.4 變量的作用范圍 75
1.12.5 匿名函數 77
1.13 模塊 77
1.13.1 內置模塊和第三方模塊 77
1.13.2 自定義模塊 78
1.14 工程 79
1.14.1 導入內置模塊和第三方模塊 79
1.14.2 導入自定義模塊 80
1.15 異常處理 81
1.15.1 常見的異常 81
1.15.2 異常捕獲——單分支的情況 82
1.15.3 異常捕獲——多分支的情況 83
1.15.4 異常捕獲——try…except…else… 84
1.15.5 異常捕獲——try...finally... 84
第2章 Python文件操作 86
2.1 使用Python的open函數操作文件 86
2.1.1 open函數 86
2.1.2 創(chuàng)建文本文件并寫入數據 87
2.1.3 讀取文本文件數據 89
2.1.4 向文本文件中追加數據 90
2.1.5 讀/寫二進制文件數據 91
2.1.6 使用struct模塊讀取二進制文件 92
2.2 使用OS模塊操作文件 93
2.2.1 文件操作 93
2.2.2 目錄操作 95
2.2.3 路徑操作 96
2.2.4 系統(tǒng)操作 97
對象模型篇
第3章 Excel對象模型:
OpenPyXl包 100
3.1 OpenPyXl包概述 100
3.1.1 Excel相關Python包的比較 100
3.1.2 OpenPyXI包及其安裝 101
3.1.3 Excel對象模型 101
3.1.4 使用OpenPyXI包的一般過程 102
3.2 工作簿對象 102
3.2.1 創(chuàng)建、保存和關閉工作簿 102
3.2.2 打開已有的工作簿文件 103
3.3 工作表對象 104
3.3.1 創(chuàng)建和刪除工作表 104
3.3.2 管理工作表 105
3.3.3 引用工作表 106
3.3.4 復制、移動工作表 106
3.3.5 行/列操作 107
3.3.6 工作表對象的其他屬性和方法 113
3.4 單元格對象 114
3.4.1 單元格的引用和賦值 114
3.4.2 引用單元格區(qū)域 115
3.4.3 操作單元格區(qū)域 116
3.4.4 設置單元格樣式 117
3.4.5 插入圖片 128
3.4.6 插入公式 129
3.5 綜合應用 129
3.5.1 批量新建和刪除工作表 129
3.5.2 按列拆分工作表 131
3.5.3 將多個工作表分別保存為工作簿 133
3.5.4 將多個工作表合并為一個工作表 134
第4章 Excel對象模型:win32com和xlwings包 137
4.1 win32com和xlwings包概述 137
4.1.1 win32com包及其安裝 137
4.1.2 xlwings包及其安裝 139
4.2 Excel對象 139
4.2.1 Excel對象及其層次結構 139
4.2.2 使用win32com創(chuàng)建Excel對象 140
4.2.3 使用xlwings創(chuàng)建Excel對象 140
4.2.4 xlwings的兩種編程方式 141
4.3 單元格對象 141
4.3.1 引用單元格 142
4.3.2 引用整行和整列 145
4.3.3 引用區(qū)域 147
4.3.4 引用所有單元格/特殊區(qū)域/區(qū)域的
集合 151
4.3.5 擴展引用當前工作表中的單元格
區(qū)域 154
4.3.6 引用末行或末列 156
4.3.7 引用特殊的單元格 158
4.3.8 獲取區(qū)域的行數、列數、左上角
和右下角單元格的坐標、形狀、
大小 159
4.3.9 插入單元格或區(qū)域 161
4.3.10 選擇和清除單元格 162
4.3.11 復制、粘貼、剪切和刪除單
元格 164
4.3.12 設置單元格的名稱、批注和
字體 168
4.3.13 設置單元格的對齊方式、背景色
和邊框 172
4.4 工作表對象 175
4.4.1 相關對象介紹 175
4.4.2 創(chuàng)建和引用工作表 175
4.4.3 激活、復制、移動和刪除工作表 179
4.4.4 隱藏和顯示工作表 182
4.4.5 選擇行和列 183
4.4.6 復制、剪切行和列 185
4.4.7 插入行和列 187
4.4.8 刪除行和列 189
4.4.9 設置行高和列寬 191
4.5 工作簿對象 193
4.5.1 創(chuàng)建和打開工作簿 193
4.5.2 引用、激活、保存和關閉工作簿 195
4.6 Excel應用對象 197
4.6.1 Application(App)對象和Apps
對象 197
4.6.2 定義位置、大小、標題、可見性
和狀態(tài)屬性 199
4.6.3 定義其他常用屬性 201
4.7 數據讀/寫 202
4.7.1 Excel工作表與Python列表之間
的數據讀/寫 203
4.7.2 Excel工作表與Python字典之間
的數據讀/寫 207
4.7.3 Excel工作表與Python DataFrame
之間的數據讀/寫 208
4.8 綜合應用 208
4.8.1 批量新建和刪除工作表 208
4.8.2 按列拆分工作表 211
4.8.3 將多個工作表分別保存為工作簿 215
4.8.4 將多個工作表合并為一個工作表 217
圖形圖表篇
第5章 使用Python繪制Excel圖形 224
5.1 創(chuàng)建圖形 224
5.1.1 點 224
5.1.2 直線段 226
5.1.3 矩形、圓角矩形、橢圓形和圓形 226
5.1.4 多義線和多邊形 228
5.1.5 曲線 229
5.1.6 標簽 230
5.1.7 文本框 231
5.1.8 標注 231
5.1.9 自選圖形 233
5.1.10 圖表 234
5.1.11 藝術字 235
5.2 圖形屬性設置 237
5.2.1 顏色設置 237
5.2.2 線條屬性:LineFormat對象 239
5.2.3 線條屬性:顏色、線型和線寬 240
5.2.4 線條屬性:箭頭、透明度和圖案
填充 241
5.2.5 線條屬性:多義線、曲線和多邊
形的頂點 243
5.2.6 面的屬性:FillFormat對象、顏色
和透明度 245
5.2.7 面的屬性:單色填充和漸變色
填充 246
5.2.8 面的屬性:圖案填充、圖片填充
和紋理填充 250
5.2.9 文本屬性 253
5.3 圖形變換 254
5.3.1 圖形平移 254
5.3.2 圖形旋轉 255
5.3.3 圖形縮放 255
5.3.4 圖形翻轉 256
5.4 其他圖形操作 257
5.4.1 遍歷工作表中的圖形 257
5.4.2 固定圖形在工作表中的位置 260
5.4.3 動畫 260
5.5 圖片操作 261
5.5.1 創(chuàng)建圖片 261
5.5.2 圖片的幾何變換 262
第6章 使用Python繪制Excel圖表 263
6.1 創(chuàng)建圖表 263
6.1.1 使用xlwings包創(chuàng)建圖表 263
6.1.2 使用API方式創(chuàng)建圖表 265
6.1.3 使用Shapes對象創(chuàng)建圖表 266
6.1.4 綁定數據 269
6.2 圖表及其序列設置 270
6.2.1 設置圖表類型 270
6.2.2 Chart對象的常用屬性和方法 271
6.2.3 設置序列 272
6.2.4 設置序列中單個點的屬性 274
6.3 基本圖形元素的屬性設置 276
6.3.1 設置顏色 276
6.3.2 設置線形圖形元素的屬性 277
6.3.3 設置區(qū)域的透明度和顏色填充 277
6.3.4 設置區(qū)域的圖案/圖片/紋理填充 279
6.4 坐標系設置 280
6.4.1 設置Axes對象和Axis對象 280
6.4.2 設置坐標軸標題 281
6.4.3 設置數值軸取值范圍 282
6.4.4 設置刻度線 283
6.4.5 設置刻度標簽 283
6.4.6 設置網格線 285
6.4.7 設置多軸圖 286
6.4.8 設置對數坐標圖 287
6.4.9 設置其他屬性 288
6.5 圖表元素設置 290
6.5.1 SetElement方法 290
6.5.2 設置圖表區(qū)域/繪圖區(qū) 292
6.5.3 設置圖例 293
6.6 輸出圖表 294
6.6.1 將圖表復制到剪貼板 295
6.6.2 將圖表保存為圖片 296
數據處理篇
第7章 使用Python字典處理Excel
數據 298
7.1 數據提取 298
7.1.1 提取首次數據 298
7.1.2 提取末次數據 300
7.2 數據去重 302
7.2.1 使用列表去重 302
7.2.2 使用集合去重 304
7.2.3 使用字典去重 305
7.2.4 使用字典對象的fromkeys方法
去重 306
7.2.5 多表去重 308
7.2.6 跨表去重 309
7.3 數據查詢 312
7.3.1 個案查詢 312
7.3.2 多條件查詢 313
7.4 數據匯總 314
7.4.1 出現次數匯總 315
7.4.2 數據求和匯總 316
7.4.3 多條件匯總 318
7.5 數據排序 319
第8章 使用Python正則表達式處理
Excel數據 322
8.1 正則表達式概述 322
8.1.1 什么是正則表達式 322
8.1.2 正則表達式示例 323
8.2 在Python中使用正則表達式 325
8.2.1 re模塊 325
8.2.2 Match對象 330
8.2.3 Pattern對象 332
8.3 正則表達式的編寫規(guī)則 334
8.3.1 元字符 334
8.3.2 重復 338
8.3.3 字符類 343
8.3.4 分支條件 344
8.3.5 捕獲分組和非捕獲分組 345
8.3.6 零寬斷言 349
8.3.7 負向零寬斷言 351
8.3.8 貪婪匹配與懶惰匹配 353
第9章 更快、更簡潔:使用pandas包
處理數據 354
9.1 NumPy和pandas包概述 354
9.1.1 NumPy和pandas包簡介 354
9.1.2 NumPy和pandas包的安裝 355
9.2 NumPy和pandas包提供的數據
類型 355
9.2.1 NumPy數組 355
9.2.2 pandas Series 359
9.2.3 pandas DataFrame 363
9.3 數據輸入和輸出 370
9.3.1 Excel數據的讀/寫 370
9.3.2 CSV數據的讀/寫 373
9.3.3 將DataFrame數據保存到新的
工作表中 374
9.3.4 在同一個工作表中讀/寫多個
DataFrame數據 375
9.4 數據整理 377
9.4.1 添加行或列 377
9.4.2 插入行或列 378
9.4.3 更改數據 380
9.4.4 刪除行或列 381
9.4.5 添加前綴或后綴 382
9.4.6 數據去重 383
9.4.7 數據篩選 383
9.4.8 數據轉置 385
9.4.9 合并數據 385
9.4.10 連接數據 393
9.4.11 拼接數據 395
9.4.12 追加數據 397
第10章 擴展Excel的數據可視化功能:Matplotlib包 398
10.1 Matplotlib包概述 398
10.1.1 Matplotlib包簡介 398
10.1.2 安裝Matplotlib包 399
10.2 使用Matplotlib包繪圖 399
10.2.1 點圖 399
10.2.2 線形圖 401
10.2.3 條形圖 404
10.2.4 面積圖 406
10.2.5 餅圖 407
10.3 導出用Matplotlib包繪制的圖形 408
10.3.1 保存用Matplotlib包繪制的
圖形 408
10.3.2 將用Matplotlib包繪制的圖形
添加到Excel工作表中 409
擴展編程篇
第11章 Python與Excel VBA混合
編程 412
11.1 在Python中調用VBA代碼 412
11.1.1 Excel VBA編程環(huán)境 412
11.1.2 編寫Excel VBA程序 414
11.1.3 在Python中調用VBA函數 414
11.2 在 VBA中調用Python代碼 415
11.2.1 xlwings加載項 415
11.2.2 編寫Python文件 417
11.2.3 在VBA中調用Python函數 418
11.2.4 xlwings加載項使用避坑指南 419
11.3 自定義函數(UDF) 420
11.3.1 使用VBA自定義函數 420
11.3.2 在VBA中調用Python自定義
函數的準備工作 421
11.3.3 在VBA中調用Python自定義
函數 421
11.3.4 常見錯誤 422