發表於2024-11-22
這是一本務實之作,充分體現數據分析流程的各項環節,包含數據的采集、清洗和探索性分析,並通過大傢耳熟能說的Python工具加以實操。
本書作為數據分析的入門圖書,以Python語言為基礎,介紹瞭數據分析的整個流程。本書內容涵蓋數據的獲取(即網絡爬蟲程序的設計)、前期數據的清洗和處理、運用機器學習算法進行建模分析,以及使用可視化的方法展示數據及結果。首先,書中不會涉及過於高級的語法,不過還是希望讀者有一定的語法基礎,這樣可以更好地理解本書的內容。其次,本書重點在於應用Python來完成一些數據分析和數據處理的工作,即如何使用Python來完成工作而非專注於Python語言語法等原理的講解。本書的目的是讓初學者不論對數據分析流程本身還是Python語言,都能有一個十分直觀的感受,為以後的深入學習打下基礎。最後,讀者不必須按順序通讀本書,因為各個章節層次比較分明,可以根據興趣或者需要來自行安排。例如第5章介紹瞭一些實戰的小項目,有趣且難度不大,大傢可以在學習前麵內容之餘來閱讀這部分內容。
瀋祥壯
自學Python兩年,以數據分析為主綫,係統學習瞭數據的采集,處理、分析和可視化。在研究統計機器學習理論的同時,使用Python語言實現瞭部分統計學習算法。研究方嚮包括數據采集,數據挖掘,統計機器學習及圖像處理。
這是一本務實之作,充分體現數據分析流程的各項環節,包含數據的采集、清洗和探索性分析,並通過大傢耳熟能說的Python工具加以實操。對Python的初學者來說,可以從本書學到數據分析的思維和實戰。這是一本不錯的入門指南。
——劉順祥(公眾號:數據分析1480)嘉橋信息科技有限公司 高級數據分析師
1 準備 1
1.1 開發環境搭建 2
1.1.1 在Ubuntu係統下搭建Python集成開發環境 2
1.1.2 在Windows係統下搭建Python集成開發環境 13
1.1.3 三種安裝第三方庫的方法 16
1.2 Python基礎語法介紹 19
1.2.1 if__name__=='__main__' 20
1.2.2 列錶解析式 22
1.2.3 裝飾器 23
1.2.4 遞歸函數 26
1.2.5 麵嚮對象 27
1.3 The Zen of Python 28
參考文獻 30
2 數據的獲取 31
2.1 爬蟲簡介 31
2.2 數據抓取實踐 33
2.2.1 請求網頁數據 33
2.2.2 網頁解析 38
2.2.3 數據的存儲 46
2.3 爬蟲進階 50
2.3.1 異常處理 50
2.3.2 robots.txt 58
2.3.3 動態UA 60
2.3.4 代理IP 61
2.3.5 編碼檢測 61
2.3.6 正則錶達式入門 63
2.3.7 模擬登錄 69
2.3.8 驗證碼問題 74
2.3.9 動態加載內容的獲取 84
2.3.10 多綫程與多進程 93
2.4 爬蟲總結 101
參考文獻 102
3 數據的存取與清洗 103
3.1 數據存取 103
3.1.1 基本文件操作 103
3.1.2 CSV文件的存取 111
3.1.3 JSON文件的存取 116
3.1.4 XLSX文件的存取 121
3.1.5 MySQL數據庫文件的存取 137
3.2 NumPy 145
3.2.1 NumPy簡介 145
3.2.2 NumPy基本操作 146
3.3 pandas 158
3.3.1 pandas簡介 158
3.3.2 Series與DataFrame的使用 159
3.3.3 布爾值數組與函數應用 169
3.4 數據的清洗 174
3.4.1 編碼問題 174
3.4.2 缺失值的檢測與處理 175
3.4.3 去除異常值 181
3.4.4 去除重復值與冗餘信息 183
3.4.5 注意事項 185
參考文獻 187
4 數據的分析及可視化 188
4.1 探索性數據分析 189
4.1.1 基本流程 189
4.1.2 數據降維 197
4.2 機器學習入門 199
4.2.1 機器學習簡介 200
4.2.2 決策樹――機器學習算法的應用 202
4.3 手動實現KNN算法 205
4.3.1 特例――最鄰近分類器 205
4.3.2 KNN算法的完整實現 213
4.4 數據可視化 215
4.4.1 高質量作圖工具――matplotlib 215
4.4.2 快速作圖工具――pandas與matplotlib 223
4.4.3 簡捷作圖工具――seaborn與matplotlib 226
4.4.4 詞雲圖 230
參考文獻 232
5 Python與生活 234
5.1 定製一個新聞提醒服務 234
5.1.1 新聞數據的抓取 235
5.1.2 實現郵件發送功能 237
5.1.3 定時執行及本地日誌記錄 239
5.2 Python與數學 241
5.2.1 估計π值 242
5.2.2 三門問題 245
5.2.3 解決LP與QP問題(選讀) 247
5.3 QQ群聊天記錄數據分析 251
參考文獻 256
3.4 數據的清洗
數據的清洗工作,在整個數據分析的流程中占據重要的地位,需要消耗大量的時間和精力。因為數據沒有清洗乾淨會為後續的分析造成很多不必要的麻煩,嚴重時還可能得到錯誤的分析結果,事倍功半。所以數據的清洗是非常值得重視的。作為數據分析的入門書,這裏將以pandas庫為主,介紹一些常用的、清洗數據的方法。
3.4.1 編碼問題
我們接觸到的數據中有時會包含大量的文本數據,而文本數據的編碼是大多數人都感到頭疼的事情。其實,在介紹爬蟲的時候,獲取網頁數據可以通過chardet檢測編碼來確保編碼的正確性。當然在編寫爬蟲程序時,這是一種極為有效的辦法。這裏介紹另一種方法來解決更加普遍的編碼問題,那就是ftfy庫。
先來看一個簡單的爬蟲。
In [5]: import requests
In [6]: data = requests.get('http://www.baidu.com')
In [7]: data
Out[7]:
In [8]: data.text()
運行輸齣如下所示(部分)。
class=cp-feedback>æx84x8fè§x81åx8fx8dé¦x88
京ICPè¯x81030173åx8f?
/gs.gif>
body>
'相信讀者對這段代碼已經非常熟悉瞭,程序隻是簡單地請求瞭百度主頁的內容。但是從結果可以看齣,輸齣的文本並沒有中文,顯然存在編碼問題。
用ftfy解決問題的代碼如下。
In [15]: from ftfy import fix_text
In [16]: fix_text(data.text)
運行輸齣如下所示(部分)。
; 京ICP證030173號
data-lazyload=//www.baidu.com/img/gs.gif>
可以看到,隻需要簡單的調用另外一行代碼就可以修復編碼問題。ftfy還有許多其他的特性,就不再介紹。如果讀者在工作中需要處理更復雜的編碼問題,可以參考ftfy官方文檔進行進一步學習。
3.4.2 缺失值的檢測與處理
缺失值的檢測,代碼如下。
In [37]: df = DataFrame({'c1':[0,1,2,None], 'c2':[1,None,2, 3]})
In [38]: df
Out[38]:
c1 c2
0 0.0 1.0
1 1.0 NaN
2 2.0 2.0
3 NaN 3.0
In [39]: df.isnull()
Out[39]:
c1 c2
0 False False
1 False True
2 False False
3 True False
In [40]: df.isnull().sum()
Out[40]:
c1 1
c2 1
dtype: int64
可以看到Python中的None在pandas被識彆為缺失值NaN(Not a Number),而且我們可以通過isnull()進行檢測。再通過sum(),可以得到行或者列的缺失值匯總。在當前列缺失值不太多的時候,可以通過多種方法進行缺失值的填充。
可以直接指定特定的值來填補缺失值,如下所示。
In [57]: df.fillna('missing')
Out[57]:
c1 c2
0 0 1
1 1 missing
2 2 2
3 missing 3
In [58]: df.fillna(df.mean())
Out[58]:
c1 c2
0 0.0 1.0
1 1.0 2.0
2 2.0 2.0
3 1.0 3.0
也可以指定相應的方法,根據周圍的值來填補缺失值,如下所示。
In [68]: df.ix[0,1] = None
In [69]: df
Out[69]:
c1 c2
0 0.0 NaN
1 1.0 NaN
2 2.0 2.0
3 NaN 3.0
In [70]: df.fillna(method="bfill", limit=1)
Out[70]:
c1 c2
0 0.0 NaN
1 1.0 2.0
2 2.0 2.0
3 NaN 3.0
下麵進行簡要說明。
bfill
這裏指定瞭bfill(back fill)方法進行填充,即為使用缺失值後麵的數據進行填充,如第二列第二個缺失值,就被填充為其後麵的2.0,而第一列的缺失值後麵沒有值,就繼續保持缺失狀態。類似的填充方法還有ffill,用其前麵的值進行填充。
limit
使用limit是為瞭限製連續填充。這裏選擇1錶示一列中有多個缺失值相鄰時,隻填充最近的一個缺失值。
Python作為一門優秀的編程語言,近年來受到很多編程愛好者的青睞。一是因為Python本身具有簡捷優美、易學易用的特點;二是由於互聯網的飛速發展,我們正迎來大數據的時代,而Python無論是在數據的采集與處理方麵,還是在數據分析與可視化方麵都有獨特的優勢。我們可以利用Python便捷地開展與數據相關的項目,以很低的學習成本快速完成項目的研究。本書本著實用性的目的,著眼於整個數據分析的流程,介紹瞭從數據采集到可視化的大緻流程。希望藉此為Python初學者打開數據分析領域的大門,初窺數據分析的奧秘。
本書的主要內容
第1章主要講解瞭在Ubuntu和Windows係統下,Python集成開發環境的搭建。考慮到初學者容易為安裝第三方庫犯難,又介紹瞭三種簡單實用的方法來安裝這些常見的庫。接著對幾個後麵要用到的高級語法進行瞭簡單介紹,為之後的應用打下基礎。
第2章集中講解瞭數據采集的流程,即網絡爬蟲程序的設計與實現。首先本章沒有拘泥於使用Python的內置庫urllib庫進行實現,而是直接介紹瞭requests和其他更加簡捷強大的庫來完成程序的設計。在進階內容中,對常見的編碼問題、異常處理、代理IP、驗證碼、機器人協議、模擬登錄,以及多綫程等相關問題給齣瞭解決的方案。
第3章講解數據的清洗問題。在具體講解清洗數據之前,先介紹瞭TXT、XLSX、JSON、CSV等各種文件的導入和導齣的方法,並介紹瞭Python與MySQL數據庫交互的方式。接著介紹瞭NumPy和pandas庫的基本使用方法,這是我們用於數據處理和科學計算的兩個強大的工具。最後綜閤以上的學習介紹瞭數據的去重、缺失值的填補等經典的數據清洗方法。
第4章首先講解探索性數據分析的應用,並且簡單介紹瞭機器學習基本知識。然後演示如何應用sklearn庫提供的決策樹和最鄰近算法來處理分類問題,並嘗試根據算法原理手動實現最鄰近算法。最後介紹如何使用pandas、matplotlib和seaborn這三個庫來實現數據的可視化。
第5章是綜閤性學習的章節,講解瞭三個小項目的完整實現過程,旨在通過操作生活中真正的數據來強化前麵基礎內容的學習。
本書的讀者對象
本書麵嚮想從事數據工作的Python初學者。由於本書並不對Python的基礎語法做詳細的講解,所以希望讀者有一定的語法基礎。
測試環境及代碼
我們使用的語法是基於Python 3的,具體是Python 3.6,用到的第三方庫也已經全麵支持此版本,所以讀者不必擔心相關的版本問題;測試環境為Ubuntu 16.04 LTS 64-Bit。本書中使用的全部代碼及相關數據已經托管至Github, 讀者可以進入https://github.com/shenxiangzhuang/PythonDataAnalysis進行下載。
聯係作者
雖然本書隻是入門級圖書,但是限於筆者水平有限,難免會存在一些錯誤,有些地方的錶述可能也不是那麼準確。非常歡迎讀者指齣本書的不當之處或提齣建設性的意見。筆者的電子郵件地址是datahonor@gmail.com。
緻謝
在本書的撰寫過程中受到過很多人的幫助,這裏特彆感謝劉鬆學長,感謝學長對筆者本人長久以來的幫助,從他那裏我學到瞭很多關於Python語言、機器學習以及計算機視覺等相關知識。另外,特彆感謝IT工作者謝滿銳先生對本書的細心審校,也感謝他為本書的進一步修改提齣建設性意見。同時,感謝電子工業齣版社石倩、楊嘉媛編輯的幫助。最後,本書參閱瞭大量的國內外的文獻,這裏對有關作者錶示衷心的感謝。
Python數據分析入門――從數據獲取到可視化 下載 mobi pdf epub txt 電子書 格式 2024
Python數據分析入門――從數據獲取到可視化 下載 mobi epub pdf 電子書京東的書還是很便宜的,五摺還是很好的!而且送到傢,完美
評分書不錯,領進門,看得懂
評分這個還可以吧
評分加油學習機器學習,找到好工作
評分很好很好很好很好很好很好很好很好很好很好很好很好
評分非常好的書,剛剛收到,有時間就學習學習
評分爬蟲不難,爬數據不難,難在數據清洗,得到乾淨的數據。每一本此類的書都要講python基礎,浪費篇幅。
評分本書係統講解的深度學習的基本知識,以及使用深度學習解決實際問題,詳細介紹瞭如何構建及優化模型,並針對不同的問題給齣不同的解決方案,通過不同的例子展示瞭在具體項目中應用和實踐經驗,是買分裝好的,深度學習的入門書就是旗艦手機
評分好書,懶人不多留言瞭,留著時間看書……居然還不能連續評價……
Python數據分析入門――從數據獲取到可視化 mobi epub pdf txt 電子書 格式下載 2024