數(shù)據(jù)分析與可視化在大數(shù)據(jù)時代扮演著重要角色。數(shù)據(jù)分析用于將原始數(shù)據(jù)轉(zhuǎn)化為可行的見解,可視化能將關(guān)鍵數(shù)據(jù)和特征直觀地表達出來。本書深入淺出地介紹了數(shù)據(jù)分析與可視化的相關(guān)理論和實踐,全書共7章。第1章闡明NumPy的基礎(chǔ)操作。第2章詳細介紹NumPy的高級應(yīng)用,內(nèi)容包括數(shù)組的高級索引方式、張量的合并與分割、NumPy文件的讀與寫。第3章介紹Pandas的基本特性。第4章詳細闡述Pandas的高級特性。第5章詳細討論可視化工具Matplotlib的用法。第6章介紹高階可視化工具Seaborn的用法。第7章講解時間序列數(shù)據(jù)的處理。每個章節(jié)均給出了可用性強的實戰(zhàn)項目。本書結(jié)構(gòu)完整、行文流暢,是一本圖文并茂、通俗易懂的數(shù)據(jù)分析與可視化的零基礎(chǔ)入門著作。對于計算機、大數(shù)據(jù)、人工智能及相關(guān)專業(yè)的本科生和研究生,這是一本適合入門與系統(tǒng)學(xué)習(xí)的教材;對于從事數(shù)據(jù)分析與可視化的工程技術(shù)人員,本書亦有很高的參考價值。
張玉宏,2012年博士畢業(yè)于電子科技大學(xué),大數(shù)據(jù)分析師(高級),2009年~2011年美國西北大學(xué)訪問學(xué)者,2019年~至今,美國IUPUI高級訪問學(xué)者,現(xiàn)執(zhí)教于河南工業(yè)大學(xué),主要研究方向為大數(shù)據(jù)、機器學(xué)習(xí)等,發(fā)表學(xué)術(shù)論文30余篇,阿里云棲社區(qū)專欄科技作家,先后出版《深度學(xué)習(xí)之美》《品味大數(shù)據(jù)》等科技暢銷書6部,參編英文學(xué)術(shù)專著2部。
目 錄
第1章 NumPy數(shù)值計算基礎(chǔ) 001
1.1 為何還需NumPy 002
1.2 如何安裝和導(dǎo)入NumPy 002
1.3 N維數(shù)組的本質(zhì) 003
1.3.1 NumPy數(shù)組的兩種視圖 004
1.3.2 數(shù)組的常用屬性 004
1.4 如何生成NumPy數(shù)組 008
1.4.1 利用序列生成 008
1.4.2 利用特定方法生成 009
1.4.3 利用其他常用方法 011
1.5 NumPy中的隨機數(shù)生成 014
1.6 NumPy數(shù)組中的運算 016
1.6.1 向量運算 016
1.6.2 NumPy中的通用函數(shù) 017
1.6.3 逐元素運算與點乘運算 019
1.6.4 向量的內(nèi)積與矩陣乘法 020
1.7 NumPy中的廣播機制 022
1.7.1 廣播的本質(zhì) 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 操作數(shù)組元素 031
1.9.1 通過索引訪問數(shù)組元素 031
1.9.2 NumPy中的切片訪問 033
1.9.3 二維數(shù)組的轉(zhuǎn)置與展平 035
1.10 實戰(zhàn):張量思維的養(yǎng)成——利用NumPy計算π 038
1.11 本章小結(jié) 042
1.12 思考與提高 042
第2章 NumPy數(shù)值計算進階 044
2.1 NumPy數(shù)組的高級索引 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 數(shù)據(jù)的去重與鋪疊 064
2.4.1 用unique去重 065
2.4.2 用tile鋪疊數(shù)據(jù) 068
2.5 張量的排序 071
2.5.1 數(shù)值排序 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 均值、中位數(shù)、百分數(shù)與方差 083
2.6.3 眾數(shù)與堆統(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 鳶尾花數(shù)據(jù)集的統(tǒng)計分析 093
2.8.2 電力負荷數(shù)據(jù)的處理 097
2.9 本章小結(jié) 100
2.10 思考與練習(xí) 101
第3章 Pandas數(shù)據(jù)分析初步 102
3.1 Pandas簡介與安裝 103
3.2 Series類型數(shù)據(jù) 104
3.2.1 Series的創(chuàng)建 104
3.2.2 索引訪問與重建索引 106
3.2.3 通過字典構(gòu)建Series 109
3.2.4 Series中數(shù)據(jù)的選擇 110
3.2.5 向量化操作 112
3.2.6 布爾索引 114
3.2.7 切片訪問 114
3.2.8 數(shù)值的刪除 115
3.2.9 數(shù)值的添加 117
3.3 DataFrame 類型數(shù)據(jù) 119
3.3.1 構(gòu)建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文件——以電力負荷數(shù)據(jù)為例 146
3.5.1 數(shù)據(jù)源參數(shù) 147
3.5.2 特定表單參數(shù) 147
3.5.3 表頭讀數(shù) 150
3.5.4 表頭名稱參數(shù) 151
3.5.5 索引列參數(shù) 152
3.5.6 解析列參數(shù) 152
3.5.7 數(shù)據(jù)轉(zhuǎn)換參數(shù) 153
3.6 本章小結(jié) 153
3.7 思考與練習(xí) 154
第4章 Pandas數(shù)據(jù)預(yù)處理與深加工 156
4.1 數(shù)據(jù)清洗 157
4.1.1 缺失值標記與檢測 157
4.1.2 檢測形式各異的缺失值 159
4.1.3 缺失值的刪除 161
4.1.4 缺失值的填充 163
4.2 數(shù)據(jù)的標準化 168
4.2.1 MAX-MIN歸一化 168
4.2.2 零均值標準化 171
4.3 數(shù)據(jù)變換與數(shù)據(jù)離散化 172
4.3.1 類別型數(shù)據(jù)的啞變量處理 172
4.3.2 連續(xù)型變量的離散化 174
4.4 函數(shù)的映射與應(yīng)用 178
4.4.1 map函數(shù)的使用 178
4.4.2 apply函數(shù)的使用 183
4.4.3 applymap函數(shù)的使用 188
4.5 索引的高階應(yīng)用 189
4.5.1 重建索引 189
4.5.2 設(shè)置索引 190
4.5.3 重置索引 193
4.5.4 分層索引 195
4.5.5 實戰(zhàn):《指環(huán)王》臺詞數(shù)量分析 201
4.6 數(shù)據(jù)的融合與堆疊 205
4.6.1 merge按鍵數(shù)據(jù)融合 205
4.6.2 concat按軸堆疊數(shù)據(jù) 210
4.6.3 append數(shù)據(jù)項追加 214
4.7 數(shù)據(jù)的聚合和分組操作 215
4.7.1 聚合操作 216
4.7.2 分組與聚合 217
4.7.3 分組與轉(zhuǎn)換 220
4.8 數(shù)據(jù)重塑與透視 224
4.8.1 數(shù)據(jù)重塑 224
4.8.2 數(shù)據(jù)透視 228
4.8.3 實戰(zhàn):《指環(huán)王》中的透視表 230
4.9 實戰(zhàn):泰坦尼克幸存者數(shù)據(jù)預(yù)處理分析 234
4.9.1 數(shù)據(jù)簡介 234
4.9.2 數(shù)據(jù)探索 236
4.9.3 缺失值處理 238
4.10 本章小結(jié) 241
4.11 思考與練習(xí) 242
第5章 Matplotlib可視化分析 244
5.1 可視化與Matplot 245
5.2 Matplot繪制簡單圖形 246
5.3 pyplot的常用方法 249
5.3.1 添加圖例與注釋 249
5.3.2 設(shè)置(中文)標題及坐標軸 251
5.3.3 添加網(wǎng)格線 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):谷歌流感趨勢數(shù)據(jù)可視化分析 287
5.10.1 谷歌流感趨勢數(shù)據(jù)描述 287
5.10.2 導(dǎo)入數(shù)據(jù)與數(shù)據(jù)預(yù)處理 288
5.10.3 繪制時序曲線圖 291
5.10.4 選擇合適的數(shù)據(jù)可視化表達 293
5.10.5 基于條件判斷的圖形繪制 296
5.10.6 繪制多個子圖 299
5.11 本章小結(jié) 300
5.12 思考與提高 301
第6章 可視化分析進階 304
6.1 絢麗多姿的Seaborn 305
6.1.1 Matplotlib與Seaborn對比 305
6.1.2 Seaborn的樣式設(shè)置 308
6.1.3 設(shè)置應(yīng)用模式與繪圖元素縮放比例 309
6.1.4 使用despine方法進行邊框控制 311
6.1.5 使用axes_style方法設(shè)置子圖風(fēng)格 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 手繪風(fēng)格的繪圖 338
6.3.1 手繪曲線 338
6.3.2 手繪柱狀圖 339
6.3.3 在手繪圖中添加中文卡通字體 340
6.3.4 手繪餅狀圖 343
6.4 實戰(zhàn):泰坦尼克幸存者數(shù)據(jù)可視化分析 345
6.4.1 導(dǎo)入數(shù)據(jù) 345
6.4.2 繪制幸存者情況 346
6.4.3 繪制乘客的其他信息 346
6.5 本章小結(jié) 351
6.6 思考與練習(xí) 351
第7章 時間序列數(shù)據(jù)分析 354
7.1 時間序列數(shù)據(jù)概述 355
7.2 日期和時間數(shù)據(jù)類型 356
7.2.1 datetime模塊 356
7.2.2 datetime轉(zhuǎn)換為timestamp 357
7.2.3 datetime轉(zhuǎn)換為str 359
7.2.4 datetime的加與減 359
7.2.5 NumPy中的日期模塊 360
7.3 時間序列對象的構(gòu)建與切片 362
7.3.1 時間序列構(gòu)造 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 頻率轉(zhuǎn)換 374
7.5.3 時期與周期的轉(zhuǎn)換 375
7.6 時間滑動窗口 376
7.7 重采樣、降采樣和升采樣 383
7.7.1 重采樣 383
7.7.2 降采樣中的常用參數(shù) 385
7.7.3 升采樣中的缺失值填充 387
7.8 實戰(zhàn):面向股票數(shù)據(jù)的時間序列分析 390
7.8.1 股票數(shù)據(jù)的獲取 390
7.8.2 設(shè)置百日滾動均線 393
7.8.3 繪制價格與成交量子圖 393
7.8.4 股票數(shù)據(jù)的K線圖繪制 395
7.9 本章小結(jié) 397
7.10 思考與練習(xí) 398