本書以Python中的pandas庫為主線,介紹各類數(shù)據(jù)處理與分析方法。
本書共包含13章,第一部分介紹NumPy和pandas的基本內(nèi)容;第二部分介紹pandas庫中的4類操作,包括索引、分組、變形和連接;第三部分介紹基于pandas庫的4類數(shù)據(jù),包括缺失數(shù)據(jù)、文本數(shù)據(jù)、分類數(shù)據(jù)和時間序列數(shù)據(jù),并介紹這4類數(shù)據(jù)的處理方法;第四部分介紹數(shù)據(jù)觀測、特征工程和性能優(yōu)化的相關內(nèi)容。本書以豐富的練習為特色,每章的最后一節(jié)為習題,同時每章包含許多即時性的練習(練一練)。讀者可通過這些練習將對數(shù)據(jù)科學的宏觀認識運用到實踐中。
1.梳理pandas中常用的函數(shù),將函數(shù)之間的邏輯關系總結為“基礎知識+4類操作+4類數(shù)據(jù)”的模塊結構
2.展示了數(shù)據(jù)處理的宏觀體系,并針對數(shù)據(jù)分析中“怎么分析”“怎么處理”“怎么加速”3個核心問題給出解決方案。
3.結合大量代碼講解理論知識,并通過“練一練”和章末的“習題”等形式提供高質(zhì)量的練習,幫助讀者理解、強化和拓展所學知識。
4.不需要讀者掌握數(shù)據(jù)科學或數(shù)據(jù)分析的先驗知識,適合具有一定Python編程基礎、想要使用pandas進行數(shù)據(jù)處理與分析的數(shù)據(jù)科學領域的從業(yè)者或研究人員閱讀。
耿遠昊
威斯康星大學麥迪遜分校統(tǒng)計學碩士在讀,Datawhale成員,“Joyful Pandas”開源項目作者。pandas貢獻者,活躍于pandas開源社區(qū),主要貢獻涉及漏洞修復、功能實現(xiàn)與性能優(yōu)化等方面,對pandas在數(shù)據(jù)處理與分析中的應用有豐富經(jīng)驗。
第 一部分 基礎知識
第 1章 預備知識 2
1.1 Python基礎 2
1.1.1 推導式 2
1.1.2 匿名函數(shù) 4
1.1.3 打包函數(shù) 5
1.2 NumPy基礎 7
1.2.1 NumPy數(shù)組的構造 7
1.2.2 NumPy數(shù)組的變形 11
1.2.3 NumPy數(shù)組的切片 15
1.2.4 廣播機制 17
1.2.5 常用函數(shù) 19
1.3 習題 24
第 2章 pandas基礎 26
2.1 文件的讀取和寫入 26
2.1.1 文件讀取 26
2.1.2 數(shù)據(jù)寫入 28
2.2 基本數(shù)據(jù)結構 29
2.2.1 Series 29
2.2.2 DataFrame 30
2.3 常用基本函數(shù) 32
2.3.1 匯總函數(shù) 33
2.3.2 特征統(tǒng)計函數(shù) 34
2.3.3 頻次函數(shù) 35
2.3.4 替換函數(shù) 36
2.3.5 排序函數(shù) 39
2.3.6 apply()函數(shù) 40
2.4 窗口 42
2.4.1 滑動窗口 42
2.4.2 擴張窗口 45
2.5 習題 46
第二部分 4類操作
第3章 索引 50
3.1 單級索引 50
3.1.1 DataFrame的列索引 50
3.1.2 Series的行索引 51
3.1.3 loc索引器 52
3.1.4 iloc索引器 56
3.1.5 query()函數(shù) 57
3.1.6 索引運算 58
3.2 多級索引 59
3.2.1 多級索引及其表的結構 59
3.2.2 多級索引中的loc索引器 61
3.2.3 多級索引的構造 65
3.3 常用索引方法 66
3.3.1 索引層的交換和刪除 66
3.3.2 索引屬性的修改 67
3.3.3 索引的設置與重置 70
3.3.4 索引的對齊 71
3.4 習題 72
第4章 分組 74
4.1 分組模式及其對象 74
4.1.1 分組的一般模式 74
4.1.2 分組依據(jù)的本質(zhì) 75
4.1.3 groupby對象 76
4.2 聚合函數(shù) 78
4.2.1 內(nèi)置聚合函數(shù) 78
4.2.2 agg()函數(shù) 79
4.3 變換和過濾 80
4.3.1 變換函數(shù) 81
4.3.2 組索引與過濾 82
4.4 跨列分組 83
4.5 習題 85
第5章 變形 87
5.1 長寬表的變形 87
5.1.1 長表的透視變形 88
5.1.2 寬表的逆透視變形 91
5.2 其他變形方法 95
5.2.1 索引變形 95
5.2.2 擴張變形 98
5.3 習題 98
第6章 連接 100
6.1 關系連接 100
6.1.1 關系連接的基本概念 100
6.1.2 列連接 102
6.1.3 索引連接 104
6.2 其他連接 105
6.2.1 方向連接 105
6.2.2 比較與組合 108
6.3 習題 109
第三部分 4類數(shù)據(jù)
第7章 缺失數(shù)據(jù) 114
7.1 缺失值的統(tǒng)計和刪除 114
7.1.1 缺失信息的統(tǒng)計 114
7.1.2 缺失信息的刪除 115
7.2 缺失值的填充和插值 116
7.2.1 利用fillna() 進行填充 116
7.2.2 插值函數(shù) 118
7.3 Nullable類型 120
7.3.1 缺失記號及其缺陷 120
7.3.2 Nullable類型的性質(zhì) 122
7.3.3 缺失數(shù)據(jù)的計算和分組 124
7.4 習題 126
第8章 文本數(shù)據(jù) 128
8.1 str對象 128
8.1.1 str對象的設計意圖 128
8.1.2 []索引器 129
8.1.3 string類型 129
8.2 正則表達式基礎 131
8.2.1 元字符 132
8.2.2 分組捕獲與反向引用 134
8.2.3 零寬斷言 135
8.3 文本處理的5類操作 136
8.3.1 拆分 136
8.3.2 合并 137
8.3.3 匹配 138
8.3.4 替換 139
8.3.5 提取 140
8.4 其他字符串方法 141
8.4.1 字母型方法 141
8.4.2 數(shù)值型方法 142
8.4.3 統(tǒng)計型方法 143
8.4.4 格式型方法 143
8.5 習題 145
第9章 分類數(shù)據(jù) 147
9.1 cat對象 147
9.1.1 cat對象的屬性 147
9.1.2 類別的增加、刪除和修改 148
9.2 有序類別 150
9.2.1 序的建立 150
9.2.2 排序和比較 150
9.3 區(qū)間類別 152
9.3.1 利用cut()和qcut()進行區(qū)間構造 152
9.3.2 一般區(qū)間的構造 153
9.3.3 區(qū)間的屬性與方法 155
9.4 習題 155
第 10章 時間序列數(shù)據(jù) 159
10.1 時間戳 160
10.1.1 時間戳的構造與屬性 160
10.1.2 時間戳序列的生成 161
10.1.3 dt對象 164
10.1.4 時間戳序列的索引與切片 166
10.2 時間差 167
10.2.1 時間差序列的生成 168
10.2.2 時間差序列的運算 169
10.3 日期偏置 170
10.3.1 Offset對象 170
10.3.2 采樣頻率 173
10.4 時間序列操作 175
10.4.1 采樣頻率滑窗 175
10.4.2 重采樣 177
10.4.3 特殊連接 181
10.5 習題 184
第四部分 進階實戰(zhàn)
第 11章 數(shù)據(jù)觀測 190
11.1 可視化方法 190
11.1.1 基本繪圖 190
11.1.2 元素控制 198
11.1.3 子圖繪制 203
11.2 數(shù)據(jù)觀測方法 206
11.2.1 數(shù)據(jù)類型 206
11.2.2 數(shù)據(jù)統(tǒng)計量 207
11.2.3 數(shù)據(jù)分布 209
11.2.4 基于數(shù)據(jù)報告的觀測 210
11.3 習題 212
第 12章 特征工程 216
12.1 單特征構造 216
12.1.1 特征變換 216
12.1.2 文本數(shù)據(jù)特征 223
12.1.3 時間序列數(shù)據(jù)特征 226
12.1.4 單特征構造的一般方法 230
12.2 多特征構造 236
12.2.1 分組技術 236
12.2.2 特征降維 239
12.3 特征選擇 242
12.3.1 基于統(tǒng)計量的選擇 242
12.3.2 基于模型的選擇 249
12.4 習題 255
第 13章 性能優(yōu)化 258
13.1 pandasic代碼要義 258
13.2 多進程加速 261
13.2.1 多進程和多線程 261
13.2.2 多進程的陷阱 264
13.2.3 異步進程 268
13.2.4 進程中的數(shù)據(jù)共享 271
13.2.5 在pandas中使用 多進程 282
13.3 利用Cython加速 286
13.3.1 初識Cython 286
13.3.2 優(yōu)化策略 288
13.3.3 多線程加速 295
13.3.4 Cython類及其應用 306
13.3.5 模塊構建 311
13.4 利用Numba加速 315
13.4.1 noPython模式 315
13.4.2 ufunc與向量化 320
13.4.3 jitclass及其應用 323
13.5 習題 325