隨著數(shù)據(jù)分析和人工智能風暴的來臨,Python也變得越來越火熱。它就像一把利劍,使我們能隨心所欲地做著各種分析與研究。在研究機器學習、深度學習與人工智能之前,我們有必要靜下心來學習一下Python基礎知識、基于Python的網(wǎng)絡數(shù)據(jù)爬取及分析,這些知識點都將為我們后續(xù)的開發(fā)和研究打下扎實的基礎。同時,由于世面上缺少以實例為驅(qū)動,全面詳細介紹Python網(wǎng)絡爬蟲及數(shù)據(jù)分析的書,本套書很好地填補了這一空白,它通過Python語言來教讀者編寫網(wǎng)絡爬蟲并教大家針對不同的數(shù)據(jù)集做算法分析。本套書既可以作為Python數(shù)據(jù)爬取及分析的入門教材,也可以作為實戰(zhàn)指南,包括多個經(jīng)典案例。下面作者將簡單介紹本套書。
它究竟是一套什么樣的書呢? 對您學習網(wǎng)絡數(shù)據(jù)抓取及分析是否有幫助呢?
本套書是以實例為主、使用Python語言講解網(wǎng)絡數(shù)據(jù)爬蟲及分析的書和實戰(zhàn)指南。本套書結合圖表、代碼、示例,采用通俗易懂的語言介紹了Python基礎知識、數(shù)據(jù)爬取、數(shù)據(jù)分析、數(shù)據(jù)預處理、數(shù)據(jù)可視化、數(shù)據(jù)存儲、算法評估等多方面知識,每一部分知識都從安裝過程、導入擴展包到算法原理、基礎語法,再結合實例詳細講解。本套書適合計算機科學、軟件工程、信息技術、統(tǒng)計數(shù)學、數(shù)據(jù)科學、數(shù)據(jù)挖掘、大數(shù)據(jù)等專業(yè)的學生學習,也適合對網(wǎng)絡數(shù)據(jù)爬取、數(shù)據(jù)分析、文本挖掘、統(tǒng)計分析等領域感興趣的讀者閱讀,同時也作為數(shù)據(jù)挖掘、數(shù)據(jù)分析、數(shù)據(jù)爬取、機器學習、大數(shù)據(jù)等技術相關課程的教材或?qū)嶒炛改稀?/p>
本套書分為兩篇本:數(shù)據(jù)爬取篇和數(shù)據(jù)分析篇。其中,爬取篇詳細講解了正則表達式、BeautifulSoup、Selenium、Scrapy、數(shù)據(jù)庫存儲相關的爬蟲知識,并通過實例讓讀者真正學會如何分析網(wǎng)站、爬取自己所需的數(shù)據(jù);分析篇詳細講解了Python數(shù)據(jù)分析常用庫、可視化分析、回歸分析、聚類分析、分類分析、關聯(lián)規(guī)則挖掘、文本預處理、詞云分析及主題模型、復雜網(wǎng)絡和基于數(shù)據(jù)庫的分析!皵(shù)據(jù)爬取篇”突出爬取,“數(shù)據(jù)分析篇”側重分析,為了更好地掌握相關知識,建議讀者將兩本書結合起來學習。
為什么本套書會選擇Python作為數(shù)據(jù)爬取和數(shù)據(jù)分析的編程語言呢?
隨著大數(shù)據(jù)、數(shù)據(jù)分析、深度學習、人工智能的迅速發(fā)展,網(wǎng)絡數(shù)據(jù)爬取和網(wǎng)絡數(shù)據(jù)分析也變得越來越熱門。由于Python具有語法清晰、代碼友好、易讀易學等特點,同時擁有強大的第三方庫支持,包括網(wǎng)絡爬取、信息傳輸、數(shù)據(jù)分析、繪圖可視化、機器學習等庫函數(shù),所以本套書選擇Python作為數(shù)據(jù)爬取和數(shù)據(jù)分析的編程語言。
首先,Python既是一種解釋性編程語言,又是一種面向?qū)ο蟮恼Z言,其操作性和可移植性較高,因而被廣泛應用于數(shù)據(jù)挖掘、文本抓取、人工智能等領域。就作者看來,Python最大的優(yōu)勢在于效率。有時程序員或科研工作者的工作效率比機器的效率更為重要,對于很多復雜的功能,使用較清晰的語言能給程序員減輕更多的負擔,從而大大提高代碼質(zhì)量,提高工作效率。雖然Python底層運行速度要比C語言慢,但Python清晰的結構能節(jié)省程序員的時間,簡單易學的特點也降低了編程愛好者的門檻,所以說“人生苦短,我學Python”。
其次,Python可以應用在網(wǎng)絡爬蟲、數(shù)據(jù)分析、人工智能、機器學習、Web開發(fā)、金融預測、自動化測試等多個領域,并且都有非常優(yōu)秀的表現(xiàn),從來沒有一種編程語言可以像Python這樣同時扎根在這么多領域。另外,Python還支持跨平臺操作,支持開源,擁有豐富的第三方庫。尤其隨著人工智能的持續(xù)火熱,Python在IEEE 發(fā)布的2017年最熱門語言中排名第一,同時許多程序愛好者、科技工作者也都開始認識Python,使用Python。
接下來作者將Python和其他常用編程語言,突出其優(yōu)勢。相比于C#,Python是跨平臺的、支持開源的,是一種解釋型語言進行簡單對比,可以運行在Windows、Linux等平臺上;而C#則相反,其平臺受限,不支持開源,并且需要編譯。相比于Java,Python更簡潔,學習難度也相對低很多,而Java則過于龐大復雜。相比于C和C++,Python的語法簡單易懂,代碼清晰,是一種腳本語言,使用起來更為靈活;而C和C++通常要和底層硬件打交道,語法也比較晦澀難懂。
目前,Python 3.x版本已經(jīng)發(fā)布并正在普及,本套書卻選擇了Python2.7版本,并貫穿整套書的所有代碼,這又是為什么呢?
在Python發(fā)布的版本中,Python 2.7是比較經(jīng)典的一個版本,其兼容性較高,各方面的資料和文章也比較完善。該版本適用于多種信息抓取庫,如Selenium、BeautifulSoup等,也適用于各種數(shù)據(jù)分析庫,如Sklearn、Matplotlib等,所以本套書選擇Python 2.7版本;同時結合官方的Python解釋器和Anaconda集成軟件進行詳細介紹,也希望讀者喜歡。Python 3.x版本已經(jīng)發(fā)布,具有一些更便捷的地方,但大部分功能和語法都與Python 2.7是一致的,作者推薦大家結合Python 3.x進行學習,并可以嘗試將本套書中的代碼修改為Python 3.x版本,加深印象。
同時,作者針對不同類型的讀者給出一些關于如何閱讀和使用本套書的建議。
如果您是一名沒有任何編程基礎或數(shù)據(jù)分析經(jīng)驗的讀者,建議您在閱讀本套書時,先了解對應章節(jié)的相關基礎知識,并手動敲寫每章節(jié)對應的代碼進行學習;雖然本套書是循序漸進深入講解的,但是為了您更好地學習數(shù)據(jù)抓取和數(shù)據(jù)分析知識,獨立編寫代碼是非常必要的。
如果您是一名具有良好的計算機基礎、Python開發(fā)經(jīng)驗或數(shù)據(jù)挖掘、數(shù)據(jù)分析背景的讀者,則建議您獨立完成本套書中相應章節(jié)的實例,同時抓取自己感興趣的數(shù)據(jù)集并深入分析,從而提升您的編程和數(shù)據(jù)分析能力。
如果您是一名數(shù)據(jù)挖掘或自然語言處理相關行業(yè)的研究者,建議您從本套書找到自己感興趣的章節(jié)進行學習,同時也可以將本套書作為數(shù)據(jù)爬取或數(shù)據(jù)分析的小字典,希望給您帶來一些應用價值。
如果您是一名老師,則推薦您使用本套書作為網(wǎng)絡數(shù)據(jù)抓取或網(wǎng)絡數(shù)據(jù)分析相關課程的教材,您可以按照本套書中的內(nèi)容進行授課,也可以將本套書中相關章節(jié)布置為學生的課后習題。個人建議老師在講解完基礎知識之后,把相應章節(jié)的任務和數(shù)據(jù)集描述布置給學生,讓他們實現(xiàn)對應的爬取或分析實驗。但切記,一定要讓學生自己獨立實現(xiàn)書中的代碼,以擴展他們的分析思維,從而培育更多數(shù)據(jù)抓取和數(shù)據(jù)分析領域的人才。
如果您只是一名對數(shù)據(jù)爬取或數(shù)據(jù)分析感興趣的讀者,則建議您簡單了解本書的結構、每章節(jié)的內(nèi)容,掌握數(shù)據(jù)抓取和數(shù)據(jù)分析的基本流程,作為您普及Web數(shù)據(jù)挖掘和大數(shù)據(jù)分析的參考書。
無論如何,作者都希望本套書能給您普及一些網(wǎng)絡數(shù)據(jù)抓取相關的知識,更希望您能爬取自己所需的語料,結合本套書中的案例分析自己研究的內(nèi)容,給您的研究課題或論文提供一些微不足道的思路。如果本套書讓您學會了Python抓取網(wǎng)絡數(shù)據(jù)的方法,作者就更加欣慰了。
最后,完成本套書肯定少不了很多人的幫助和支持,在此送上我最誠摯的謝意。
本套書確實花費了作者很多心思,包括多年來從事Web數(shù)據(jù)挖掘、自然語言處理、網(wǎng)絡爬蟲等領域的研究,匯集了作者5年來博客知識的總結。本套書在編寫期間得到了許多Python數(shù)據(jù)爬取和數(shù)據(jù)分析愛好者,作者的老師、同學、同事、學生,以及互聯(lián)網(wǎng)一些“大!钡膸椭,包括張老師(北京理工大學)、籍文(大疆創(chuàng)新科技公司)、徐溥(SAP公司)、俊林(阿里巴巴公司)、容神、峰子(華為公司)、田一(南京理工大學)、王金(重慶郵電大學)、羅煒(北京郵電大學)、胡子(中央民族大學)、任行(中國傳媒大學)、青哥(老師)、蘭姐(電子科技大學)、小何幸(貴州財經(jīng)大學)、小民(老師)、任瑤(老師)等,在此表示最誠摯的謝意。同時感謝北京理工大學和貴州財經(jīng)大學對作者多年的教育與培養(yǎng),感謝CSDN 網(wǎng)站、博客園網(wǎng)站、阿里云棲社區(qū)等多年來對作者博客和專欄的支持。
由于本套書是結合作者關于Python實際抓取網(wǎng)絡數(shù)據(jù)和分析數(shù)據(jù)的研究,以及多年撰寫博客經(jīng)歷而編寫的,所以書中難免會有不足或講得不夠透徹的地方,敬請廣大讀者諒解。
最后,以作者離開北京選擇回貴州財經(jīng)大學信息學院任教的一首詩結尾吧!
貴州縱美路迢迢,未付勞心此一遭。
收得破書三四本,也堪將去教爾曹。
但行好事,莫問前程。
待隨滿天桃李,再追學友趣事。
作 者
2018年2月24日
第1章 網(wǎng)絡數(shù)據(jù)分析概述…………………………………………………………… 1
1.1 數(shù)據(jù)分析 ……………………………………………………………………… 1
1.2 相關技術 ……………………………………………………………………… 3
1.3 Anaconda開發(fā)環(huán)境…………………………………………………………… 5
1.4 常用數(shù)據(jù)集 …………………………………………………………………… 9
1.4.1 Sklearn數(shù)據(jù)集…………………………………………………………… 9
1.4.2 UCI數(shù)據(jù)集 …………………………………………………………… 10
1.4.3 自定義爬蟲數(shù)據(jù)集……………………………………………………… 11
1.4.4 其他數(shù)據(jù)集……………………………………………………………… 12
1.5 本章小結……………………………………………………………………… 13
參考文獻 …………………………………………………………………………… 14
第2章 Python數(shù)據(jù)分析常用庫 …………………………………………………… 15
2.1 常用庫………………………………………………………………………… 15
2.2 NumPy ……………………………………………………………………… 17
2.2.1 Array用法 ……………………………………………………………… 17
2.2.2 二維數(shù)組操作…………………………………………………………… 19
2.3 Pandas ……………………………………………………………………… 21
2.3.1 讀/寫文件 ……………………………………………………………… 22
2.3.2 Series…………………………………………………………………… 24
2.3.3 DataFrame……………………………………………………………… 26
2.4 Matplotlib …………………………………………………………………… 26
2.4.1 基礎用法………………………………………………………………… 27
2.4.2 繪圖簡單示例…………………………………………………………… 28
2.5 Sklearn ……………………………………………………………………… 31
2.6 本章小結……………………………………………………………………… 32
參考文獻 …………………………………………………………………………… 32
第3章 Python可視化分析 ………………………………………………………… 33
3.1 Matplotlib可視化分析 ……………………………………………………… 33
3.1.1 繪制曲線圖……………………………………………………………… 33
3.1.2 繪制散點圖……………………………………………………………… 37
3.1.3 繪制柱狀圖……………………………………………………………… 40
3.1.4 繪制餅狀圖……………………………………………………………… 42
3.1.5 繪制3D圖形 …………………………………………………………… 43
3.2 Pandas讀取文件可視化分析 ……………………………………………… 45
3.2.1 繪制折線對比圖………………………………………………………… 45
3.2.2 繪制柱狀圖和直方圖…………………………………………………… 48
3.2.3 繪制箱圖………………………………………………………………… 51
3.3 ECharts可視化技術初識 …………………………………………………… 53
3.4 本章小結……………………………………………………………………… 57
參考文獻 …………………………………………………………………………… 57
第4章 Python回歸分析 …………………………………………………………… 58
4.1 回 歸………………………………………………………………………… 58
4.1.1 什么是回歸……………………………………………………………… 58
4.1.2 線性回歸………………………………………………………………… 59
4.2 線性回歸分析………………………………………………………………… 60
4.2.1 LinearRegression ……………………………………………………… 61
4.2.2 線性回歸預測糖尿病…………………………………………………… 63
4.3 多項式回歸分析……………………………………………………………… 68
4.3.1 基礎概念………………………………………………………………… 68
4.3.2 PolynomialFeatures …………………………………………………… 69
4.3.3 多項式回歸預測成本和利潤…………………………………………… 70
4.4 邏輯回歸分析………………………………………………………………… 73
4.4.1 LogisticRegression …………………………………………………… 75
4.4.2 鳶尾花數(shù)據(jù)集回歸分析實例…………………………………………… 75
4.5 本章小結……………………………………………………………………… 83
參考文獻 …………………………………………………………………………… 83
第5章 Python聚類分析 …………………………………………………………… 85
5.1 聚 類………………………………………………………………………… 85
5.1.1 算法模型………………………………………………………………… 85
5.1.2 常見聚類算法…………………………………………………………… 86
5.1.3 性能評估………………………………………………………………… 88
5.2 K-Means …………………………………………………………………… 90
5.2.1 算法描述………………………………………………………………… 90
5.2.2 用K-Means分析籃球數(shù)據(jù) …………………………………………… 96
5.2.3 K-Means聚類優(yōu)化 …………………………………………………… 99
5.2.4 設置類簇中心 ………………………………………………………… 103
5.3 BIRCH ……………………………………………………………………… 105
5.3.1 算法描述 ……………………………………………………………… 105
5.3.2 用BIRCH 分析氧化物數(shù)據(jù) ………………………………………… 106
5.4 降維處理 …………………………………………………………………… 110
5.4.1 PCA降維 ……………………………………………………………… 111
5.4.2 Sklearn PCA降維 …………………………………………………… 111
5.4.3 PCA降維實例 ………………………………………………………… 113
5.5 本章小結 …………………………………………………………………… 117
參考文獻…………………………………………………………………………… 118
第6章 Python分類分析 ………………………………………………………… 119
6.1 分 類 ……………………………………………………………………… 119
6.1.1 分類模型 ……………………………………………………………… 119
6.1.2 常見分類算法 ………………………………………………………… 120
6.1.3 回歸、聚類和分類的區(qū)別……………………………………………… 122
6.1.4 性能評估 ……………………………………………………………… 123
6.2 決策樹 ……………………………………………………………………… 123
6.2.1 算法實例描述 ………………………………………………………… 123
6.2.2 DTC算法 ……………………………………………………………… 125
6.2.3 用決策樹分析鳶尾花 ………………………………………………… 126
6.2.4 數(shù)據(jù)集劃分及分類評估 ……………………………………………… 128
6.2.5 區(qū)域劃分對比 ………………………………………………………… 132
6.3 KNN分類算法 …………………………………………………………… 136
6.3.1 算法實例描述 ………………………………………………………… 136
6.3.2 KNeighborsClassifier………………………………………………… 138
6.3.3 用KNN分類算法分析紅酒類型 …………………………………… 139
6.4 SVM 分類算法……………………………………………………………… 147
6.4.1 SVM 分類算法的基礎知識…………………………………………… 147
6.4.2 用SVM 分類算法分析紅酒數(shù)據(jù) …………………………………… 148
6.4.3 用優(yōu)化SVM 分類算法分析紅酒數(shù)據(jù)集 …………………………… 151
6.5 本章小結 …………………………………………………………………… 154
參考文獻…………………………………………………………………………… 154
第7章 Python關聯(lián)規(guī)則挖掘分析 ……………………………………………… 156
7.1 基本概念 …………………………………………………………………… 156
7.1.1 關聯(lián)規(guī)則 ……………………………………………………………… 156
7.1.2 置信度與支持度 ……………………………………………………… 157
7.1.3 頻繁項集 ……………………………………………………………… 158
7.2 Apriori算法………………………………………………………………… 159
7.3 Apriori算法的實現(xiàn)………………………………………………………… 163
7.4 本章小結 …………………………………………………………………… 167
參考文獻…………………………………………………………………………… 167
第8章 Python數(shù)據(jù)預處理及文本聚類 ………………………………………… 168
8.1 數(shù)據(jù)預處理概述 …………………………………………………………… 168
8.2 中文分詞 …………………………………………………………………… 170
8.2.1 中文分詞技術 ………………………………………………………… 170
8.2.2 Jieba中文分詞工具…………………………………………………… 171
8.3 數(shù)據(jù)清洗 …………………………………………………………………… 175
8.3.1 概 述 ………………………………………………………………… 175
8.3.2 中文語料清洗 ………………………………………………………… 176
8.4 特征提取及向量空間模型 ………………………………………………… 179
8.4.1 特征規(guī)約 ……………………………………………………………… 179
8.4.2 向量空間模型 ………………………………………………………… 181
8.4.3 余弦相似度計算 ……………………………………………………… 182
8.5 權重計算 …………………………………………………………………… 184
8.5.1 常用權重計算方法 …………………………………………………… 184
8.5.2 TF-IDF ……………………………………………………………… 185
8.5.3 用Sklearn計算TF-IDF …………………………………………… 186
8.6 文本聚類 …………………………………………………………………… 188
8.7 本章小結 …………………………………………………………………… 192
參考文獻…………………………………………………………………………… 192
第9章 Python詞云熱點與主題分布分析 ……………………………………… 193
9.1 詞 云 ……………………………………………………………………… 193
9.2 WordCloud的安裝及基本用法 …………………………………………… 194
9.2.1 WordCloud的安裝 …………………………………………………… 194
9.2.2 WordCloud的基本用法 ……………………………………………… 195
9.3 LDA ………………………………………………………………………… 203
9.3.1 LDA的安裝過程……………………………………………………… 203
9.3.2 LDA的基本用法及實例……………………………………………… 204
9.4 本章小結 …………………………………………………………………… 214
參考文獻…………………………………………………………………………… 214
第10章 復雜網(wǎng)絡與基于數(shù)據(jù)庫技術的分析 …………………………………… 215
10.1 復雜網(wǎng)絡…………………………………………………………………… 215
10.1.1 復雜網(wǎng)絡和知識圖譜………………………………………………… 215
10.1.2 NetworkX …………………………………………………………… 217
10.1.3 用復雜網(wǎng)絡分析學生關系網(wǎng)………………………………………… 219
10.2 基于數(shù)據(jù)庫技術的數(shù)據(jù)分析……………………………………………… 224
10.2.1 數(shù)據(jù)準備……………………………………………………………… 224
10.2.2 基于數(shù)據(jù)庫技術的可視化分析……………………………………… 225
10.2.3 基于數(shù)據(jù)庫技術的可視化對比……………………………………… 232
10.3 基于數(shù)據(jù)庫技術的博客行為分析………………………………………… 234
10.3.1 冪率分布……………………………………………………………… 234
10.3.2 用冪率分布分析博客數(shù)據(jù)集………………………………………… 235
10.4 本章小結…………………………………………………………………… 245
參考文獻…………………………………………………………………………… 245
本套后記……………………………………………………………………………… 246
致 謝………………………………………………………………………………… 248