本書結(jié)合編者對本科生和研究生的教學(xué)經(jīng)驗,總結(jié)近幾年利用Python進行數(shù)據(jù)分析和人工智能項目實踐的經(jīng)驗,從語言的前瞻性和實用性角度出發(fā),以實際需求為導(dǎo)向而編寫。在內(nèi)容設(shè)計上,打破學(xué)科體系、知識本位的束縛,以行業(yè)標(biāo)準(zhǔn)、職業(yè)標(biāo)準(zhǔn)、教學(xué)標(biāo)準(zhǔn)為引領(lǐng),根據(jù)企業(yè)崗位規(guī)范與任職要求提煉核心編程技能,由淺入深地將不同知識點進行串聯(lián),使得各知識點之間密切聯(lián)系,讓讀者能夠逐層深入地掌握Python編程技巧。
劉同存,男,1983年8月出生,山東臨沂人,就職于浙江農(nóng)林大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院,從事大數(shù)據(jù)與人工智能前沿算法的研究和應(yīng)用,曾參與多個國家級科研項目。目前主持浙江省自然科學(xué)基金—公益項目1項、浙江農(nóng)林大學(xué)科學(xué)發(fā)展基金項目1項。近年來,以第一作者和通訊作者身份在國際頂級期刊和會議發(fā)表論文20余篇,申請發(fā)明專利20余項,其中獲授權(quán)發(fā)明專利10余項。
目 錄
第1章 Python初探 1
1.1 關(guān)于Python 1
1.1.1 Python的起源 1
1.1.2 Python的發(fā)展史 1
1.1.3 Python的特點 2
1.1.4 為什么要學(xué)習(xí)Python 3
1.2 Python環(huán)境搭建 3
1.2.1 使用Python安裝包搭建編程環(huán)境 3
1.2.2 使用Anaconda集成包搭建編程環(huán)境 6
1.2.3 Python編程工具IDE 7
1.3 編寫并運行第一個Python程序 8
1.3.1 利用Jupyter編寫并運行Hello World程序 8
1.3.2 從終端運行Python程序 9
1.3.3 在Python命令窗口中運行程序 10
1.4 Python注釋 10
1.4.1 單行注釋 11
1.4.2 多行注釋 11
1.5 本章小結(jié) 11
第2章 基礎(chǔ)語法 12
2.1 標(biāo)識符與關(guān)鍵字 12
2.1.1 標(biāo)識符 12
2.1.2 關(guān)鍵字 13
2.2 變量與賦值 13
2.3 語句 15
2.4 數(shù)據(jù)類型 16
2.4.1 數(shù)值型 16
2.4.2 字符串 18
2.4.3 空值None 23
2.5 輸入與輸出 23
2.5.1 input()函數(shù) 23
2.5.2 print()函數(shù) 24
2.5.3 eval()函數(shù) 25
2.6 運算符與表達式 26
2.6.1 算術(shù)運算符 26
2.6.2 比較運算符 27
2.6.3 邏輯運算符 29
2.6.4 成員運算符 32
2.6.5 表達式 32
2.7 數(shù)據(jù)類型轉(zhuǎn)換 34
2.7.1 自動轉(zhuǎn)換 34
2.7.2 顯式轉(zhuǎn)換 34
2.8 擴展賦值 35
2.9 案例分析 36
2.10 本章小結(jié) 37
動手編程 38
第3章 Python控制流 39
3.1 選擇結(jié)構(gòu) 39
3.1.1 if語句 39
3.1.2 if…else語句 41
3.1.3 if…elif…else語句 42
3.2 簡單循環(huán)結(jié)構(gòu) 43
3.2.1 while循環(huán) 44
3.2.2 for循環(huán) 45
3.2.3 break語句 47
3.2.4 continue語句 48
3.3 復(fù)雜循環(huán)結(jié)構(gòu) 49
3.3.1 for-for循環(huán)嵌套結(jié)構(gòu) 50
3.3.2 while-while循環(huán)嵌套結(jié)構(gòu) 51
3.3.3 while-for循環(huán)嵌套結(jié)構(gòu) 52
3.3.4 循環(huán)中的else語句 52
3.4 案例分析 53
3.5 本章小結(jié) 57
動手編程 57
第4章 字符串處理 59
4.1 字符串的長度與比較 59
4.2 字符串索引 59
4.3 字符串切片 61
4.3.1 簡單切片 61
4.3.2 有步長的切片 62
4.4 字符串遍歷 63
4.4.1 for循環(huán)遍歷 63
4.4.2 結(jié)合range()函數(shù)的for循環(huán)遍歷 63
4.4.3 內(nèi)置函數(shù)enumerate()遍歷 64
4.4.4 內(nèi)置函數(shù)iter()遍歷 64
4.5 常用的字符串函數(shù) 65
4.5.1 index()函數(shù) 65
4.5.2 replace()函數(shù) 66
4.5.3 join()函數(shù) 67
4.5.4 split()函數(shù) 67
4.5.5 strip()、lstrip()和rstrip()函數(shù) 68
4.5.6 find()函數(shù) 69
4.5.7 lower()和upper()函數(shù) 70
4.5.8 startswith()和endswith()函數(shù) 72
4.6 案例分析 72
4.7 本章小結(jié) 74
動手編程 75
第5章 列表與元組 76
5.1 認(rèn)識列表 76
5.1.1 定義列表 76
5.1.2 創(chuàng)建列表 76
5.1.3 查看列表長度 77
5.1.4 訪問列表 77
5.2 列表操作 78
5.2.1 列表遍歷 78
5.2.2 列表切片 81
5.2.3 列表解析 82
5.2.4 列表數(shù)值計算 84
5.3 列表中元素的添加、刪除與修改 85
5.3.1 向列表中添加元素 85
5.3.2 刪除列表中的元素 86
5.3.3 修改列表中的元素 89
5.4 列表的組織 90
5.4.1 列表排序 90
5.4.2 列表反轉(zhuǎn) 92
5.4.3 列表的復(fù)制:淺復(fù)制與深復(fù)制 93
5.5 元組 95
5.5.1 創(chuàng)建元組 95
5.5.2 使用元組 96
5.5.3 修改元組 96
5.6 案例分析 97
5.7 本章小結(jié) 100
動手編程 100
第6章 集合與字典 102
6.1 集合 102
6.1.1 集合構(gòu)造 102
6.1.2 集合修改 103
6.1.3 集合遍歷 105
6.1.4 集合操作 105
6.1.5 集合運算 106
6.2 字典的定義 106
6.2.1 構(gòu)造字典 107
6.2.2 字典訪問 107
6.3 字典操作 108
6.3.1 向字典中添加元素 108
6.3.2 修改字典中的值 109
6.3.3 刪除字典中的值 109
6.3.4 字典遍歷 109
6.4 字典嵌套 110
6.4.1 列表中嵌套字典 111
6.4.2 字典中嵌套列表 111
6.4.3 字典中嵌套字典 112
6.5 案例分析 113
6.6 本章小結(jié) 114
動手編程 115
第7章 函數(shù)與模塊 117
7.1 函數(shù)定義 117
7.1.1 不帶參數(shù)的函數(shù) 118
7.1.2 帶參數(shù)的函數(shù) 118
7.2 函數(shù)調(diào)用 119
7.2.1 形參與實參 120
7.2.2 函數(shù)參數(shù)傳遞方式 120
7.2.3 參數(shù)傳遞機制 123
7.2.4 返回值 125
7.3 匿名函數(shù) 126
7.4 全局變量與局部變量 127
7.4.1 變量作用域 127
7.4.2 global語句 130
7.5 函數(shù)遞歸 130
7.5.1 函數(shù)嵌套調(diào)用 130
7.5.2 遞歸的定義 131
7.5.3 函數(shù)的遞歸調(diào)用 132
7.6 常用的模塊 133
7.6.1 使用模塊 133
7.6.2 math模塊 135
7.6.3 random模塊 135
7.6.4 time模塊 137
7.6.5 sys模塊 138
7.7 案例分析 139
7.8 本章小結(jié) 141
動手編程 142
第8章 面向?qū)ο?143
8.1 面向?qū)ο蠛喗?143
8.1.1 面向?qū)ο缶幊?143
8.1.2 面向?qū)ο蟮闹饕卣?144
8.2 創(chuàng)建與使用類 145
8.2.1 創(chuàng)建類 145
8.2.2 創(chuàng)建實例 146
8.2.3 修改實例屬性的值 147
8.3 類的繼承 149
8.3.1 定義子類 149
8.3.2 子類函數(shù)__init__() 150
8.3.3 重寫父類方法 150
8.4 類中的__name__屬性 151
8.5 使用外部類 151
8.6 案例分析 152
8.7 本章小結(jié) 155
動手編程 155
第9章 文件與異常 157
9.1 文件與文件路徑 157
9.2 文件的打開與關(guān)閉 158
9.2.1 使用open()函數(shù)打開文件 158
9.2.2 使用close()函數(shù)關(guān)閉文件 159
9.2.3 使用with語句打開文件 159
9.3 讀文件 160
9.3.1 使用read()函數(shù)讀取指定字符數(shù) 160
9.3.2 使用readline()函數(shù)讀取整行 160
9.3.3 使用readlines()函數(shù)讀取全部行 161
9.4 寫文件 162
9.4.1 寫入單行 162
9.4.2 寫入多行 162
9.4.3 追加內(nèi)容 162
9.5 讀寫CSV文件 163
9.6 讀寫JSON文件 164
9.6.1 dump()函數(shù) 164
9.6.2 load()函數(shù) 165
9.7 異常處理 165
9.7.1 Python標(biāo)準(zhǔn)異常 165
9.7.2 try…except語句 166
9.7.3 try…except…else語句 166
9.7.4 帶有多個except語句的異常處理結(jié)構(gòu) 167
9.7.5 try…except…finally語句 168
9.7.6 處理FileNotFoundError異常 169
9.8 案例分析 170
9.9 本章小結(jié) 172
動手編程 172
第10章 NumPy科學(xué)計算 173
10.1 NumPy數(shù)值類型 173
10.2 創(chuàng)建多維數(shù)組 174
10.2.1 使用array()函數(shù)創(chuàng)建多維數(shù)組 174
10.2.2 快速創(chuàng)建數(shù)組 175
10.2.3 使用arange()和linspace()函數(shù)創(chuàng)建數(shù)組 177
10.2.4 重塑數(shù)組形狀 178
10.3 數(shù)組屬性 178
10.4 數(shù)組運算 180
10.4.1 基本算術(shù)運算 180
10.4.2 數(shù)組廣播 182
10.4.3 統(tǒng)計運算 183
10.5 數(shù)組的索引和切片 184
10.5.1 一維數(shù)組的索引和切片 184
10.5.2 多維數(shù)組的索引和切片 186
10.6 數(shù)組形狀操作 188
10.6.1 數(shù)組拼接操作 188
10.6.2 數(shù)組分裂操作 189
10.7 本章小結(jié) 190
動手編程 190
第11章 Python數(shù)據(jù)可視化 191
11.1 認(rèn)識Matplotlib 191
11.1.1 繪制簡單圖形 191
11.1.2 繪制子圖 193
11.2 基本二維圖繪制 196
11.2.1 折線圖 196
11.2.2 散點圖 200
11.2.3 條形圖 202
11.2.4 餅圖 204
11.3 本章小結(jié) 205
動手編程 205
第12章 Python數(shù)據(jù)處理 207
12.1 pandas的基本數(shù)據(jù)結(jié)構(gòu) 207
12.1.1 創(chuàng)建Series 207
12.1.2 創(chuàng)建DataFrame 208
12.2 數(shù)據(jù)的讀寫與操作 211
12.2.1 使用pandas讀寫文件 211
12.2.2 查看數(shù)據(jù) 212
12.2.3 數(shù)據(jù)處理 213
12.3 數(shù)據(jù)分組與統(tǒng)計分析 214
12.3.1 數(shù)據(jù)的分組統(tǒng)計 214
12.3.2 數(shù)據(jù)的統(tǒng)計分析 215
12.4 本章小結(jié) 215
動手編程 216
第13章 Python機器學(xué)習(xí)案例分析 217
13.1 scikit-learn簡介 217
13.1.1 數(shù)據(jù)集生成器 217
13.1.2 內(nèi)置數(shù)據(jù)集 218
13.1.3 數(shù)據(jù)預(yù)處理 219
13.1.4 特征工程 220
13.1.5 模型選擇與評估 220
13.2 鳶尾花分類 221
13.2.1 邏輯回歸算法 221
13.2.2 數(shù)據(jù)導(dǎo)入與探索 221
13.2.3 構(gòu)建邏輯回歸模型 223
13.3 有機分子類別預(yù)測 225
13.3.1 數(shù)據(jù)讀取與探索 225
13.3.2 數(shù)據(jù)預(yù)處理 226
13.3.3 模型構(gòu)建與評估 228
13.4 本章小結(jié) 230
參考文獻 231