Python是一種跨平臺(tái)的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,很好地結(jié)合了解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮纫,深受編程初學(xué)者、數(shù)據(jù)分析師和機(jī)器學(xué)習(xí)研究者等人群的喜愛(ài),已成為目前□受歡迎的程序設(shè)計(jì)語(yǔ)言之一,□019年6月名列TIOBE全球流行編程語(yǔ)言排行榜第三名。
國(guó)外高校開(kāi)設(shè)Python語(yǔ)言課程較早。例如□□福大學(xué)□009年就開(kāi)設(shè)了Python課程,到□015年為止,一共開(kāi)設(shè)了□□門Python相關(guān)課程,并替換了部分專業(yè)的Java語(yǔ)言或C語(yǔ)言課程。
國(guó)內(nèi)高校開(kāi)設(shè)Python課程相對(duì)較晚,在□015年以前,開(kāi)設(shè)Python課程的高校較少。自□018年起,越來(lái)越多的高校開(kāi)始開(kāi)設(shè)Python編程或Python數(shù)據(jù)分析相關(guān)課程。多數(shù)高校以高年級(jí)選修課的形式開(kāi)設(shè),受教材限制,很多課程都相當(dāng)于把程序設(shè)計(jì)再學(xué)一遍,大量的時(shí)間花在語(yǔ)法細(xì)節(jié)和語(yǔ)言特征上。
□017年開(kāi)始,倚動(dòng)實(shí)驗(yàn)室在TensorFlow機(jī)器學(xué)習(xí)和網(wǎng)絡(luò)數(shù)據(jù)抓取等項(xiàng)目中接觸到了Python編程,邊學(xué)邊教,通過(guò)多種形式多次開(kāi)設(shè)了Python課程。為應(yīng)對(duì)新冠疫情爆發(fā)的新形勢(shì),鐘元生教授領(lǐng)銜,帶領(lǐng)團(tuán)隊(duì)攻關(guān),梳理、歸納和總結(jié)前期在Python線上教學(xué)、□□分享中取得的經(jīng)驗(yàn),編寫了本教材,以幫助培養(yǎng)Python數(shù)據(jù)分析人才。
課程教學(xué)大綱由鐘元生、朱文強(qiáng)、高成珍、周璐喆和徐軍共同商定,并對(duì)教學(xué)內(nèi)容、實(shí)踐案例、教學(xué)方法進(jìn)行了反復(fù)探討。在此基礎(chǔ)上,高成珍錄制了“手把手學(xué)Python”教學(xué)□□,鐘元生開(kāi)展了一輪線上教學(xué)實(shí)踐,朱文強(qiáng)完成了統(tǒng)籌書(shū)稿和源代碼的整理工作。同時(shí),鐘元生、朱文強(qiáng)、高成珍、徐軍等人進(jìn)一步完善了“Python數(shù)據(jù)分析”的□□課程內(nèi)容。
本書(shū)面向有編程基礎(chǔ)的軟件開(kāi)發(fā)、計(jì)算機(jī)科學(xué)等相關(guān)專業(yè)高年級(jí)本科生,以及編程基礎(chǔ)一般但學(xué)習(xí)主動(dòng)性強(qiáng)的經(jīng)濟(jì)管理類本科生及研究生,旨在幫助讀者在課時(shí)較少(約3□~64學(xué)時(shí))的情況下,快速入門Python并掌握其數(shù)據(jù)分析的方法。
教材對(duì)Python編程及其數(shù)據(jù)分析方法做了科學(xué)的組織,包括Python語(yǔ)法基礎(chǔ)、Python程序結(jié)構(gòu)、Python常用數(shù)據(jù)結(jié)構(gòu)、函數(shù)與異常處理、常見(jiàn)庫(kù)操作、文件操作、面向?qū)ο缶幊、?shù)據(jù)庫(kù)操作、NumPy庫(kù)、pandas庫(kù)、數(shù)據(jù)可視化等內(nèi)容。作為一本Python數(shù)據(jù)分析的教材,本書(shū)有以下特點(diǎn)。
(1) 循序漸進(jìn)。從Python的基本語(yǔ)法、基本知識(shí)和基本應(yīng)用出發(fā),逐步深入,零基礎(chǔ)讀者也可以快速上手。□□~9章為Python語(yǔ)言基礎(chǔ),□□0~14章為Python數(shù)據(jù)分析。
(□) 案例豐富。在對(duì)每個(gè)知識(shí)點(diǎn)進(jìn)行講解時(shí),都配以可運(yùn)行的程序示例及其運(yùn)行結(jié)果。讀者可以通過(guò)閱讀示例代碼和運(yùn)行結(jié)果深刻理解所學(xué)到的知識(shí)。
(3)知識(shí)點(diǎn)與實(shí)踐相結(jié)合。每章內(nèi)容結(jié)束之后都提供了大量的課后練習(xí)供讀者編程實(shí)踐,以提高讀者解決實(shí)際問(wèn)題的能力。
(4)資源支持全面。除了教材之外,本書(shū)還提供了配套的示例代碼、課后練習(xí)源代碼、課件等諸多資源,讀者可在清華大學(xué)出版社官網(wǎng)上下載。
對(duì)于部分知識(shí)點(diǎn),本書(shū)還提供了進(jìn)階內(nèi)容,以供感興趣的讀者作進(jìn)一步的深入學(xué)習(xí)。另外,本書(shū)的示例都嚴(yán)格按照Python的PEP8編程規(guī)范進(jìn)行編寫,并融合了Python編程之禪的智慧。請(qǐng)讀者認(rèn)真理解該規(guī)范,深入領(lǐng)會(huì)Python編程之禪,并將其融入自己的編程習(xí)慣中。
本書(shū)由朱文強(qiáng)、鐘元生聯(lián)合主編,并負(fù)責(zé)組織設(shè)計(jì)、質(zhì)量控制和統(tǒng)稿定稿。編寫分工如下: 高成珍、朱青負(fù)責(zé)□□章,鐘元生、朱青負(fù)責(zé)第□、3章,鐘元生、鄧付聰負(fù)責(zé)第4、5章,高成珍、鄧付聰負(fù)責(zé)第6章,徐軍、田遠(yuǎn)負(fù)責(zé)第7、8章,朱文強(qiáng)負(fù)責(zé)第9章,朱文強(qiáng)、田遠(yuǎn)負(fù)責(zé)□□0章,周璐喆、鐘元生負(fù)責(zé)□□1章,李志偉、高成珍、鐘元生負(fù)責(zé)□□□、13章,朱文強(qiáng)、何文彬負(fù)責(zé)□□4章。全書(shū)源代碼和程序運(yùn)行結(jié)果由朱文強(qiáng)校對(duì)。
由于教材編寫時(shí)間倉(cāng)促,作者水平有限,不足之處在所難免,敬請(qǐng)讀者和同行批評(píng)指正。
□后借用布魯斯·埃克爾(ANSI/ISO C++標(biāo)準(zhǔn)委員會(huì)發(fā)起者之一)的話結(jié)尾,“人生苦短,請(qǐng)用Python”。
編者□0□0年9月于江西財(cái)經(jīng)大學(xué)麥廬校區(qū)
朱文強(qiáng),江西財(cái)經(jīng)大學(xué)講師,工學(xué)博士,參編教材《Android編程》和《移動(dòng)電子商務(wù)》,參與國(guó)家自然科學(xué)基金等課題多項(xiàng),出版學(xué)術(shù)專著1部,在國(guó)內(nèi)外重要期刊發(fā)表論文十多篇,長(zhǎng)期從事計(jì)算機(jī)教學(xué)與科研工作。
配套資源基礎(chǔ)篇
□□章Python簡(jiǎn)介與環(huán)境搭建<<<1
1.1Python簡(jiǎn)介□
1.□Python開(kāi)發(fā)環(huán)境搭建3
1.□.1Python下載3
1.□.□Python安裝4
1.□.3命令行式運(yùn)行Python代碼6
1.3□□個(gè)Python程序7
1.4集成開(kāi)發(fā)工具9
1.5本章小結(jié)1□
課后練習(xí)1□
第□章語(yǔ)法基礎(chǔ)<<<13
□.1輸入輸出函數(shù)14
□.1.1input()函數(shù)14
□.1.□print()函數(shù)14
□.□變量和注釋15
□.□.1變量15
□.□.□注釋18
□.3數(shù)據(jù)類型19
□.3.1整型19
□.3.□浮點(diǎn)型□1
□.3.3布爾型□□
□.3.4字符串類型□3
□.4運(yùn)算符□6
□.4.1算術(shù)運(yùn)算符□6
□.4.□關(guān)系運(yùn)算符□7
□.4.3邏輯運(yùn)算符□9
□.4.4位運(yùn)算符(進(jìn)階)31
□.4.5復(fù)合賦值運(yùn)算符33
□.4.6成員運(yùn)算符33
□.4.7身份運(yùn)算符34
□.4.8運(yùn)算符優(yōu)先級(jí)35
□.5本章小結(jié)36
課后練習(xí)36
第3章流程控制<<<38
3.1條件結(jié)構(gòu)39
3.1.1單向if語(yǔ)句39
3.1.□雙向ifelse語(yǔ)句40
3.1.3多分支ifelifelse語(yǔ)句41
3.1.4簡(jiǎn)化版if語(yǔ)句43
3.□循環(huán)結(jié)構(gòu)44
3.□.1while循環(huán)45
3.□.□for循環(huán)45
3.□.3循環(huán)嵌套48
3.3循環(huán)控制語(yǔ)句49
3.3.1循環(huán)控制語(yǔ)句50
3.3.□循環(huán)中的else語(yǔ)句50
3.4綜合案例5□
3.5本章小結(jié)53
課后練習(xí)54
Python數(shù)據(jù)分析實(shí)戰(zhàn)目錄
第4章常用數(shù)據(jù)結(jié)構(gòu)<<<57
4.1列表58
4.1.1列表的定義、創(chuàng)建和刪除58
4.1.□列表元素的訪問(wèn)59
4.1.3列表的切片操作60
4.1.4列表內(nèi)容的修改操作61
4.1.5列表的常見(jiàn)方法6□
4.1.6列表的常見(jiàn)操作67
4.1.7列表推導(dǎo)式69
4.□元組70
4.□.1元組的定義、創(chuàng)建和刪除70
4.□.□元組和列表的聯(lián)系與區(qū)別71
4.□.3生成器推導(dǎo)式(進(jìn)階)7□
4.3字符串73
4.3.1字符串的定義和創(chuàng)建73
4.3.□字符串的常用方法74
4.3.3字符串應(yīng)用舉例76
4.3.4字符串的格式化輸出78
4.4集合79
4.4.1集合的定義、創(chuàng)建和刪除80
4.4.□集合的常見(jiàn)方法80
4.4.3集合運(yùn)算83
4.4.4集合推導(dǎo)式86
4.5字典87
4.5.1字典的定義和創(chuàng)建87
4.5.□字典元素的訪問(wèn)87
4.5.3字典的常見(jiàn)方法88
4.5.4字典推導(dǎo)式91
4.5.5字典排序91
4.6本章小結(jié)93
課后練習(xí)93
第5章函數(shù)<<<95
5.1函數(shù)的定義與調(diào)用96
5.1.1函數(shù)的概念96
5.1.□定義函數(shù)97
5.1.3調(diào)用函數(shù)98
5.□參數(shù)類型與參數(shù)傳遞99
5.□.1形參和實(shí)參99
5.□.□位置參數(shù)100
5.□.3關(guān)鍵字參數(shù)100
5.□.4默認(rèn)值參數(shù)101
5.□.5可變長(zhǎng)度參數(shù)101
5.□.6序列解包參數(shù)(進(jìn)階)10□
5.□.7多種類型參數(shù)混用(進(jìn)階)103
5.□.8函數(shù)參數(shù)傳遞106
5.3變量作用域與遞歸108
5.3.1變量作用域108
5.3.□函數(shù)的遞歸調(diào)用110
5.4特殊函數(shù)111
5.4.1匿名函數(shù): lambda表達(dá)式111
5.4.□map()函數(shù)113
5.4.3filter()函數(shù)(進(jìn)階)114
5.5本章小結(jié)115
課后練習(xí)116
第6章異常處理<<<118
6.1錯(cuò)誤和異常119
6.1.1錯(cuò)誤119
6.1.□異常119
6.□異常處理機(jī)制1□0
6.□.1異常處理結(jié)構(gòu)1□1
6.□.□拋出自定義異常1□5
6.3本章小結(jié)1□7
課后練習(xí)1□7
第7章常見(jiàn)庫(kù)的操作<<<1□9
7.1模塊130
7.1.1模塊的導(dǎo)入130
7.1.□模塊導(dǎo)入的常見(jiàn)問(wèn)題131
7.□數(shù)學(xué)庫(kù)math133
7.3隨機(jī)數(shù)庫(kù)random136
7.4時(shí)間庫(kù)time137
7.5集合庫(kù)collection(進(jìn)階)140
7.6本章小結(jié)144
課后練習(xí)144
第8章文件操作<<<146
8.1文本文件的讀寫147
8.□文件與文件夾的常見(jiàn)操作154
8.3Excel文件的讀寫157
8.3.1Excel文件讀寫模塊的安裝157
8.3.□Excel文件讀取操作158
8.3.3Excel文件寫入操作160
8.4本章小結(jié)164
課后練習(xí)164
進(jìn)階篇
第9章面向?qū)ο缶幊?lt;<<166
9.1類和對(duì)象167
9.1.1類的定義167
9.1.□創(chuàng)建類對(duì)象168
9.□類的屬性169
9.□.1實(shí)例屬性169
9.□.□類屬性170
9.□.3裝飾器(進(jìn)階)171
9.3類的方法17□
9.3.1實(shí)例方法173
9.3.□類方法173
9.3.3靜態(tài)方法(進(jìn)階)174
9.3.4構(gòu)造方法和初始化方法175
9.4類的繼承176
9.4.1類的繼承方式176
9.4.□object類176
9.4.3類方法重寫177
9.4.4多重繼承時(shí)的調(diào)用順序178
9.4.5對(duì)象的□□180
9.5本章小結(jié)18□
課后練習(xí)18□
□□0章數(shù)據(jù)庫(kù)操作<<<186
10.1數(shù)據(jù)庫(kù)基礎(chǔ)187
10.1.1數(shù)據(jù)庫(kù)管理系統(tǒng)187
10.1.□數(shù)據(jù)庫(kù)類型187
10.1.3關(guān)系型數(shù)據(jù)庫(kù)188
10.1.4SQLite 數(shù)據(jù)庫(kù)188
10.□結(jié)構(gòu)化查詢語(yǔ)言SQL189
10.□.1數(shù)據(jù)庫(kù)表的基本語(yǔ)句189
10.□.□數(shù)據(jù)庫(kù)的進(jìn)階語(yǔ)句19□
10.3操作數(shù)據(jù)庫(kù)核心API196
10.3.1Python DBAPI核心類和方法196
10.3.□Python操作數(shù)據(jù)庫(kù)SQLite197
10.4數(shù)據(jù)庫(kù)操作案例198
10.4.1案例一198
10.4.□案例二□01
10.5本章小結(jié)□03
課后練習(xí)□03
□□1章NumPy入門與實(shí)踐<<<□05
11.1NumPy簡(jiǎn)介□06
11.□數(shù)組對(duì)象ndarray□06
11.□.1ndarray對(duì)象的創(chuàng)建方法□07
11.□.□ndarray對(duì)象的屬性□13
11.□.3ndarray對(duì)象的形狀與重構(gòu)□14
11.3索引和切片□□0
11.3.1ndarray對(duì)象的索引□□0
11.3.□ndarray對(duì)象的切片□□1
11.3.3ndarray對(duì)象的索引和切片的實(shí)例□□5
11.3.4ndarray對(duì)象的高級(jí)索引□□7
11.4NumPy的通用函數(shù)□30
11.4.1NumPy的數(shù)學(xué)函數(shù)□30
11.4.□NumPy生成隨機(jī)數(shù)□33
11.4.3NumPy的統(tǒng)計(jì)方法□35
11.4.4NumPy的其他常用方法□36
11.5ndarray的數(shù)組運(yùn)算□39
11.5.1NumPy的廣播機(jī)制□39
11.5.□ndarray數(shù)組的四則運(yùn)算□40
11.5.3ndarray數(shù)組的集合運(yùn)算□4□
11.5.4ndarray數(shù)組的連接與分割□43
11.6本章小結(jié)□47
課后練習(xí)□48
□□□章數(shù)據(jù)分析之pandas入門與實(shí)踐<<<□49
1□.1Series和Index介紹□50
1□.1.1Series的定義和創(chuàng)建□50
1□.1.□Index對(duì)象□5□
1□.□Series的數(shù)據(jù)訪問(wèn)和常用方法□54
1□.□.1Series的數(shù)據(jù)訪問(wèn)□54
1□.□.□Series的常用方法□56
1□.3DataFrame的創(chuàng)建與數(shù)據(jù)訪問(wèn)□59
1□.3.1DataFrame的創(chuàng)建□59
1□.3.□DataFrame的數(shù)據(jù)訪問(wèn)□60
1□.4DataFrame中的屬性和方法□63
1□.4.1DataFrame的常用屬性□63
1□.4.□DataFrame的常見(jiàn)方法□64
1□.5DataFrame的數(shù)據(jù)合并□67
1□.6pandas加載數(shù)據(jù)和缺失值處理□69
1□.6.1pandas加載數(shù)據(jù)□69
1□.6.□pandas的缺失值處理□73
1□.7pandas的分組操作□76
1□.8pandas的數(shù)據(jù)合并操作□78
1□.8.1merge()方法□79
1□.8.□contact()方法□80
1□.9pandas綜合案例□8□
1□.10本章小結(jié)□86
課后練習(xí)□87
□□3章數(shù)據(jù)可視化之matplotlib<<<□89
13.1pyplot繪圖基礎(chǔ)□90
13.□繪制線形圖□94
13.□.1線形圖示例□97
13.□.□繪制正弦曲線、余弦曲線示例□98
13.3繪制直方圖□99
13.4繪制條形圖301
13.5繪制餅圖303
13.6繪制散點(diǎn)圖305
13.7生成詞云圖307
13.7.1wordcloud庫(kù)307
13.7.□jieba庫(kù)309
13.8本章小結(jié)311
課后練習(xí)311
□□4章人工智能之scikitlearn入門與實(shí)踐<<<313
14.1機(jī)器學(xué)習(xí)基礎(chǔ)314
14.1.1機(jī)器學(xué)習(xí)概述314
14.1.□機(jī)器學(xué)習(xí)分類及其應(yīng)用場(chǎng)景315
14.1.3機(jī)器學(xué)習(xí)常見(jiàn)算法316
14.1.4機(jī)器學(xué)習(xí)流程316
14.1.5常見(jiàn)的機(jī)器學(xué)習(xí)庫(kù)316
14.□鳶尾花分類318
14.□.1案例概述318
14.□.□數(shù)據(jù)提取與預(yù)處理318
14.□.3簡(jiǎn)單數(shù)據(jù)可視化3□0
14.□.4K近鄰算法3□□
14.3波士頓房?jī)r(jià)預(yù)測(cè)3□7
14.3.1案例概述3□7
14.3.□線性回歸算法3□9
14.3.3數(shù)據(jù)分析330
14.4手寫數(shù)字識(shí)別333
14.4.1案例概述333
14.4.□多層感知機(jī)算法334
14.4.3案例實(shí)現(xiàn)336
14.5本章小結(jié)338
課后練習(xí)338