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