Python數據整理 Data Wrangling with Python: Simplify your ETL processes with these hands-on data sanitation tips, tricks and best practices

Tirthajyoti Sarkar, Shubhadeep Roychowdhury 馬羚 姚成柱 呂曉峰 鄧力 張振 譯 譯

買這商品的人也買了...

商品描述

為使數據有用且有意義,必須對其進行整理和提煉。
本書將向讀者傳輸這些過程背後的所有核心思想,
並讓讀者掌握該領域中*通俗的工具和技術的相關知識。
    本書從Python基礎知識開始,主要聚焦於數據結構,接著簡要介紹數據整理的基本工具NumPy和pandas庫,
之後介紹如何使用相同的Python後端從各種不同的數據源(如internet、大型數據庫或Excel財務表)中提取和轉換數據,
以及如何根據下游的分析工具需求,處理缺失或不正確的數據並重新格式化數據。
讀者將通過現實世界的示例和數據集學習這些相關概念。
*後,通過本書附錄中的活動練習,讀者將有足夠的信心來處理大量的數據源,有效地提取、清理、轉換和格式化數據。

作者簡介

Tirthajyoti Sarkar

博士是半導體技術領域的 工程師,他將前沿的數據科學與機器學習技術應用於設計自動化和預測分析,
並定期撰寫關於Python編程和數據科學主題的文章。
他擁有伊利諾伊大學的博士學位和斯坦福大學與麻省理工學院的人工智能和機器學習的證書。


   Shubhadeep Roychowdhury

是一家總部在巴黎的網絡安全初創公司的 軟件工程師,目前致力於應用 的計算機視覺、數據工程算法和工具開發 產品。
他經常撰寫Python算法實現和類似主題的文章。
他擁有西孟加拉邦科技大學的計算機科學碩士學位和斯坦福大學的機器學習證書。

目錄大綱

目錄
譯者序
前言
第1章 Python數據整理入門1
1.1 引言1
1.2 Python數據整理3
1.3 列表、集合、字典、元組和字符串3
1.3.1 列表4
練習1:訪問列表成員 4
練習2:生成列表5
練習3:遍歷列表並檢查成員7
練習4:列表排序8
練習5:生成隨機列表9
活動1:處理列表10
1.3.2 集合11
1.3.3 字典13
練習6:訪問和設置字典中的值13
練習7:遍歷字典14
練習8:再次討論 值列表問題14
練習9:刪除字典中的值15
練習10:字典推導式16
1.3.4 元組16
練習11:處理元組17
1.3.5 字符串18
練習12:訪問字符串18
練習13:字符串切片19
練習14:字符串拆分與合併20
活動2:分析多行字符串並生成 單詞數量21
1.4 小結22

第2章 數據結構和文件處理23
2.1 引言23
2.2 數據結構23
2.2.1 迭代器24
練習15:迭代器介紹24
2.2.2 棧25
練習16:在Python中實現棧26
練習17:使用用戶定義的方法實現棧26
2.2.3 Lambda表達式28
練習18:用Lambda表達式證明三角恆等式28
練習19:用於排序的Lambda表達式29
練習20:多元素成員檢查30
2.2.4 隊列30
練習21:在Python中實現隊列31
活動3:Permutations、迭代器、Lambda、列表32
2.3 Python基本文件操作33
練習22:寫入和讀取環境變量33
練習23:打開和關閉文件34
練習24:逐行讀取文件36
練習25:寫入文件37
活動4:設計專屬CSV解析器38
2.4 小結39

