本書以Python中的pandas庫為主線,介紹各類數(shù)據(jù)處理與分析方法。
本書共包含13章,第一部分介紹NumPy和pandas的基本內(nèi)容;第二部分介紹pandas庫中的4類操作,包括索引、分組、變形和連接;第三部分介紹基于pandas庫的4類數(shù)據(jù),包括缺失數(shù)據(jù)、文本數(shù)據(jù)、分類數(shù)據(jù)和時(shí)間序列數(shù)據(jù),并介紹這4類數(shù)據(jù)的處理方法;第四部分介紹數(shù)據(jù)觀測、特征工程和性能優(yōu)化的相關(guān)內(nèi)容。本書以豐富的練習(xí)為特色,每章的最后一節(jié)為習(xí)題,同時(shí)每章包含許多即時(shí)性的練習(xí)(練一練)。讀者可通過這些練習(xí)將對(duì)數(shù)據(jù)科學(xué)的宏觀認(rèn)識(shí)運(yùn)用到實(shí)踐中。
1.梳理pandas中常用的函數(shù),將函數(shù)之間的邏輯關(guān)系總結(jié)為“基礎(chǔ)知識(shí)+4類操作+4類數(shù)據(jù)”的模塊結(jié)構(gòu)
2.展示了數(shù)據(jù)處理的宏觀體系,并針對(duì)數(shù)據(jù)分析中“怎么分析”“怎么處理”“怎么加速”3個(gè)核心問題給出解決方案。
3.結(jié)合大量代碼講解理論知識(shí),并通過“練一練”和章末的“習(xí)題”等形式提供高質(zhì)量的練習(xí),幫助讀者理解、強(qiáng)化和拓展所學(xué)知識(shí)。
4.不需要讀者掌握數(shù)據(jù)科學(xué)或數(shù)據(jù)分析的先驗(yàn)知識(shí),適合具有一定Python編程基礎(chǔ)、想要使用pandas進(jìn)行數(shù)據(jù)處理與分析的數(shù)據(jù)科學(xué)領(lǐng)域的從業(yè)者或研究人員閱讀。
耿遠(yuǎn)昊
威斯康星大學(xué)麥迪遜分校統(tǒng)計(jì)學(xué)碩士在讀,Datawhale成員,“Joyful Pandas”開源項(xiàng)目作者。pandas貢獻(xiàn)者,活躍于pandas開源社區(qū),主要貢獻(xiàn)涉及漏洞修復(fù)、功能實(shí)現(xiàn)與性能優(yōu)化等方面,對(duì)pandas在數(shù)據(jù)處理與分析中的應(yīng)用有豐富經(jīng)驗(yàn)。
第 一部分 基礎(chǔ)知識(shí)
第 1章 預(yù)備知識(shí) 2
1.1 Python基礎(chǔ) 2
1.1.1 推導(dǎo)式 2
1.1.2 匿名函數(shù) 4
1.1.3 打包函數(shù) 5
1.2 NumPy基礎(chǔ) 7
1.2.1 NumPy數(shù)組的構(gòu)造 7
1.2.2 NumPy數(shù)組的變形 11
1.2.3 NumPy數(shù)組的切片 15
1.2.4 廣播機(jī)制 17
1.2.5 常用函數(shù) 19
1.3 習(xí)題 24
第 2章 pandas基礎(chǔ) 26
2.1 文件的讀取和寫入 26
2.1.1 文件讀取 26
2.1.2 數(shù)據(jù)寫入 28
2.2 基本數(shù)據(jù)結(jié)構(gòu) 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)計(jì)函數(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 滑動(dòng)窗口 42
2.4.2 擴(kuò)張窗口 45
2.5 習(xí)題 46
第二部分 4類操作
第3章 索引 50
3.1 單級(jí)索引 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 索引運(yùn)算 58
3.2 多級(jí)索引 59
3.2.1 多級(jí)索引及其表的結(jié)構(gòu) 59
3.2.2 多級(jí)索引中的loc索引器 61
3.2.3 多級(jí)索引的構(gòu)造 65
3.3 常用索引方法 66
3.3.1 索引層的交換和刪除 66
3.3.2 索引屬性的修改 67
3.3.3 索引的設(shè)置與重置 70
3.3.4 索引的對(duì)齊 71
3.4 習(xí)題 72
第4章 分組 74
4.1 分組模式及其對(duì)象 74
4.1.1 分組的一般模式 74
4.1.2 分組依據(jù)的本質(zhì) 75
4.1.3 groupby對(duì)象 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 習(xí)題 85
第5章 變形 87
5.1 長寬表的變形 87
5.1.1 長表的透視變形 88
5.1.2 寬表的逆透視變形 91
5.2 其他變形方法 95
5.2.1 索引變形 95
5.2.2 擴(kuò)張變形 98
5.3 習(xí)題 98
第6章 連接 100
6.1 關(guān)系連接 100
6.1.1 關(guān)系連接的基本概念 100
6.1.2 列連接 102
6.1.3 索引連接 104
6.2 其他連接 105
6.2.1 方向連接 105
6.2.2 比較與組合 108
6.3 習(xí)題 109
第三部分 4類數(shù)據(jù)
第7章 缺失數(shù)據(jù) 114
7.1 缺失值的統(tǒng)計(jì)和刪除 114
7.1.1 缺失信息的統(tǒng)計(jì) 114
7.1.2 缺失信息的刪除 115
7.2 缺失值的填充和插值 116
7.2.1 利用fillna() 進(jìn)行填充 116
7.2.2 插值函數(shù) 118
7.3 Nullable類型 120
7.3.1 缺失記號(hào)及其缺陷 120
7.3.2 Nullable類型的性質(zhì) 122
7.3.3 缺失數(shù)據(jù)的計(jì)算和分組 124
7.4 習(xí)題 126
第8章 文本數(shù)據(jù) 128
8.1 str對(duì)象 128
8.1.1 str對(duì)象的設(shè)計(jì)意圖 128
8.1.2 []索引器 129
8.1.3 string類型 129
8.2 正則表達(dá)式基礎(chǔ) 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)計(jì)型方法 143
8.4.4 格式型方法 143
8.5 習(xí)題 145
第9章 分類數(shù)據(jù) 147
9.1 cat對(duì)象 147
9.1.1 cat對(duì)象的屬性 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()進(jìn)行區(qū)間構(gòu)造 152
9.3.2 一般區(qū)間的構(gòu)造 153
9.3.3 區(qū)間的屬性與方法 155
9.4 習(xí)題 155
第 10章 時(shí)間序列數(shù)據(jù) 159
10.1 時(shí)間戳 160
10.1.1 時(shí)間戳的構(gòu)造與屬性 160
10.1.2 時(shí)間戳序列的生成 161
10.1.3 dt對(duì)象 164
10.1.4 時(shí)間戳序列的索引與切片 166
10.2 時(shí)間差 167
10.2.1 時(shí)間差序列的生成 168
10.2.2 時(shí)間差序列的運(yùn)算 169
10.3 日期偏置 170
10.3.1 Offset對(duì)象 170
10.3.2 采樣頻率 173
10.4 時(shí)間序列操作 175
10.4.1 采樣頻率滑窗 175
10.4.2 重采樣 177
10.4.3 特殊連接 181
10.5 習(xí)題 184
第四部分 進(jìn)階實(shí)戰(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)計(jì)量 207
11.2.3 數(shù)據(jù)分布 209
11.2.4 基于數(shù)據(jù)報(bào)告的觀測 210
11.3 習(xí)題 212
第 12章 特征工程 216
12.1 單特征構(gòu)造 216
12.1.1 特征變換 216
12.1.2 文本數(shù)據(jù)特征 223
12.1.3 時(shí)間序列數(shù)據(jù)特征 226
12.1.4 單特征構(gòu)造的一般方法 230
12.2 多特征構(gòu)造 236
12.2.1 分組技術(shù) 236
12.2.2 特征降維 239
12.3 特征選擇 242
12.3.1 基于統(tǒng)計(jì)量的選擇 242
12.3.2 基于模型的選擇 249
12.4 習(xí)題 255
第 13章 性能優(yōu)化 258
13.1 pandasic代碼要義 258
13.2 多進(jìn)程加速 261
13.2.1 多進(jìn)程和多線程 261
13.2.2 多進(jìn)程的陷阱 264
13.2.3 異步進(jìn)程 268
13.2.4 進(jìn)程中的數(shù)據(jù)共享 271
13.2.5 在pandas中使用 多進(jìn)程 282
13.3 利用Cython加速 286
13.3.1 初識(shí)Cython 286
13.3.2 優(yōu)化策略 288
13.3.3 多線程加速 295
13.3.4 Cython類及其應(yīng)用 306
13.3.5 模塊構(gòu)建 311
13.4 利用Numba加速 315
13.4.1 noPython模式 315
13.4.2 ufunc與向量化 320
13.4.3 jitclass及其應(yīng)用 323
13.5 習(xí)題 325