本書的編寫主要圍繞Python在企業(yè)中的數據分析工作實踐,著眼于構建完整的數據分析框架、方法和技能的培養(yǎng)和訓練。全書共10章,其中第1章和第2章介紹了進行Python數據分析的準備工作和Python基礎知識;第3~9章介紹了數據對象的讀寫、數據清洗和預處理、數據可視化、基本數據統(tǒng)計分析和高級數據建模分析、自然語言理解和文本挖掘、數據分析部署和應用等完整工作技能和方法;第10章介紹了數據分析在數據化運營中的完整應用思路、維度和框架。本書內容深入淺出,均以企業(yè)真實需求引導學習,具有很強的實用性和操作性。
本書可以作為普通高等院校本科、?平y(tǒng)計、商務分析、大數據等專業(yè)的課程教材,也可以作為從事數據分析工作的人員的參考用書。
1.作者經驗豐富。本書作者在數據分析領域工作10年,擁有大量的數據分析經驗、案例、場景和方法,并且在數據分析領域頗有口碑。
2.結構合理,層次清晰。本書內容圍繞數據分析展開,能將數據分析工作流程介紹清楚且完整、有用、實用,不僅能幫助讀者學到所學知識,更能幫助讀者快速用到數據分析實踐中。
3.案例與實訓豐富。本書不僅提供專業(yè)的理論知識,而且配有案例和課后實訓,幫助讀者快速了解Python數據分析知識。
宋天龍(TonySong),歷任Webtrekk中國區(qū)數據總監(jiān)(Webtrekk,德國最大的網站數據分析服務提供商),國美在線大數據中心經理,數據常青藤和數據研究與商業(yè)應用博主。蘿卜課堂和天善學院特邀講師,百度文庫認證作家、36大數據、站長之家、互聯(lián)網分析沙龍專欄作家。
第 1章 認識Python 1
1.1 Python與數據分析 1
1.1.1 Python的概念 1
1.1.2 數據分析與Python 2
1.2 如何準備Python程序環(huán)境 2
1.2.1 如何安裝Python程序 2
1.2.2 如何安裝第三方庫 3
1.3 Python數據分析庫 5
1.3.1 Pandas 5
1.3.2 Scipy 5
1.3.3 Numpy 5
1.3.4 Scikit-Learn 6
1.3.5 Statsmodels 6
1.3.6 Gensim 6
1.4 Python交互環(huán)境Jupyter 6
1.4.1 啟動Jupyter 7
1.4.2 Jupyter的功能區(qū) 7
1.4.3 Jupyter的常用操作 8
1.4.4 Jupyter的魔術命令 11
1.4.5 Jupyter的配置 13
1.5 執(zhí)行第 一個Python程序 14
1.6 新手常見誤區(qū) 16
1.6.1隨意升級庫到最新版本 16
1.6.2糾結于使用Python2還是Python3 16
1.6.3 糾結于選擇32位還是64位版本 16
實訓:打印自己的名字 17
思考與練習 17
第 2章 Python語言基礎 18
2.1 基礎規(guī)則 18
2.1.1 Python解釋器 18
2.1.2 編碼聲明 18
2.1.3 縮進和執(zhí)行域 18
2.1.4 長語句斷行 19
2.1.5 單行和多行注釋 19
2.1.6 變量的命名和賦值規(guī)則 20
2.2 數據類型 20
2.2.1 數字型數據 21
2.2.2字符型數據 21
2.2.3 日期型數據 22
2.2.4 數據類型的判斷與轉換 22
2.3 數據結構 24
2.3.1 列表和列表推導式 24
2.3.2 元組和元組推導式 27
2.3.3 字典和字典推導式 28
2.3.4 集合和集合推導式 30
2.3.5 數據結構的判斷與轉換 32
2.4 條件表達式與判斷 33
2.4.1 單層條件判斷 33
2.4.2 嵌套條件判斷 33
2.4.3 多條件判斷中的and和or 34
2.4.4 多條件判斷中的鏈式比較、all和any 34
2.4.5 基于條件表達式的賦值 35
2.5 循環(huán)和流程控制 35
2.5.1 for循環(huán)和條件表達式 35
2.5.2 while循環(huán)和條件表達式 36
2.5.3 循環(huán)嵌套 36
2.5.4 無限循環(huán) 36
2.5.5 break和continue控制 36
2.6 運算符 37
2.6.1 算術運算符 37
2.6.2 賦值運算符 38
2.6.3 比較運算符 39
2.6.4 邏輯運算符 39
2.6.5 成員運算符 39
2.6.6 身份運算符 40
2.6.7 運算符優(yōu)先級 40
2.7 字符串處理和正則表達式 41
2.7.1 字符串格式化的3種方法 41
2.7.2 字符串的編譯執(zhí)行 43
2.7.3 內置字符串處理方法 44
2.7.4 正則表達式應用 46
2.8 功能模塊的封裝 49
2.8.1 函數 49
2.8.2 匿名函數 50
2.8.3 類 51
2.9 高階計算函數的應用 53
2.9.1 map 53
2.9.2 reduce 53
2.9.3 filter 54
2.10 導入Python庫 55
2.10.1 導入標準庫和第三方庫 55
2.10.2 導入自定義庫 56
2.10.3 使用庫的別名 56
2.10.4 不同庫的導入順序 57
2.11 Pandas庫基礎 57
2.11.1 創(chuàng)建數據對象 57
2.11.2 查看數據信息 58
2.11.3 數據切片和切塊 59
2.11.4 數據篩選和過濾 60
2.11.5 數據預處理操作 61
2.11.6 數據合并和匹配 63
2.11.7 數據分類匯總 64
2.11.8 高級函數使用 64
2.12 新手常見誤區(qū) 65
2.12.1 錯誤的縮進導致功能范圍混亂 65
2.12.2 混淆賦值和條件判斷符號 65
2.12.3 列表長度與初始索引、終止索引誤用 66
2.12.4 表達式或功能缺少冒號 66
2.12.5 變量名的沖突問題 66
2.12.6 混淆int和round對浮點數的取整 67
實訓:對列表中的元素按不同邏輯處理 67
思考與練習 68
第3章 數據對象的讀寫 69
3.1 目錄與文件操作 69
3.1.1 獲取目錄信息 69
3.1.2 目錄的基本操作 70
3.1.3 路徑與目錄的組合與拆分 72
3.1.4 目錄的判斷 72
3.1.5 遍歷目錄 73
3.1.6 文件的基本操作 74
3.2數據文件的讀取與寫入 75
3.2.1 讀寫普通文件 75
3.2.2 讀寫csv、txt、tsv等數據文件 79
3.2.3 讀寫Excel文件 83
3.2.4 讀寫JSON文件 86
3.2.5 讀寫XML文件 88
3.2.6 讀寫SPSS Statistics /SAS/Stata數據文件 90
3.2.7 讀寫R數據文件 94
3.3數據庫的讀取與寫入 96
3.3.1讀寫結構化數據庫MySQL 96
3.3.2讀寫非結構化數據庫MongoDB 101
3.4 數據對象持久化 103
3.4.1使用pickle讀寫持久化對象 103
3.4.2使用sklearn讀寫持久化對象 104
3.5 新手常見誤區(qū) 105
3.5.1 不注意工作路徑導致無法找到文件 105
3.5.2 忽視不同操作系統(tǒng)下路徑的表示方法問題 105
3.5.3 文件對象未正常關閉導致數據或程序異!105
3.5.4 pickle讀寫對象無法執(zhí)行read和write方法 106
3.5.5 默認讀取的多段落數據末尾有\(zhòng)n而不處理 106
3.5.6 文件write寫入的對象不是字符串 107
實訓:多條件數據庫讀寫操作 107
思考與練習 108
第4章 數據清洗和預處理 109
4.1 數據審核 109
4.1.1 查看數據狀態(tài) 109
4.1.2 審核數據類型 109
4.1.3 分析數據分布趨勢 110
4.2 缺失值處理 111
4.2.1 查看缺失值記錄 111
4.2.2 查看缺失值列 112
4.2.3 NA值處理 112
4.3 異常值處理 113
4.3.1 基于經驗值的判斷和選擇 113
4.3.2 基于均值標準差的判斷和選擇 114
4.3.3 基于分位數的判斷和選擇 115
4.4 重復值處理 115
4.4.1 判斷缺失值 116
4.4.2 去除重復值 116
4.5 數據抽樣 116
4.5.1 隨機抽樣 116
4.5.2 分層抽樣 116
4.6 數據格式與值變換 117
4.6.1 字符串轉日期 117
4.6.2 提取日期和時間 118
4.6.3 提取時間元素 118
4.7 數據標準化和歸一化 120
4.7.1 Z-SCORE數據標準化 120
4.7.2 MaxMin數據歸一化 121
4.8 數據離散化和二元化 121
4.8.1 基于自定義區(qū)間的離散化 121
4.8.2 基于分位數法離散化 122
4.8.3 基于指定條件的二元化 122
4.9 分類特征處理 123
4.9.1 分類特征轉數值索引 123
4.9.2 OneHotencode 轉換 124
4.10 特征選擇 124
4.11 分詞 125
4.12 文本轉向量 127
4.13 新手常見誤區(qū) 127
4.13.1 沒有先做NA值處理導致后續(xù)清洗工作頻繁報錯 127
4.13.2 直接拋棄異常值 128
4.13.3 用數值索引代替分類字符串參與模型計算 128
4.13.4 使用分位數法離散化并做不同周期的數據對比 128
4.13.5 把抽樣當作一個必備工作環(huán)節(jié) 129
實訓:綜合性數據預處理 129
思考與練習 130
第5章 數據可視化 131
5.1 可視化應用概述 131
5.1.1 常用數據可視化庫 131
5.1.2 如何選擇恰當的可視化方式 132
5.2 簡單數據信息的可視化 133
5.2.1 使用條形圖和柱形圖表達數據差異 134
5.2.2 使用折線圖和柱形圖展示趨勢 136
5.2.3 使用餅圖和面積圖展示成分或結構信息 138
5.2.4 使用散點圖或蜂窩圖展示數據間關系 141
5.3 復雜數據信息的可視化 142
5.3.1 使用成對關系圖對多組數據同時做關系可視化 142
5.3.2 使用帶回歸擬合線的散點圖做回歸擬合的可視化 143
5.3.3 使用熱力圖做相關關系可視化 144
5.3.4 使用日歷圖展示不同時間下的銷售分布 145
5.3.5 使用箱型圖和散點圖查看數據分布規(guī)律 146
5.3.6 使用分類柱形圖展示多個維度細分值分布 147
5.3.7 使用等高線繪制核密度分布 148
5.3.8 使用坡度圖繪制數據變化差異 149
5.3.9 使用漏斗圖展示不同轉化環(huán)節(jié)的完成情況 150
5.3.10 使用關系圖展示不同元素見的關聯(lián)關系 151
5.3.11 使用雷達圖展示多個元素在不同屬性上的差異 153
5.3.12 用詞云展示關鍵字分布 154
5.4 新手常見誤區(qū) 155
5.4.1 沒有明確的可視化目標 155
5.4.2 通過特殊圖形設置誤導受眾 156
5.4.3 選擇過于“花哨”的圖形卻忽略了可視化的本質 156
5.4.4 缺乏根據信息表達目標選擇“最佳”圖形的意識 156
5.4.5 信息過載 156
實訓:綜合性數據可視化 157
思考與練習 157
第6章 基本數據統(tǒng)計分析 159
6.1 描述性統(tǒng)計分析 159
6.1.1 通用描述信息 160
6.1.2 集中性趨勢 161
6.1.3 離散性趨勢 162
6.2 交叉對比和趨勢分析 163
6.2.1 交叉對比分析 163
6.2.2 交叉趨勢分析 164
6.3 結構與貢獻分析 165
6.3.1 占比分析 166
6.3.2 二八法則分析 166
6.3.3 ABC分析法 168
6.3.4 長尾分析 170
6.4 分組與聚合分析 171
6.4.1 使用分位數聚合分析 171
6.4.2 基于均值和標準差的聚合分析 172
6.5 相關性分析 173
6.5.1 Pearson相關性分析 173
6.5.2 Spearman相關性分析 174
6.5.3 Kendall相關性分析 175
6.6 主成分分析與因子分析 175
6.6.1 主成分分析 176
6.6.2 因子分析 177
6.7 漏斗、路徑與歸因分析 178
6.7.1 漏斗分析 178
6.7.2 路徑分析 179
6.7.3 歸因分析 179
6.8 新手常見誤區(qū) 181
6.8.1 把數據陳述當作數據結論 181
6.8.2 通過單一指標得出數據結論 181
6.8.3 注重分析過程但沒有分析結論 182
6.8.4 忽視數據分析的落地性 182
實訓:基本數據統(tǒng)計分析思維訓練 182
思考與練習 183
第7章 高級數據建模分析 184
7.1使用KMeans聚類算法挖掘用戶潛在特征 184
7.1.1 算法引言 184
7.1.2 案例背景 185
7.1.3 數據源概述 185
7.1.4 案例過程 185
7.1.5 用戶特征分析 189
7.2 使用CART預測用戶是否會產生轉化 189
7.2.1 算法引言 189
7.2.2 案例背景 190
7.2.3 數據源概述 190
7.2.4 案例過程 191
7.2.5 分析用戶的轉化可能性 194
7.3 使用主成分分析+嶺回歸預測廣告UV量 195
7.3.1 算法引言 195
7.3.2 案例背景 196
7.3.3 數據源概述 196
7.3.4 案例過程 196
7.3.5 獲得廣告UV量 200
7.3.6 拓展思考 201
7.4 使用Apriori關聯(lián)分析提高商品銷量 201
7.4.1 算法引言 201
7.4.2 案例背景 202
7.4.3 數據源概述 202
7.4.4 案例過程 202
7.4.5 通過關聯(lián)分析結果提高銷量 207
7.5 使用Prefixspan序列關聯(lián)找到用戶下一個訪問頁面 207
7.5.1 算法引言 207
7.5.2 案例背景 208
7.5.3 數據源概述 208
7.5.4 案例過程 208
7.5.5 通過序列模式引導用戶頁面訪問行為 212
7.5.6 拓展思考 213
7.6 使用auto ARIMA時間序列預測線下門店銷量 213
7.6.1 算法引言 213
7.6.2 案例背景 214
7.6.3 數據源概述 214
7.6.4 案例過程 215
7.6.5 得到未來7天的銷售量 220
7.7 使用IsolationForest異常檢測找到異常廣告流量 220
7.7.1 算法引言 220
7.7.2 案例背景 221
7.7.3 數據源概述 222
7.7.4 案例過程 224
7.7.5 分析異常檢測結果 227
7.8 新手常見誤區(qū) 229
7.8.1 認為某種算法適用于所有應用場景 229
7.8.2 并不是模型擬合程度越高效果越好 230
7.8.3 應用回歸模型時忽略自變量是否產生變化 230
7.8.4 關聯(lián)分析可以跨維度做分析 231
7.8.5 很多時候模型得到的異常未必是真的異!231
實訓 231
實訓1 預測用戶是否流失 231
實訓2 預測目標用戶的總訂單金額 232
實訓3 找到整體用戶頻繁購買的商品 233
思考與練習 233
第8章 自然語言理解和文本挖掘 234
8.1 使用結巴分詞提取用戶評論關鍵字 234
8.1.1 算法引言 234
8.1.2 案例背景 235
8.1.3 數據源概述 235
8.1.4 案例過程 235
8.1.5 分析用戶評論關鍵字 238
8.2 使用LDA主題模型做新聞主題分析 239
8.2.1 算法引言 239
8.2.2 案例背景 240
8.2.3 數據源概述 240
8.2.4 案例過程 240
8.2.5 分析主題結果 242
8.3 使用隨機森林預測用戶評分傾向 244
8.3.1 算法引言 244
8.3.2 案例背景 245
8.3.3 數據源概述 245
8.3.4 案例過程 245
8.3.5 預測新用戶的評分 248
8.4 使用TextRank自動生成文章摘要和關鍵短語 249
8.4.1 算法引言 249
8.4.2 案例背景 250
8.4.3 數據源概述 250
8.4.4 案例過程 250
8.5 新手常見誤區(qū) 252
8.5.1 混淆中文分詞與英文分詞引擎 252
8.5.2 只用詞頻計算詞的重要性 252
8.5.3 忽略文本預處理環(huán)節(jié) 253
實訓:提取關鍵字、關鍵短語和摘要信息 253
思考與練習 254
第9章 數據分析部署和應用 255
9.1 批量合并數據文件 255
9.1.1 應用背景 255
9.1.2 工作需求 255
9.1.3 實現(xiàn)過程 256
9.2 從數據庫中抽取數據并生成結果文件 259
9.2.1 應用背景 259
9.2.2 工作需求 260
9.2.3 實現(xiàn)過程 260
9.3 發(fā)送普通Email并附帶數據文件 264
9.3.1 應用背景 264
9.3.2 工作需求 264
9.3.3 實現(xiàn)過程 265
9.4 發(fā)送HTML富媒體樣式的郵件 269
9.4.1 應用背景 269
9.4.2 工作需求 269
9.4.3 實現(xiàn)過程 269
9.5 系統(tǒng)自動執(zhí)行Python腳本和數據任務 272
9.5.1 應用背景 272
9.5.2 工作需求 272
9.5.3 實現(xiàn)過程 272
9.6 新手常見誤區(qū) 277
9.6.1 不注重自動化的工作方式 277
9.6.2 數據輸出物的美觀度也是一種數據價值 278
9.6.3 缺乏對自動化作業(yè)任務的監(jiān)控 278
實訓:將日常發(fā)送郵件工作自動化 278
思考與練習 279
第 10章 數據分析與數據化運營 280
10.1 數據報告矩陣 280
10.1.1 臨時分析 280
10.1.2 實時分析 280
10.1.3 日常報告 281
10.1.4 專題分析 282
10.1.5 項目分析 282
10.2 分析指標矩陣 283
10.2.1 會員運營 283
10.2.2 商品運營 284
10.2.3 廣告運營 285
10.2.4 網站運營 286
10.3 探索維度矩陣 286
10.3.1 目標端 286
10.3.2 媒體端 287
10.3.3 用戶端 288
10.3.4 網站端 289
10.3.5 競爭端 289
10.4 應用場景矩陣 290
10.4.1 效果預測 290
10.4.2 結論定義 290
10.4.3 數據探究 291
10.4.4 業(yè)務執(zhí)行 291
10.5 新手常見誤區(qū) 292
10.5.1 把數據陳列當作數據結論 292
10.5.2 數據結論產生于單一指標 292
10.5.3 由數據立場扭曲的數據結論 293
10.5.4 忽視多種數據落地方式 293
實訓:搭建針對企業(yè)的數據化運營應用體系 294
思考與練習 294