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