本書是為使用Python進(jìn)行科學(xué)計(jì)算的新手或剛?cè)腴T者量身定做的,是作者學(xué)習(xí)和使用Python進(jìn)行人工智能項(xiàng)目研發(fā)的體會(huì)與經(jīng)驗(yàn)總結(jié),涵蓋了實(shí)際開發(fā)中的基礎(chǔ)知識(shí)點(diǎn),內(nèi)容詳盡,代碼可讀性及可操作性強(qiáng)。本書主要介紹NumPy、Pandas、Matplotlib的基本操作。本書使用通俗易懂的描述,引入了豐富的示例代碼,同時(shí)結(jié)合智慧城市中的一些事件,使內(nèi)容呈現(xiàn)盡可能生動(dòng)有趣,讓一些原本復(fù)雜的處理能夠通過另一種輔助解釋得以簡(jiǎn)單化,從而使讀者充分感受學(xué)習(xí)的樂趣和魅力。本書可供有一定Python基礎(chǔ)但沒有NumPy、Pandas、Matplotlib操作經(jīng)驗(yàn)的人員,有Python基礎(chǔ)并且想進(jìn)一步學(xué)習(xí)使用Python進(jìn)行科學(xué)計(jì)算的人員,有一些Python基礎(chǔ)并且打算入門人工智能的人員,以及培訓(xùn)機(jī)構(gòu)、中學(xué)及大專院校的學(xué)生閱讀。
劉宇宙,先后供職于上海海鼎、上海云卯、上海宏力達(dá),目前供職于廣州棒谷科技股份有限公司人工智能開發(fā)部,從事大數(shù)據(jù)研發(fā)。先后從事過卡系統(tǒng)的研發(fā),云計(jì)算項(xiàng)目中IAAS系統(tǒng)的研發(fā),大數(shù)據(jù)項(xiàng)目研發(fā),物聯(lián)網(wǎng)研發(fā)。對(duì)Java、Python有深入研究。Python技術(shù)愛好者,在CSDN發(fā)表原創(chuàng)Python博文多篇。
目 錄
第一部分 數(shù)據(jù)分析與處理簡(jiǎn)介
第1章 數(shù)據(jù)分析與處理概述 2
1.1 了解大數(shù)據(jù) 2
1.2 數(shù)據(jù)分析與處理的需求 4
1.3 數(shù)據(jù)分析與處理的發(fā)展前景 5
第二部分 科學(xué)計(jì)算之門——NumPy
第2章 NumPy入門 8
2.1 NumPy簡(jiǎn)介 8
2.2 NumPy安裝 8
2.3 NumPy——ndarray對(duì)象 9
2.4 NumPy數(shù)據(jù)類型 11
2.4.1 數(shù)據(jù)類型 11
2.4.2 數(shù)據(jù)類型對(duì)象(dtype) 12
2.5 NumPy數(shù)組屬性 16
2.6 NumPy創(chuàng)建數(shù)組 19
2.6.1 numpy.empty 19
2.6.2 numpy.zeros 19
2.6.3 numpy.ones 20
2.6.4 numpy.asarray 21
2.6.5 numpy.frombuffer 22
2.6.6 numpy.fromiter 23
2.6.7 numpy.arange 23
2.6.8 numpy.linspace 24
2.6.9 numpy.logspace 26
2.7 NumPy切片和索引 27
2.7.1 切片和索引 27
2.7.2 整數(shù)數(shù)組索引 29
2.7.3 布爾索引 30
2.7.4 花式索引 31
2.8 NumPy迭代數(shù)組 32
2.9 NumPy數(shù)組操作 37
2.9.1 修改數(shù)字形狀 37
2.9.2 翻轉(zhuǎn)數(shù)組 39
2.9.3 修改數(shù)組維度 42
2.9.4 連接數(shù)組 45
2.9.5 分割數(shù)組 48
2.9.6 數(shù)組的添加與刪除 50
2.10 NumPy位運(yùn)算 55
2.10.1 bitwise_and()函數(shù) 55
2.10.2 bitwise_or()函數(shù) 55
2.10.3 invert()函數(shù) 56
2.10.4 left_shift()函數(shù) 56
2.10.5 right_shift()函數(shù) 56
2.11 實(shí)戰(zhàn)演練 57
第3章 NumPy函數(shù) 58
3.1 字符串函數(shù) 58
3.1.1 numpy.char.add()函數(shù) 58
3.1.2 numpy.char.multiply()函數(shù) 59
3.1.3 numpy.char.center()函數(shù) 59
3.1.4 numpy.char.capitalize()函數(shù) 59
3.1.5 numpy.char.title()函數(shù) 59
3.1.6 numpy.char.lower()函數(shù) 60
3.1.7 numpy.char.upper()函數(shù) 60
3.1.8 numpy.char.split()函數(shù) 60
3.1.9 numpy.char.splitlines()函數(shù) 61
3.1.10 numpy.char.strip()函數(shù) 61
3.1.11 numpy.char.join()函數(shù) 61
3.1.12 numpy.char.replace()函數(shù) 62
3.1.13 numpy.char.encode()函數(shù) 62
3.1.14 numpy.char.decode()函數(shù) 62
3.2 數(shù)學(xué)函數(shù) 62
3.2.1 三角函數(shù) 62
3.2.2 舍入函數(shù) 64
3.2.3 numpy.floor()函數(shù) 65
3.2.4 numpy.ceil()函數(shù) 65
3.3 算術(shù)函數(shù) 65
?
3.4 統(tǒng)計(jì)函數(shù) 67
3.4.1 numpy.amin()函數(shù)和numpy.amax()函數(shù) 67
3.4.2 numpy.ptp()函數(shù) 68
3.4.3 numpy.percentile()函數(shù) 68
3.4.4 numpy.median()函數(shù) 69
3.4.5 numpy.mean()函數(shù) 70
3.4.6 numpy.average()函數(shù) 70
3.4.7 標(biāo)準(zhǔn)差 71
3.4.8 方差 72
3.5 排序、搜索和計(jì)數(shù)函數(shù) 72
3.5.1 numpy.sort()函數(shù) 72
3.5.2 numpy.argsort()函數(shù) 73
3.5.3 numpy.lexsort()函數(shù) 74
3.5.4 numpy.argmax()函數(shù)和numpy.argmin()函數(shù) 74
3.5.5 numpy.nonzero()函數(shù) 75
3.5.6 numpy.where()函數(shù) 76
3.5.7 numpy.extract()函數(shù) 76
3.5.8 其他排序 77
3.6 字節(jié)交換 78
3.7 副本和視圖 79
3.7.1 無復(fù)制 79
3.7.2 視圖 80
3.7.3 副本 81
3.8 矩陣庫 82
3.9 線性代數(shù) 85
3.10 NumPy IO 90
3.11 實(shí)戰(zhàn)演練 93
第三部分 數(shù)據(jù)處理法寶——Pandas
第4章 Pandas入門 96
4.1 Pandas簡(jiǎn)介 96
4.2 Pandas安裝及數(shù)據(jù)結(jié)構(gòu) 96
4.3 系列 97
4.3.1 創(chuàng)建空系列 98
4.3.2 由ndarray創(chuàng)建系列 98
4.3.3 由字典創(chuàng)建系列 99
4.3.4 使用標(biāo)量創(chuàng)建系列 99
4.3.5 從系列中訪問數(shù)據(jù) 100
4.3.6 使用標(biāo)簽檢索數(shù)據(jù) 101
4.4 數(shù)據(jù)幀 101
4.4.1 創(chuàng)建空數(shù)據(jù)幀 102
4.4.2 使用列表創(chuàng)建數(shù)據(jù)幀 102
4.4.3 使用ndarrays/lists的字典創(chuàng)建數(shù)據(jù)幀 103
4.4.4 使用字典列表創(chuàng)建數(shù)據(jù)幀 104
4.4.5 使用系列的字典創(chuàng)建數(shù)據(jù)幀 105
4.4.6 列選擇 105
4.4.7 列添加 106
4.4.8 列刪除 106
4.4.9 行選擇、添加和刪除 107
4.4.10 行切片 108
4.5 面板 109
4.5.1 面板創(chuàng)建 110
4.5.2 數(shù)據(jù)選擇 110
4.6 基本功能 111
4.6.1 T轉(zhuǎn)置 112
4.6.2 axes 113
4.6.3 dtypes 113
4.6.4 empty 113
4.6.5 ndim 114
4.6.6 shape 114
4.6.7 size 114
4.6.8 values 115
4.6.9 head()方法與tail()方法 115
4.7 描述性統(tǒng)計(jì) 116
4.7.1 sum()函數(shù) 116
4.7.2 mean()函數(shù) 117
4.7.3 std()函數(shù) 118
4.7.4 describe()函數(shù) 118
4.8 函數(shù)應(yīng)用 120
4.8.1 表格函數(shù) 120
4.8.2 行列合理函數(shù) 121
4.8.3 元素合理函數(shù) 122
4.9 重建索引 123
4.9.1 重建對(duì)象對(duì)齊索引 123
4.9.2 填充時(shí)重新加注 124
4.9.3 重建索引時(shí)的填充限制 124
4.9.4 重命名 125
4.10 迭代 126
4.11 排序 127
4.11.1 按標(biāo)簽排序 127
4.11.2 排序順序 128
4.11.3 按列排序 129
4.11.4 按值排序 129
4.11.5 排序算法 129
4.12 字符串和文本數(shù)據(jù) 130
4.12.1 lower()函數(shù) 130
4.12.2 upper()函數(shù) 130
4.12.3 len()函數(shù) 131
4.12.4 strip()函數(shù) 131
4.12.5 split()函數(shù) 131
4.12.6 cat()函數(shù) 132
4.12.7 get_dummies()函數(shù) 132
4.12.8 contains()函數(shù) 132
4.12.9 replace()函數(shù) 133
4.12.10 repeat()函數(shù) 133
4.12.11 count()函數(shù) 133
4.12.12 startswith()函數(shù) 133
4.12.13 endswith()函數(shù) 134
4.12.14 find()函數(shù) 134
4.12.15 findall()函數(shù) 134
4.12.16 swapcase()函數(shù) 135
4.12.17 islower()函數(shù) 135
4.12.18 isupper()函數(shù) 135
4.12.19 isnumeric()函數(shù) 136
4.13 選項(xiàng)和自定義 136
4.13.1 get_option()函數(shù) 136
4.13.2 set_option()函數(shù) 136
4.13.3 reset_option()函數(shù) 137
4.13.4 describe_option()函數(shù) 137
4.13.5 option_context()函數(shù) 138
4.14 選擇和索引數(shù)據(jù) 138
4.14.1 .loc() 138
4.14.2 .iloc() 139
4.14.3 .ix() 139
4.14.4 使用符號(hào) 139
4.14.5 屬性訪問 140
4.15 實(shí)戰(zhàn)演練 140
第5章 Pandas進(jìn)階 141
5.1 統(tǒng)計(jì)函數(shù) 141
5.1.1 pct_change()函數(shù) 141
5.1.2 協(xié)方差 142
5.1.3 相關(guān)性 143
5.1.4 數(shù)據(jù)排名 143
5.2 窗口函數(shù) 144
5.2.1 .rolling()函數(shù) 144
5.2.2 .expanding()函數(shù) 145
5.2.3 .ewm()函數(shù) 145
5.3 聚合 145
5.3.1 在整個(gè)DataFrame上應(yīng)用聚合 146
5.3.2 在DataFrame的單列上應(yīng)用聚合 146
5.3.3 在DataFrame的多列上應(yīng)用聚合 147
5.3.4 在DataFrame的單列上應(yīng)用多個(gè)函數(shù) 147
5.3.5 在DataFrame的多列上應(yīng)用多個(gè)函數(shù) 148
5.3.6 將不同的函數(shù)應(yīng)用于DataFrame的不同列 148
5.4 缺失數(shù)據(jù) 149
5.4.1 為什么會(huì)缺失數(shù)據(jù) 149
5.4.2 檢查缺失值 149
5.4.3 缺失數(shù)據(jù)的計(jì)算 150
5.4.4 缺失數(shù)據(jù)填充 150
5.4.5 向前和向后填充 150
5.4.6 清除缺失值 151
5.4.7 值替換 151
5.5 分組 151
5.5.1 將數(shù)據(jù)拆分成組 152
5.5.2 查看分組 152
5.5.3 迭代遍歷分組 153
5.5.4 選擇一個(gè)分組 153
5.5.5 聚合 154
5.5.6 使用多個(gè)聚合函數(shù) 154
5.5.7 轉(zhuǎn)換 155
5.5.8 過濾 155
5.6 合并/連接 156
5.6.1 合并一個(gè)鍵上的兩個(gè)數(shù)據(jù)幀 157
5.6.2 合并多個(gè)鍵上的兩個(gè)數(shù)據(jù)幀 157
5.6.3 使用how參數(shù) 158
5.7 級(jí)聯(lián) 159
5.7.1 concat()函數(shù) 159
5.7.2 append()函數(shù) 161
5.7.3 時(shí)間序列 161
5.8 日期功能 162
5.9 時(shí)間差 164
5.10 分類數(shù)據(jù) 165
5.11 稀疏數(shù)據(jù) 169
5.12 實(shí)戰(zhàn)演練 170
第四部分 優(yōu)雅的藝術(shù)——Matplotlib
第6章 Matplotlib 入門 172
6.1 Matplotlib簡(jiǎn)介 172
6.2 Matplotlib安裝 173
6.3 Pyplot教程 173
6.3.1 控制線條屬性 176
6.3.2 處理多個(gè)圖形和軸域 177
6.3.3 處理文本 178
6.3.4 在文本中使用數(shù)學(xué)表達(dá)式 179
6.3.5 對(duì)數(shù)和其他非線性軸 180
6.4 使用GridSpec自定義子圖位置 181
6.4.1 subplot2grid 181
6.4.2 GridSpec和SubplotSpec 182
6.4.3 調(diào)整GridSpec布局 183
6.4.4 使用SubplotSpec創(chuàng)建GridSpec 184
6.4.5 調(diào)整GridSpec布局 185
6.5 布局 186
6.5.1 簡(jiǎn)單示例 186
6.5.2 和GridSpec一起使用 190
6.5.3 和AxesGrid1一起使用 193
6.5.4 顏色條 194
6.6 藝術(shù)家教程 195
6.6.1 自定義對(duì)象 196
6.6.2 圖形容器 197
6.6.3 軸域容器 197
6.6.4 軸容器(Axis) 199
6.6.5 刻度容器 201
6.7 圖例指南 202
6.7.1 控制圖例條目 202
6.7.2 代理藝術(shù)家 203
6.7.3 圖例位置 204
6.7.4 同軸域的多個(gè)圖例 204
6.7.5 圖例處理器 205
6.7.6 自定義圖例處理器 206
6.8 變換 208
6.8.1 數(shù)據(jù)坐標(biāo) 208
6.8.2 混合變換 209
6.8.3 創(chuàng)建陰影效果 210
6.9 路徑 212
6.9.1 貝塞爾示例 213
6.9.2 復(fù)合路徑 214
6.9.3 路徑效果 216
6.9.4 添加陰影 217
6.9.5 其他 218
第7章 Matplotlib更多處理 220
7.1 基本文本命令 220
7.2 文本屬性及布局 222
7.3 標(biāo)注 225
7.3.1 基本標(biāo)注 225
7.3.2 使用框和文本標(biāo)注 227
7.3.3 使用箭頭標(biāo)注 228
7.4 數(shù)學(xué)表達(dá)式 231
7.5 顏色指定 235
7.6 事件處理及拾取 236
7.6.1 事件連接 236
7.6.2 事件屬性 237
7.6.3 可拖曳的矩形 239
7.6.4 鼠標(biāo)進(jìn)入和離開 242
7.6.5 對(duì)象拾取 244
7.7 擴(kuò)展 246
7.7.1 透明度填充 246
7.7.2 透明、花式圖例 247
7.7.3 放置文本框 248
第五部分 項(xiàng)目實(shí)戰(zhàn)
第8章 數(shù)據(jù)加載與數(shù)據(jù)庫操作 252
8.1 讀寫文本格式的數(shù)據(jù) 252
8.2 逐塊讀取文本文件 256
8.3 數(shù)據(jù)寫入文本 258
8.4 JSON數(shù)據(jù)處理 260
8.5 二進(jìn)制數(shù)據(jù)格式 262
8.6 HDF5數(shù)據(jù)格式 262
8.7 Pandas操作數(shù)據(jù)庫 265
第9章 數(shù)據(jù)分析 273
9.1 數(shù)據(jù)準(zhǔn)備 273
9.2 數(shù)據(jù)處理 279
9.3 數(shù)據(jù)可視化 291
附錄A 可用Line2D屬性 294
附錄B 習(xí)題參考答案 295