數據分析與可視化在大數據時代扮演著重要角色。數據分析用于將原始數據轉化為可行的見解,可視化能將關鍵數據和特征直觀地表達出來。本書深入淺出地介紹了數據分析與可視化的相關理論和實踐,全書共7章。第1章闡明NumPy的基礎操作。第2章詳細介紹NumPy的高級應用,內容包括數組的高級索引方式、張量的合并與分割、NumPy文件的讀與寫。第3章介紹Pandas的基本特性。第4章詳細闡述Pandas的高級特性。第5章詳細討論可視化工具Matplotlib的用法。第6章介紹高階可視化工具Seaborn的用法。第7章講解時間序列數據的處理。每個章節(jié)均給出了可用性強的實戰(zhàn)項目。本書結構完整、行文流暢,是一本圖文并茂、通俗易懂的數據分析與可視化的零基礎入門著作。對于計算機、大數據、人工智能及相關專業(yè)的本科生和研究生,這是一本適合入門與系統(tǒng)學習的教材;對于從事數據分析與可視化的工程技術人員,本書亦有很高的參考價值。
張玉宏,2012年博士畢業(yè)于電子科技大學,大數據分析師(高級),2009年~2011年美國西北大學訪問學者,2019年~至今,美國IUPUI高級訪問學者,現執(zhí)教于河南工業(yè)大學,主要研究方向為大數據、機器學習等,發(fā)表學術論文30余篇,阿里云棲社區(qū)專欄科技作家,先后出版《深度學習之美》《品味大數據》等科技暢銷書6部,參編英文學術專著2部。
目 錄
第1章 NumPy數值計算基礎 001
1.1 為何還需NumPy 002
1.2 如何安裝和導入NumPy 002
1.3 N維數組的本質 003
1.3.1 NumPy數組的兩種視圖 004
1.3.2 數組的常用屬性 004
1.4 如何生成NumPy數組 008
1.4.1 利用序列生成 008
1.4.2 利用特定方法生成 009
1.4.3 利用其他常用方法 011
1.5 NumPy中的隨機數生成 014
1.6 NumPy數組中的運算 016
1.6.1 向量運算 016
1.6.2 NumPy中的通用函數 017
1.6.3 逐元素運算與點乘運算 019
1.6.4 向量的內積與矩陣乘法 020
1.7 NumPy中的廣播機制 022
1.7.1 廣播的本質 022
1.7.2 “低維有1”情況下的廣播 023
1.7.3 “后緣相符”情況下的廣播 023
1.7.4 “后緣不符但低維有1”情況下的廣播 024
1.8 NumPy中的軸 026
1.8.1 認識軸的概念 026
1.8.2 基于軸的約減操作 027
1.8.3 基于軸的各種運算 028
1.9 操作數組元素 031
1.9.1 通過索引訪問數組元素 031
1.9.2 NumPy中的切片訪問 033
1.9.3 二維數組的轉置與展平 035
1.10 實戰(zhàn):張量思維的養(yǎng)成——利用NumPy計算π 038
1.11 本章小結 042
1.12 思考與提高 042
第2章 NumPy數值計算進階 044
2.1 NumPy數組的高級索引 045
2.1.1 花式索引 045
2.1.2 好用的布爾索引 050
2.2 張量的堆疊操作與分割 051
2.2.1 水平方向堆疊hstack 052
2.2.2 垂直方向堆疊vstack 053
2.2.3 深度方向堆疊dstack 054
2.2.4 張量的分割操作 056
2.3 NumPy張量的升維與降維 062
2.4 數據的去重與鋪疊 064
2.4.1 用unique去重 065
2.4.2 用tile鋪疊數據 068
2.5 張量的排序 071
2.5.1 數值排序 071
2.5.2 按列名(order)排序 073
2.5.3 多序列排序(lexsort) 076
2.5.4 索引排序(argsort) 078
2.5.5 索引最大值(argmax)與最小值(argmin) 080
2.6 常用的統(tǒng)計方法 081
2.6.1 最大值、最小值與極值區(qū)間 082
2.6.2 均值、中位數、百分數與方差 083
2.6.3 眾數與堆統(tǒng)計 084
2.7 NumPy文件的讀與寫 086
2.7.1 二進制文件的讀與寫 087
2.7.2 文本文件的讀與寫 090
2.7.3 CSV文件的讀與寫 091
2.8 基于NumPy的綜合實踐 093
2.8.1 鳶尾花數據集的統(tǒng)計分析 093
2.8.2 電力負荷數據的處理 097
2.9 本章小結 100
2.10 思考與練習 101
第3章 Pandas數據分析初步 102
3.1 Pandas簡介與安裝 103
3.2 Series類型數據 104
3.2.1 Series的創(chuàng)建 104
3.2.2 索引訪問與重建索引 106
3.2.3 通過字典構建Series 109
3.2.4 Series中數據的選擇 110
3.2.5 向量化操作 112
3.2.6 布爾索引 114
3.2.7 切片訪問 114
3.2.8 數值的刪除 115
3.2.9 數值的添加 117
3.3 DataFrame 類型數據 119
3.3.1 構建DataFrame 120
3.3.2 訪問DataFrame中的列與行 122
3.3.3 DataFrame的刪除操作 128
3.3.4 添加行與列 130
3.4 基于Pandas的文件讀取與分析 135
3.4.1 讀取CSV文件——以工資信息表為例 136
3.4.2 DataFrame中的常用屬性 137
3.4.3 DataFrame中的常用方法 138
3.4.4 DataFrame的條件過濾 141
3.4.5 DataFrame的切片操作 143
3.4.6 DataFrame的排序操作 145
3.5 實戰(zhàn):讀取Excel文件——以電力負荷數據為例 146
3.5.1 數據源參數 147
3.5.2 特定表單參數 147
3.5.3 表頭讀數 150
3.5.4 表頭名稱參數 151
3.5.5 索引列參數 152
3.5.6 解析列參數 152
3.5.7 數據轉換參數 153
3.6 本章小結 153
3.7 思考與練習 154
第4章 Pandas數據預處理與深加工 156
4.1 數據清洗 157
4.1.1 缺失值標記與檢測 157
4.1.2 檢測形式各異的缺失值 159
4.1.3 缺失值的刪除 161
4.1.4 缺失值的填充 163
4.2 數據的標準化 168
4.2.1 MAX-MIN歸一化 168
4.2.2 零均值標準化 171
4.3 數據變換與數據離散化 172
4.3.1 類別型數據的啞變量處理 172
4.3.2 連續(xù)型變量的離散化 174
4.4 函數的映射與應用 178
4.4.1 map函數的使用 178
4.4.2 apply函數的使用 183
4.4.3 applymap函數的使用 188
4.5 索引的高階應用 189
4.5.1 重建索引 189
4.5.2 設置索引 190
4.5.3 重置索引 193
4.5.4 分層索引 195
4.5.5 實戰(zhàn):《指環(huán)王》臺詞數量分析 201
4.6 數據的融合與堆疊 205
4.6.1 merge按鍵數據融合 205
4.6.2 concat按軸堆疊數據 210
4.6.3 append數據項追加 214
4.7 數據的聚合和分組操作 215
4.7.1 聚合操作 216
4.7.2 分組與聚合 217
4.7.3 分組與轉換 220
4.8 數據重塑與透視 224
4.8.1 數據重塑 224
4.8.2 數據透視 228
4.8.3 實戰(zhàn):《指環(huán)王》中的透視表 230
4.9 實戰(zhàn):泰坦尼克幸存者數據預處理分析 234
4.9.1 數據簡介 234
4.9.2 數據探索 236
4.9.3 缺失值處理 238
4.10 本章小結 241
4.11 思考與練習 242
第5章 Matplotlib可視化分析 244
5.1 可視化與Matplot 245
5.2 Matplot繪制簡單圖形 246
5.3 pyplot的常用方法 249
5.3.1 添加圖例與注釋 249
5.3.2 設置(中文)標題及坐標軸 251
5.3.3 添加網格線 256
5.3.4 繪制多個子圖 257
5.3.5 Axes與subplot的區(qū)別 259
5.3.6 圖形的填充 265
5.4 折線圖 268
5.5 散點圖 270
5.6 條形圖與直方圖 271
5.6.1 垂直條形圖 271
5.6.2 水平條形圖 273
5.6.3 并列條形圖 274
5.6.4 直方圖 278
5.7 餅狀圖 281
5.8 箱形圖 283
5.9 誤差條 285
5.10 實戰(zhàn):谷歌流感趨勢數據可視化分析 287
5.10.1 谷歌流感趨勢數據描述 287
5.10.2 導入數據與數據預處理 288
5.10.3 繪制時序曲線圖 291
5.10.4 選擇合適的數據可視化表達 293
5.10.5 基于條件判斷的圖形繪制 296
5.10.6 繪制多個子圖 299
5.11 本章小結 300
5.12 思考與提高 301
第6章 可視化分析進階 304
6.1 絢麗多姿的Seaborn 305
6.1.1 Matplotlib與Seaborn對比 305
6.1.2 Seaborn的樣式設置 308
6.1.3 設置應用模式與繪圖元素縮放比例 309
6.1.4 使用despine方法進行邊框控制 311
6.1.5 使用axes_style方法設置子圖風格 312
6.2 Seaborn中的常用繪圖 315
6.2.1 回歸圖 315
6.2.2 對圖 317
6.2.3 密度圖 319
6.2.4 直方圖 323
6.2.5 熱力圖 329
6.2.6 箱形圖 330
6.2.7 小提琴圖 334
6.3 手繪風格的繪圖 338
6.3.1 手繪曲線 338
6.3.2 手繪柱狀圖 339
6.3.3 在手繪圖中添加中文卡通字體 340
6.3.4 手繪餅狀圖 343
6.4 實戰(zhàn):泰坦尼克幸存者數據可視化分析 345
6.4.1 導入數據 345
6.4.2 繪制幸存者情況 346
6.4.3 繪制乘客的其他信息 346
6.5 本章小結 351
6.6 思考與練習 351
第7章 時間序列數據分析 354
7.1 時間序列數據概述 355
7.2 日期和時間數據類型 356
7.2.1 datetime模塊 356
7.2.2 datetime轉換為timestamp 357
7.2.3 datetime轉換為str 359
7.2.4 datetime的加與減 359
7.2.5 NumPy中的日期模塊 360
7.3 時間序列對象的構建與切片 362
7.3.1 時間序列構造 362
7.3.2 時間索引與切片 364
7.4 日期范圍、頻率和移位 365
7.4.1 日期范圍 366
7.4.2 時間頻率 367
7.4.3 時間序列的移位操作 368
7.5 時期的表示 371
7.5.1 時期的創(chuàng)建與運算 371
7.5.2 頻率轉換 374
7.5.3 時期與周期的轉換 375
7.6 時間滑動窗口 376
7.7 重采樣、降采樣和升采樣 383
7.7.1 重采樣 383
7.7.2 降采樣中的常用參數 385
7.7.3 升采樣中的缺失值填充 387
7.8 實戰(zhàn):面向股票數據的時間序列分析 390
7.8.1 股票數據的獲取 390
7.8.2 設置百日滾動均線 393
7.8.3 繪制價格與成交量子圖 393
7.8.4 股票數據的K線圖繪制 395
7.9 本章小結 397
7.10 思考與練習 398