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