本書(shū)根據(jù)作者多年教學(xué)經(jīng)驗(yàn)編寫(xiě), 條理清楚, 內(nèi)容深淺適中, 盡量讓讀者從實(shí)例出發(fā), 結(jié)合課后練習(xí), 少走彎路。本書(shū)涉及的內(nèi)容主要包括Python數(shù)據(jù)類(lèi)型與運(yùn)算、流程控制及函數(shù)與類(lèi)、Pandas庫(kù)的數(shù)據(jù)處理與分析等。
作者通過(guò)近三輪的教學(xué),對(duì)Python3.x的基礎(chǔ)知識(shí)進(jìn)行了篩選和總結(jié),特編寫(xiě)此書(shū),希望能夠給準(zhǔn)備使用Python的讀者提供一些方便。
本書(shū)由淺入深,比較適合那些從未接觸過(guò)計(jì)算機(jī)語(yǔ)言的讀者。每章配有大量的示例代碼,希望讀者在使用本書(shū)的時(shí)候,能夠盡可能自己敲代碼,少用復(fù)制粘貼的方法,這樣有利于讀者盡快進(jìn)入“角色”,畢竟“拷貝得來(lái)終覺(jué)淺”。
本書(shū)的前3章是Python的基礎(chǔ)知識(shí);第4章是利用Pandas庫(kù)對(duì)數(shù)據(jù)進(jìn)行處理、分析以及實(shí)現(xiàn)數(shù)據(jù)可視化;在第5章還列出了Python對(duì)文件的讀取、存儲(chǔ)方法,對(duì)網(wǎng)絡(luò)爬蟲(chóng)、矩陣運(yùn)算也做了簡(jiǎn)單的介紹。
前言
在寫(xiě)作本書(shū)的時(shí)候,國(guó)內(nèi)大多數(shù)參考書(shū)還是Python2.7版本,為了給在校大學(xué)生開(kāi)設(shè)這門(mén)Python課程,我們選擇了Python3.x,畢竟Python3.x才是未來(lái)。與其讓學(xué)生們從Python2.7開(kāi)始學(xué),還不如直接從Python3.x上手,以掌握更加完善的知識(shí)。
作者通過(guò)近三輪的教學(xué),對(duì)Python3.x的基礎(chǔ)知識(shí)進(jìn)行了篩選和總結(jié),特編寫(xiě)此書(shū),希望能夠給準(zhǔn)備使用Python的讀者提供一些方便。
本書(shū)由淺入深,比較適合那些從未接觸過(guò)計(jì)算機(jī)語(yǔ)言的讀者。每章配有大量的示例代碼,希望讀者在使用本書(shū)的時(shí)候,能夠盡可能自己敲代碼,少用復(fù)制粘貼的方法,這樣有利于讀者盡快進(jìn)入“角色”,畢竟“拷貝得來(lái)終覺(jué)淺”。
本書(shū)的前3章是Python的基礎(chǔ)知識(shí);第4章是利用Pandas庫(kù)對(duì)數(shù)據(jù)進(jìn)行處理、分析以及實(shí)現(xiàn)數(shù)據(jù)可視化;在第5章還列出了Python對(duì)文件的讀取、存儲(chǔ)方法,對(duì)網(wǎng)絡(luò)爬蟲(chóng)、矩陣運(yùn)算也做了簡(jiǎn)單的介紹。
作者在編寫(xiě)本書(shū)的過(guò)程中,得到了Python工程師齊偉的幫助。在開(kāi)設(shè)這門(mén)課的時(shí)候,齊偉通過(guò)視頻的形式與我們一起分享了Python開(kāi)發(fā)經(jīng)驗(yàn)。本書(shū)在完稿時(shí),得到了研究生閆青、陳文華、馬秀、樊宇凱和盧超在文字校對(duì)上的幫助。
最后感謝廣大讀者選擇了本書(shū),預(yù)祝您順利學(xué)會(huì)Python語(yǔ)言。
編者
目錄
第1章Python簡(jiǎn)介1
1.1安裝Python2
1.2Python2和Python3的區(qū)別5
本章小結(jié)8
練習(xí)8
第2章Python數(shù)據(jù)類(lèi)型與運(yùn)算9
2.1數(shù)據(jù)類(lèi)型11
2.2運(yùn)算符與功能命令12
2.2.1算數(shù)運(yùn)算符12
2.2.2比較運(yùn)算符12
2.2.3賦值運(yùn)算符13
2.2.4常量與變量15
2.2.5字符串16
2.2.6字符串索引與切片18
2.2.7輸入和輸出20
2.2.8原始字符串21
2.2.9range22
2.2.10元組、列表、字典、集合22
2.2.11格式化輸出37
2.2.12strip、split40
2.2.13divmod()42
2.2.14join()42
本章小結(jié)43
練習(xí)47
第3章流程控制及函數(shù)與類(lèi)49
3.1流程控制52
3.1.1if-else52
3.1.2for循環(huán)53
3.1.3while循環(huán)54
3.1.4continue和break54
3.2遍歷56
3.2.1range()函數(shù)56
3.2.2列表與元組的遍歷59
3.3函數(shù)61
3.3.1函數(shù)的定義61
3.3.2函數(shù)的使用62
3.3.3形參和實(shí)參63
3.3.4參數(shù)的傳遞和改變63
3.3.5變量的作用域66
3.3.6函數(shù)參數(shù)的類(lèi)型68
3.3.7任意個(gè)數(shù)的參數(shù)70
3.3.8函數(shù)調(diào)用71
3.4函數(shù)式編程74
3.4.1lambda74
3.4.2reduce()75
3.4.3filter()76
3.4.4map()77
3.4.5行函數(shù)77
3.5常用的內(nèi)置函數(shù)78
3.5.1sum78
3.5.2zip79
3.5.3enumerate80
3.5.4max和min81
3.5.5eval81
3.5.6判斷函數(shù)83
3.6常見(jiàn)的錯(cuò)誤顯示86
3.6.1常見(jiàn)的錯(cuò)誤類(lèi)型87
3.6.2初學(xué)者常犯的錯(cuò)誤89
3.6.3try93
3.6.4assert95
3.6.5raise95
3.7模塊和包96
3.7.1模塊(module)96
3.7.2包(package)100
3.7.3datetime和calendar模塊101
3.7.4urllib模塊105
3.8類(lèi)106
本章小結(jié)109
練習(xí)109
第4章Python數(shù)據(jù)分析實(shí)戰(zhàn)113
4.1關(guān)于Pandas114
4.1.1什么是Pandas114
4.1.2Pandas中的數(shù)據(jù)結(jié)構(gòu)114
4.1.3Pandas的安裝方法114
4.1.4在Anaconda中安裝
第三方庫(kù)118
4.2數(shù)據(jù)準(zhǔn)備119
4.2.1數(shù)據(jù)類(lèi)型119
4.2.2數(shù)據(jù)結(jié)構(gòu)120
4.2.3數(shù)據(jù)導(dǎo)入128
4.2.4數(shù)據(jù)導(dǎo)出131
4.3數(shù)據(jù)處理133
4.3.1數(shù)據(jù)清洗133
4.3.2數(shù)據(jù)抽取138
4.3.3排名索引147
4.3.4數(shù)據(jù)合并151
4.3.5數(shù)據(jù)計(jì)算154
4.3.6數(shù)據(jù)分組156
4.3.7日期處理157
4.4數(shù)據(jù)分析162
4.4.1基本統(tǒng)計(jì)162
4.4.2分組分析163
4.4.3分布分析165
4.4.4交叉分析167
4.4.5結(jié)構(gòu)分析169
4.4.6相關(guān)分析170
4.5數(shù)據(jù)可視化172
4.5.1餅圖172
4.5.2散點(diǎn)圖174
4.5.3折線圖176
4.5.4柱形圖180
4.5.5直方圖183
本章小結(jié)184
練習(xí)184
第5章其他187
5.1文件讀寫(xiě)操作188
5.1.1文件的讀寫(xiě)方法189
5.1.2文件的其他方法190
5.1.3文件的存儲(chǔ)和讀取190
5.2with語(yǔ)句192
5.3Anaconda下安裝statsmodels包193
5.4關(guān)于Spyder界面恢復(fù)默認(rèn)狀態(tài)的
處理195
5.5關(guān)于Python計(jì)算精度的問(wèn)題197
5.6矩陣運(yùn)算200
5.6.1創(chuàng)建矩陣200
5.6.2矩陣屬性200
5.6.3解線性方程組201
5.6.4線性規(guī)劃最優(yōu)解202
5.7正則表達(dá)式203
5.8使用urllib打開(kāi)網(wǎng)頁(yè)209
5.9網(wǎng)頁(yè)數(shù)據(jù)抓取212
5.10讀取文檔217
本章小結(jié)222
練習(xí)222
參考文獻(xiàn)224
第2章Python數(shù)據(jù)類(lèi)型與運(yùn)算
我們先了解Python的幾個(gè)語(yǔ)法常識(shí)。
1.代碼注釋方法
(1)在一行中,“#”后的語(yǔ)句不再執(zhí)行,而表示被注釋。
(2)如果要進(jìn)行大段的注釋?zhuān)梢允褂萌齻(gè)單引號(hào)(’’’)或者雙引號(hào)(”””)將注釋內(nèi)容包圍。單引號(hào)和雙引號(hào)在使用上沒(méi)有本質(zhì)的差別。
【例2-1】三個(gè)雙引號(hào)注釋段落:
#-*-coding:utf-8-*-
"""
CreatedonSunMar1321:20:062016
@author:yubg
"""
lis=[1,2,3]
foriinlis:#半角狀態(tài)冒號(hào)不能少,下一行注意縮進(jìn)
i+=1
print(i)
本例不需要上機(jī)操作,僅為展示用法。
2.用縮進(jìn)來(lái)表示分層
Python不像C語(yǔ)言那樣用{}來(lái)表示語(yǔ)句塊,而是通過(guò)讓代碼縮進(jìn)4個(gè)空格來(lái)表示分層,當(dāng)然也可以使用Tab鍵,但不要混合使用Tab鍵和空格來(lái)進(jìn)行縮進(jìn),否則會(huì)使程序在跨平臺(tái)時(shí)不能正常工作,官方推薦的做法是使用四個(gè)空格。
一般來(lái)說(shuō),行尾遇到“:”就表示下一行縮進(jìn)的開(kāi)始,如例2-1中的“foriinlis”行尾有冒號(hào),下一行的“i+=1”就需要縮進(jìn)四個(gè)空格。
3.語(yǔ)句斷行
一般來(lái)說(shuō),Python中的一條語(yǔ)句占一行,在每條語(yǔ)句的結(jié)尾處不需要使用分號(hào)(;)。但在Python中也可以使用分號(hào),表示將兩條簡(jiǎn)單語(yǔ)句寫(xiě)在一行。但如果一條語(yǔ)句較長(zhǎng),要分幾行來(lái)寫(xiě),可以使用“\”來(lái)進(jìn)行換行。分號(hào)還有個(gè)作用,使用在一行語(yǔ)句的末尾,表示對(duì)本行語(yǔ)句的結(jié)果不打印輸出。一般地,系統(tǒng)能夠自動(dòng)識(shí)別換行,如在一對(duì)括號(hào)中間或三引號(hào)之間均可換行。例如下面代碼中的第三行較長(zhǎng),若要對(duì)其分行,則必須在括號(hào)內(nèi)進(jìn)行(包括圓括號(hào)、方括號(hào)和花括號(hào)):
frompandasimportDataFrame#導(dǎo)入模塊中的函數(shù),后面再講
frompandasimportSeries
df=DataFrame({'age':Series([26,85,64]),'name':Series(['Ben','Joh','Jef'])})
print(df)
分行后的第二行一般空四個(gè)空格,在3.5版本中已經(jīng)優(yōu)化,可以不空四個(gè)空格,但是在較低的3.x版本中不空四個(gè)空格會(huì)報(bào)錯(cuò)。
frompandasimportDataFrame
frompandasimportSeries
df=DataFrame({'age':Series([26,85,64]),#此語(yǔ)句分成了兩行
'name':Series(['Ben','Joh','Jef'])})
print(df)
4.print()的作用
print()會(huì)在輸出窗口中顯示一些文本或結(jié)果,便于驗(yàn)證和顯示數(shù)據(jù)。
5.使用轉(zhuǎn)義符
如果需要在一個(gè)字符串中嵌入一個(gè)引號(hào),該如何操作?
有兩種方法:可以在引號(hào)前加反斜杠(\),或者用不同的引號(hào)包圍這個(gè)引號(hào)。
例如:
>>>s1='I\'amaboy.'#可以使用轉(zhuǎn)義符\
>>>print(s1)
I'amaboy.
>>>s2="I'amaboy."#也可以用不同的引號(hào)包圍起來(lái),此處用雙引號(hào)是為了區(qū)分單引號(hào)
>>>print(s2)
I'amaboy.
>>>
轉(zhuǎn)義符詳見(jiàn)本章2.2.5小節(jié)的內(nèi)容。
2.1數(shù)據(jù)類(lèi)型
Python總共有6種數(shù)據(jù)類(lèi)型,分別是數(shù)字型(Numbers)、字符串型(String)、列表型(List)、元組型(Tuple)、集合型(Sets)和字典型(Dictionaries)。
數(shù)字型又可劃分為整數(shù)型(int)、浮點(diǎn)型(float)、布爾型(bool)和復(fù)數(shù)型(complex)。
在Python中有4種類(lèi)型的數(shù)——整數(shù)、長(zhǎng)整數(shù)、浮點(diǎn)數(shù)和復(fù)數(shù)。
例如,2是一個(gè)整數(shù)的例子。
長(zhǎng)整數(shù)不過(guò)是大一些的整數(shù)。
3.23和52.3E-4是浮點(diǎn)數(shù)的例子,E標(biāo)記表示10的冪。52.3E-4表示52.3×10-4。
(-5+4j)和(2.3-4.6j)表示的是復(fù)數(shù)。
……