第3章 NumPy、pandas和Matplotlib簡介40
3.1 引言40
3.2 NumPy數組操作40
練習26:從列表中創建NumPy數組41
練習27:兩個NumPy數組相加42
練習28:NumPy數組的數學運算43
練習29:NumPy數組的 數學運算43
練習30:使用arange和linspace生成數組44
練習31:創建多維數組45
練習32:二維數組的維度、形狀、大小和數據類型46
練習33:全零、全一、隨機、單位矩陣和向量46
練習34:reshape和 ravel函數48
練習35:索引和切片49
練習36:數組操作(數組-數組、數組-標量和通用函數)52
3.3 pandas的DataFrame54
練習37:創建pandas序列55
練習38:pandas序列和數據處理56
練習39:創建pandas DataFrame57
練習40:查看部分DataFrame58
練習41:創建和刪除新的列或行61
3.4 NumPy和pandas的統計與可視化63
3.4.1 基本描述性統計(用於可視化的Matplotlib庫)63
練習42:通過散點圖介紹Matplotlib64
3.4.2 統計指標的定義—集中趨勢和分佈65
3.4.3 隨機變量與概率分佈66
3.4.4 統計和可視化中的數據整理68
3.4.5 DataFrame的基本描述性統計計算68
練習43:從均勻分佈生成隨機數68
練習44:從二項分佈和條形圖生成隨機數69
練習45:從正態分佈和直方圖生成隨機數70
練習46:從DataFrame計算描述性統計71
練習47:內置繪圖實用工具74
活動5:從CSV文件生成統計數據75
3.5 小結75

第4章 深入學習Python數據整理77
4.1 引言77
4.2 選取子集、過濾和分組77
4.2.1 選取子集78
練習48:從Excel文件加載和檢查超市的銷售數據78
練習49:unique函數80
4.2.2 條件選擇與布爾過濾81
練習50:設定和重置索引84
4.2.3 分組86
練習51:GroupBy方法86
4.3 處理缺失值和檢測異常值89
4.3.1 pandas中的缺失值89
練習52:用fillna填充缺失值91
練習53:用dropna刪除缺失值93
4.3.2 使用簡單的統計測試進行異常值檢測94
4.4 合併數據的方法:concat、merge和join96
練習54:concat方法96
練習55:merge方法(通過公共鍵)97
練習56:join方法100
4.5 pandas的實用方法102
4.5.1 隨機抽樣102
練習57:使用sample方法隨機抽樣102
4.5.2 value_counts方法103
4.5.3 數據透視表功能104
練習58:按列值排序—sort_values方法105
練習59:使用apply方法實現用戶自定義函數的靈活性107
活動6:成人收入數據集的使用109
4.6 小結110

第5章 適應不同類型的數據源112
5.1 引言112
5.2 從不同的基於文本的(和非文本的)源中讀取數據112
5.2.1 本章提供的數據文件113
5.2.2 本章需安裝的庫113
5.2.3 從CSV文件中讀取文件113
練習60:從缺少表頭的CSV文件中讀取數據113
練習61:讀取不以逗號為分隔符的CSV文件115
練習62:重置CSV文件的表頭116
練習63:讀取CSV文件時跳過初始行和頁腳116
練習64:結合使用skiprows和nrows來讀取小塊數據118
5.2.4 使用sheet_name從Excel文件讀取數據並處理不同的sheet_name120
5.2.5 從文本文件中讀取數據121
練習65:讀取一般分隔的文本文件121
5.2.6 從非文本源中讀取數據121
練習66:從URL中直接讀取HTML表121
練習67:從JSON文件中讀取數據123
練習68:從PDF文件讀取表格數據124
5.3 BeautifulSoup 4和網頁解析簡介126
練習69:使用BeautifulSoup讀取HTML文件並提取內容127
練習70:DataFrame和BeautifulSoup131
練習71:以Excel文件格式導出DataFrame 132
練習72:使用bs4棧文檔中的URL133
活動7:從網頁讀取表格數據並創建DataFrame133
5.4 小結134

第6章 學習數據整理的隱藏秘密135
6.1 引言135
6.2 列表推導式和zip函數136
6.2.1 生成器表達式簡介136
練習73:生成器表達式136
練習74:一行生成器表達式137
練習75:提取包含單個單詞的列表138
6.2.2 zip函數140
練習76:zip函數140
練習77:處理雜亂的數據140
6.3 數據格式化141
6.3.1 %運算符141
6.3.2 使用format函數143
練習78:使用{}表示數據144
6.4 識別並清除異常值145
練習79:數值數據中的異常值146
練習80:使用z-score去除異常值148
練習81:字符串的模糊匹配149
活動8:異常值和缺失數據的處理150
6.6 小結151

