Python作為一種程序設(shè)計(jì)語言,憑借其簡潔、易讀及可擴(kuò)展性日漸成為程序設(shè)計(jì)領(lǐng)域備受推崇的語言。同時(shí),Python語言的數(shù)據(jù)分析功能也逐漸為大眾所認(rèn)可。
本書就是一本介紹如何用Python進(jìn)行數(shù)據(jù)分析的學(xué)習(xí)指南。全書共12章,從Python程序庫入門、NumPy數(shù)組和Pandas入門開始,陸續(xù)介紹了數(shù)據(jù)的檢索、數(shù)據(jù)加工與存儲、數(shù)據(jù)可視化等內(nèi)容。同時(shí),本書還介紹了信號處理與時(shí)間序列、應(yīng)用數(shù)據(jù)庫、分析文本數(shù)據(jù)與社交媒體、預(yù)測性分析與機(jī)器學(xué)習(xí)、Python生態(tài)系統(tǒng)的外部環(huán)境和云計(jì)算、性能優(yōu)化及分析、并發(fā)性等內(nèi)容。在本書的最后,還采用3個(gè)附錄的形式為讀者補(bǔ)充了一些重要概念、常用函數(shù)以及在線資源等重要內(nèi)容。
本書延續(xù)了上一版示例豐富、簡單易懂的優(yōu)點(diǎn),非常適合對Python語言感興趣或者想要使用Python語言進(jìn)行數(shù)據(jù)分析的讀者參考閱讀。
Python擁有許多強(qiáng)大的程序庫,已經(jīng)成為進(jìn)行各種數(shù)據(jù)分析和預(yù)測建模任務(wù)的流行平臺。Python的應(yīng)用范圍很廣,拓展性很大。本書介紹了眾多的Python模塊,例如Matplotlib、statsmodels、scikit-learn和NLTK。同時(shí),本書還介紹了Python如何與外部環(huán)境(例如R、Fortran、C/C++和Boost庫)進(jìn)行交互。
通過閱讀本書,你將學(xué)會如何使用Python處理和操作數(shù)據(jù),并完成復(fù)雜的分析和建模。我們將借助NumPy和Pandas來學(xué)習(xí)數(shù)據(jù)的各種操作。本書將介紹如何從各種數(shù)據(jù)源(例如SQL、NoSQL、CSV文件和HDF5)中存儲和檢索數(shù)據(jù)。此外,我們還將學(xué)習(xí)如何通過可視化庫實(shí)現(xiàn)數(shù)據(jù)的可視化,以及信號處理、時(shí)間序列、文本數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和社交媒體分析等主題。
Armando Fandango是Epic工程咨詢集團(tuán)知名數(shù)據(jù)科學(xué)家,負(fù)責(zé)與國防和政府機(jī)構(gòu)有關(guān)的保密項(xiàng)目。Armando是一位技術(shù)精湛的技術(shù)人員,擁有全球創(chuàng)業(yè)公司和大型公司的工作經(jīng)歷和管理經(jīng)驗(yàn)。他的工作涉及金融科技、證券交易所、銀行、生物信息學(xué)、基因組學(xué)、廣告技術(shù)、基礎(chǔ)設(shè)施、交通運(yùn)輸、能源、人力資源和娛樂等多個(gè)領(lǐng)域。
Armando在預(yù)測分析、數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、大數(shù)據(jù)、產(chǎn)品工程、高性能計(jì)算和云基礎(chǔ)設(shè)施等項(xiàng)目中工作了十多年。他的研究興趣橫跨機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和科學(xué)計(jì)算等領(lǐng)域。
第 1章 Python程序庫入門 1
1.1 安裝Python 3 3
1.1.1 安裝數(shù)據(jù)分析程序庫 3
1.1.2 Linux平臺或Mac OS X平臺 3
1.1.3 Windows平臺 4
1.2 將IPython用作shell 4
1.3 學(xué)習(xí)手冊頁 6
1.4 Jupyter Notebook 7
1.5 NumPy數(shù)組 8
1.6 一個(gè)簡單的應(yīng)用 8
1.7 從何處尋求幫助和參考資料 11
1.8 查看Python庫中包含的模塊 12
1.9 通過Matplotlib實(shí)現(xiàn)數(shù)據(jù)的可視化 12
1.10 小結(jié) 14
第 2章 NumPy數(shù)組 15
2.1 NumPy數(shù)組對象 16
2.2 創(chuàng)建多維數(shù)組 17
2.3 選擇NumPy數(shù)組元素 17
2.4 NumPy的數(shù)值類型 18
2.4.1 數(shù)據(jù)類型對象 20
2.4.2 字符碼 20
2.4.3 dtype構(gòu)造函數(shù) 21
2.4.4 dtype屬性 22
2.5 一維數(shù)組的切片與索引 23
2.6 處理數(shù)組形狀 23
2.6.1 堆疊數(shù)組 25
2.6.2 拆分NumPy數(shù)組 28
2.6.3 NumPy數(shù)組的屬性 30
2.6.4 數(shù)組的轉(zhuǎn)換 34
2.7 創(chuàng)建數(shù)組的視圖和拷貝 35
2.8 花式索引 36
2.9 基于位置列表的索引方法 38
2.10 用布爾型變量索引NumPy數(shù)組 39
2.11 NumPy數(shù)組的廣播 41
2.12 小結(jié) 44
2.13 參考資料 44
第3章 Pandas入門 45
3.1 Pandas的安裝與概覽 46
3.2 Pandas數(shù)據(jù)結(jié)構(gòu)之DataFrame 47
3.3 Pandas數(shù)據(jù)結(jié)構(gòu)之Series 49
3.4 利用Pandas查詢數(shù)據(jù) 52
3.5 利用Pandas的DataFrame進(jìn)行統(tǒng)計(jì)計(jì)算 56
3.6 利用Pandas的DataFrame實(shí)現(xiàn)
數(shù)據(jù)聚合 58
3.7 DataFrame的串聯(lián)與附加
操作 62
3.8 連接DataFrames 63
3.9 處理缺失數(shù)據(jù)問題 65
3.10 處理日期數(shù)據(jù) 67
3.11 數(shù)據(jù)透視表 70
3.12 小結(jié) 71
3.13 參考資料 71
第4章 統(tǒng)計(jì)學(xué)與線性代數(shù) 72
4.1 用NumPy進(jìn)行簡單的描述性統(tǒng)計(jì)計(jì)算 72
4.2 用NumPy進(jìn)行線性代數(shù)運(yùn)算 75
4.2.1 用NumPy求矩陣的逆 75
4.2.2 用NumPy解線性方程組 77
4.3 用NumPy計(jì)算特征值和特征向量 78
4.4 NumPy隨機(jī)數(shù) 80
4.4.1 用二項(xiàng)式分布進(jìn)行博弈 81
4.4.2 正態(tài)分布采樣 83
4.4.3 用SciPy進(jìn)行正態(tài)檢驗(yàn) 84
4.5 創(chuàng)建掩碼式NumPy數(shù)組 86
4.6 忽略負(fù)值和極值 88
4.7 小結(jié) 91
第5章 數(shù)據(jù)的檢索、加工與存儲 92
5.1 利用NumPy和pandas對CSV文件進(jìn)行寫操作 92
5.2 二進(jìn)制.npy與pickle格式 94
5.3 使用PyTables存儲數(shù)據(jù) 97
5.4 Pandas DataFrame與HDF5倉庫之間的讀寫操作 99
5.5 使用Pandas讀寫Excel文件 102
5.6 使用REST Web服務(wù)和JSON 103
5.7 使用Pandas讀寫JSON 105
5.8 解析RSS和Atom訂閱 106
5.9 使用Beautiful Soup解析HTML 108
5.10 小結(jié) 114
5.11 參考資料 114
第6章 數(shù)據(jù)可視化 115
6.1 Matplotlib的子庫 116
6.2 Matplotlib繪圖入門 116
6.3 對數(shù)圖 118
6.4 散點(diǎn)圖 119
6.5 圖例和注解 121
6.6 三維圖 123
6.7 Pandas繪圖 125
6.8 時(shí)滯圖 127
6.9 自相關(guān)圖 129
6.10 Plot.ly 130
6.11 小結(jié) 132
第7章 信號處理與時(shí)間序列 133
7.1 statsmodels模塊 134
7.2 移動平均值 134
7.3 窗口函數(shù) 136
7.4 協(xié)整的定義 138
7.5 自相關(guān) 140
7.6 自回歸模型 142
7.7 ARMA模型 145
7.8 生成周期信號 147
7.9 傅里葉分析 149
7.10 譜分析 152
7.11 濾波 153
7.12 小結(jié) 155
第8章 應(yīng)用數(shù)據(jù)庫 156
8.1 基于sqlite3的輕量級訪問 157
8.2 通過Pandas訪問數(shù)據(jù)庫 159
8.3 SQLAlchemy 161
8.3.1 SQLAlchemy的安裝和配置 161
8.3.2 通過SQLAlchemy填充數(shù)據(jù)庫 162
8.3.3 通過SQLAlchemy查詢數(shù)據(jù)庫 164
8.4 Pony ORM 166
8.5 Dataset:懶人數(shù)據(jù)庫 167
8.6 PyMongo與MongoDB 168
8.7 利用Redis存儲數(shù)據(jù) 170
8.8 利用memcache存儲數(shù)據(jù) 171
8.9 Apache Cassandra 172
8.10 小結(jié) 174
第9章 分析文本數(shù)據(jù)和社交媒體 176
9.1 安裝NLTK 177
9.2 NLTK簡介 177
9.3 濾除停用字、姓名和數(shù)字 178
9.4 詞袋模型 180
9.5 詞頻分析 181
9.6 樸素貝葉斯分類 183
9.7 情感分析 186
9.8 創(chuàng)建詞云 189
9.9 社交網(wǎng)絡(luò)分析 193
9.10 小結(jié) 195
第 10章 預(yù)測性分析與機(jī)器學(xué)習(xí) 197
10.1 預(yù)處理 198
10.2 基于邏輯回歸的分類 201
10.3 基于支持向量機(jī)的分類 202
10.4 基于ElasticNetCV的回歸分析 205
10.5 支持向量回歸 207
10.6 基于相似性傳播算法的聚類
分析 210
10.7 均值漂移算法 211
10.8 遺傳算法 213
10.9 神經(jīng)網(wǎng)絡(luò) 217
10.10 決策樹 219
10.11 小結(jié) 222
第 11章 Python生態(tài)系統(tǒng)的外部環(huán)境和云計(jì)算 223
11.1 與MATLAB/Octave交換
信息 224
11.2 安裝rpy2 225
11.3 連接R 225
11.4 為Java傳遞NumPy數(shù)組 228
11.5 集成SWIG和NumPy 229
11.6 集成Boost和Python 233
11.7 通過f2py使用Fortran代碼 235
11.8 PythonAnywhere云 236
11.9 小結(jié) 238
第 12章 性能優(yōu)化、性能分析與并發(fā)性 239
12.1 代碼的性能分析 240
12.2 安裝Cython 245
12.3 調(diào)用C代碼 248
12.4 利用multiprocessing創(chuàng)建進(jìn)程池 252
12.5 通過Joblib提高for循環(huán)的并發(fā)性 254
12.6 比較Bottleneck函數(shù)與NumPy函數(shù) 255
12.7 通過Jug實(shí)現(xiàn)MapReduce 257
12.8 安裝MPI for Python 259
12.9 IPython Parallel 260
12.10 小結(jié) 263
附錄A 重要概念 264
附錄B 常用函數(shù) 269