第7章 網絡抓取和數據收集152
7.1 引言152
7.2 網絡抓取和BeautifulSoup庫的基礎152
7.2.1 Python中的庫152
7.2.2 requests庫153
練習82:使用requests庫從Wikipedia主頁獲取響應153
練習83:檢查網絡請求的狀態154
練習84:創建一個函數來解碼響應的內容並檢查其長度155
7.2.3 BeautifulSoup庫156
練習85:從BeautifulSoup對像中提取人類可讀的文本156
練習86:使用 bs4技術提取相關文本160
練習87:創建一個緊湊函數來從Wikipedia主頁提取“On this day”文本163
7.3 從XML讀取數據164
練習88:創建XML文件並讀取XML元素對象164
練習89:查找樹(元素)中的各種數據元素165
7.3.1 從本地XML文件讀取數據到ElementTree對象166
練習90:遍歷樹,找到根,並探索所有子節點的標籤和屬性166
練習91:使用text方法提取有意義的數據167
7.3.2 使用循環提取和輸出人均GDP信息168
練習92:查找並輸出每個 的所有鄰國169
練習93:通過網絡抓取獲得的XML數據的簡單使用演示169
7.4 從API讀取數據172
7.4.1 定義基URL(或API端點)172
練習94:定義和測試從API提取 數據的函數173
7.4.2 使用內置的JSON庫讀取和檢查數據174
7.4.3 輸出所有數據元素175
7.4.4 使用函數提取包含關鍵信息的DataFrame176
練習95:通過建立一個 信息的小型數據庫來測試這個函數177
7.5 正則表達式的基礎178
7.5.1 網絡抓取中的正則表達式178
練習96:使用match方法檢查模式是否與字符串或序列匹配179
7.5.2 使用compile方法創建正則表達式程序179
練習97:編譯程序以匹配對象180
練習98:在匹配中使用附加參數來檢查特定位置的匹配180
7.5.3 正則表達式中的search方法182
練習99:正則表達式中的search方法182
練習100:使用Match對象的span方法來定位匹配模式的位置182
練習101:使用search進行單字符模式匹配的示例183
練習102:字符串開頭或結尾的模式匹配示例184
7.5.4 多種匹配模式185
練習103:多字符模式匹配示例185
練習104:貪婪匹配與非貪婪匹配186
練習105:控制重複次數的匹配187
練習106:匹配字符集188
練習107:在正則表達式中使用OR運算符190
7.5.5 findall方法191
活動9:從古騰堡提取 00的電子書191
活動10:通過讀取API構建自己的電影數據庫192
7.6 小結193

第8章 關係數據庫管理系統和結構化查詢語言195
8.1 引言195
8.2 RDBMS和SQL概述196
8.2.1 RDBMS是如何組織的196
8.2.2 SQL196
8.3 使用RDBMS(MySQL/PostgreSQL/SQLite)199
8.3.1 使用SQLite處理單個表199
練習108:連接到SQLite中的數據庫199
練習109:SQLite中的DDL和DML命令200
練習110:對數據庫中的值進行排序202
練習111: 改表的結構並 新新添加的字段202
練習112: 對錶中的值進行分組203
8.3.2 數據庫中的關係映射204
練習113:刪除行208
練習114:RDBMS和DataFrame209
活動11:從數據庫正確檢索數據210
8.4 小結212

第9章 數據整理在現實生活中的應用213
9.1 引言213
9.2 將所學知識應用於現實生活中的數據整理任務213
活動12:數據整理任務—修復聯合國數據214
活動13:數據整理任務—清理GDP數據215
活動14:數據整理任務—合併聯合國數據和GDP數據216
活動15:數據整理任務—將新數據連接到數據庫217
9.3 數據整理拓展延伸217
9.3.1 成為數據科學家所需的額外技能217
9.3.2 大數據和雲技術的基礎知識218
9.3.3 數據整理的地位219
9.3.4 掌握機器學習的技巧和竅門220
9.4 小結221
附錄 活動實施步驟222