Python程序設計語言(第二版)(微課版)課件 12 Python計算生態_第1頁
Python程序設計語言(第二版)(微課版)課件 12 Python計算生態_第2頁
Python程序設計語言(第二版)(微課版)課件 12 Python計算生態_第3頁
Python程序設計語言(第二版)(微課版)課件 12 Python計算生態_第4頁
Python程序設計語言(第二版)(微課版)課件 12 Python計算生態_第5頁
已閱讀5頁,還剩44頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

主講教師:姓名第十二章Python計算生態學習目標理解計算思維概念及特征掌握計算生態的概念及基本內置函數理解標準庫是如何導入并掌握3個常用的標準庫掌握第三方庫的安裝及導入了解生態庫的劃分目錄計算思維Python計算生態Python內置函數重Python標準庫重1234Python第三方庫5重難難6經典程序分析難重重知識導圖12.1計算思維計算思維是運用計算機科學的基礎概念進行問題求解、系統設計、以及理解人類行為的思維活動。計算思維的本質:抽象(abstraction)自動化(automation)計算思維六要素:分解抽象算法調試迭代泛化周以真教授美國卡內基梅隆大學計算機科學系主任,2006年3月在美國計算機權威期刊《CommunicationsoftheACM》雜志給出計算思維定義。12.1計算思維

1234sum=0foriinrange(1,101):sum=sum+iprint(sum)12.2計算生態Python作為一門開源語言,其誕生之初就致力于開源開放,而且由于Python有非常簡單靈活的編程方式,很多采用C、C++等語言編寫的標準庫經過簡單的接口封裝,可以供Python語言程序調用。正是因為其膠水特性,Python迅速建立了全球最大的編程語言開放社區,到現在建立了三十多萬個第三方庫的龐大規模,構建了強大的計算生態。計算生態包括:標準庫、第三方庫、用戶自定義庫。每一個模塊就是一個Python文件。12.3內置函數這些內置對象都封裝在內置模塊__builtins__之中,推薦優先使用,在Python3.8.7版本中提供69個內置函數,如表12.1所示。使用內置函數dir()可以查看所有內置函數和內置對象:abs()delattr()hash()memoryview()set()all()dict()help()min()setattr()any()dir()hex()next()slice()ascii()divmod()id()object()sorted()bin()enumerate()input()oct()staticmethod()bool()eval()int()open()str()breakpoint()exec()isinstance()ord()sum()bytearray()filter()issubclass()pow()super()bytes()float()iter()print()tuple()callable()format()len()property()type()chr()frozenset()list()range()vars()classmethod()getattr()locals()repr()zip()compile()globals()map()reversed()__import__()complex()hasattr()max()round()

>>>dir(__builtins__)12.3內置函數算術運算函數函

數功能實

例結

果abs(x)返回數值x的絕對值abs(-1.5);abs(-10)1.510divmod(a,b)返回a除以b的商和余數divmod(27,6)(4,3)pow(x,y[,z])返回xy次冪,如果指定z,則為pow(x,y)%z的值pow(2,3)pow(2,3,3)82round(number[,ndigits])求四舍五入取整,如果指定ndigits,則保留n位小數round(12.8)round(1278.843,-2)131300.0sum(iterable[,start])對組合數據類型計算求和sum([1,2,3,4,5])15max(a1,a2,…)返回參數的最大值max(1,2,3,4,5)5min(a1,a2,…)返回參數的最小值mix(1,2,3,4,5)112.3內置函數數據類型轉換函數類

型函

數功

能實例結

果進制轉換bin(number)將整數轉換為二進制字符串bin(5)'0b101'oct(number)將整數轉換為八進制字符串oct(9)'0o11'hex(number)將整數轉換為十六進制字符串hex(20)'0x14'數值轉換int(x,base=10)將x轉換成整數,base默認為十進制,如果base為零表示整數文本int(10.6)int('0xaf',0)10175float(x)將x轉換成浮點數float(2021)2021.0數據類型轉換str(x)創建或將變量x轉換為等值的字符串類型str(10);str(0x1010)str([1,2,3])'10''4112''[1,2,3]'list(x)創建或將變量x轉換成列表類型list("abc")['a','b','c']tuple(x)創建或將變量x轉換成元組類型tuple({'a':97,'b':98})('a','b')dict(x)創建或將變量x轉換成字典類型dict([('a',97),('b',98)]){'a':97,'b':98}set(x)創建或將變量x轉換成集合類型set([1,3,4,3,1]){1,3,4}eval(s)計算字符串s作為表達式的值eval("3+4")7字符轉換ord(c)返回單個字符Unicode編碼的值ord('a')97chr(i)返回Unicode編碼對應的字符chr(97)'a'12.3內置函數數據測試函數函

數功

能實例結

果type(x)返回變量x的數據類型type("abc")<class'str'>all(x)變量x中的所有元素都為真時返回True,否則返回False,若x為空返回Trueall(['a','b','c','d'])all(['','b','c','d'])TrueFalseany(x)變量x中任意一元素都為真時返回True,否則返回False,若x為空返回Falseany(['','b',0,None])any(['',{},0,None])TrueFalseisinstance(obj,classinfo)用來判斷一個對象是否是一個已知的類型,返回邏輯值,classinfo可以是一個class或tupleisinstance('a',str)isinstance('a',int)isinstance(['奮斗'],(int,tuple))TrueFalseFalse12.3內置函數迭代器函數函

數功

能enumerate(iterable[,start=0])用于將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,返回元素為元組(計數,數據)的可迭代對象,計數默認從0開始filter(function,iterable)返回一個迭代器,產生那些function(item)為真的可迭代項。如果function為None,則返回true的項目map(func,*iterables)map()函數會根據提供的函數對指定序列做映射。第一個參數function以參數序列中的每一個元素調用function函數,返回包含每次function函數返回值的新列表zip(*iterables)用來把多個可迭代對象中的元素壓縮到一起,返回一個可迭代的zip對象。產生zip對象中元素的個數以最短可迭代對象為準12.3內置函數迭代器函數【例12-1】enumerate()函數的應用實例。>>>季節=["春天","夏天","秋天","冬天"]>>>list(enumerate(季節))#下標從默認值0開始[(0,'春天'),(1,'夏天'),(2,'秋天'),(3,'冬天')]>>>list(enumerate(季節,start=1))#下標從1開始[(1,'春天'),(2,'夏天'),(3,'秋天'),(4,'冬天')]>>>seq=['one','two','three']>>>fori,elementinenumerate(seq):#使用for循環輸出 print(i,element)

0one1two2three12.3內置函數迭代器函數【例12-2】filter()函數的應用實例。>>>#過濾出列表中的所有偶數>>>defis_even(n): returnn%2==0

>>>newlist=filter(is_even,[1,2,3,4,5,6,7,8,9,10])>>>print(list(newlist))[2,4,6,8,10]12.3內置函數迭代器函數【例12-3】map()函數的應用實例。>>>defsquare(x):#計算平方數 returnx**2

>>>map(square,[1,2,3,4,5])#計算列表各個元素的平方<mapobjectat0x0000000002CFEEE0>#返回迭代器>>>list(map(square,[1,2,3,4,5]))#使用list()轉換為列表[1,4,9,16,25]>>>list(map(lambdax:x**2,[1,2,3,4,5]))#使用lambda匿名函數[1,4,9,16,25]>>>foriinmap(square,[1,2,3,4,5]):#使用for循環輸出 print(i,end="")

1491625>>>#使用map函數將用戶輸入的三位整數,分別求百位、十位和個位。>>>x=input("請輸入一個三位整數:")請輸入一個三位整數:326>>>b,s,g=map(int,x)#變量x中存儲的是字符串類型>>>print("百位數為:{},十位數為:{},個位數為:{}".format(b,s,g))百位數為:3,十位數為:2,個位數為:612.3內置函數迭代器函數【例12-4】zip()函數應用實例。>>>list(zip("abc"))#使用list()轉換為列表[('a',),('b',),('c',)]>>>list(zip('abc',[1,2,3]))#將字符串和列表兩個序列壓縮成以元組為元素的一個列表[('a',1),('b',2),('c',3)]>>>x=zip('1234','abcde')#將zip對象賦值給變量x>>>list(x)#將zip對象轉換成列表[('1','a'),('2','b'),('3','c'),('4','d')]>>>list(x)#zip對象只能遍歷一次[]>>>a='abcdef'>>>b=[1,2,3,4]>>>foriinzip(a,b):#使用for循環輸出 print(i,end=',')

('a',1),('b',2),('c',3),('d',4),12.3內置函數其它內置函數函

數功

能實

例結

果len(x)返回變量x的元素個數len("abc")len(["錢學森","華羅庚","鄧稼先","袁隆平"])34format(v,format_spec='')將v轉換為指定格式的字符串format(10.3476,"7.3f")'10.348'id(obj)返回對象的唯一標識符,標識符是一個整數,即內存地址id('abc')2087020838384input(s)獲取用戶輸入,其中s是字符串,作為提示信息,s可選mfd=input("民法典實施日期:")民法典實施日期:2021-1-1'2021-1-1'print(value,seq='',end='\n')將單值或多值打印輸出print("jmsu","edu","cn",sep='.')open(file,mode='r',encoding=None)打開文本文件,并返回一個文件對象open(r"c:\text1.txt","r",encoding="utf-8")文件對象range(start,stop[,step])從start到stop(包含)以step為步長產生一個序列list(range(5))list(range(1,5))list(range(1,10,3))[0,1,2,3,4][1,2,3,4][1,4,7]reversed(seq)返回序列seq逆序迭代形式list(reversed([1,2,3,4,5]))list(reversed("abc"))[5,4,3,2,1]['c','b','a']sorted(iterable,key=None,reverse=False)對序列進行排列,默認從小到達sorted([1,3,5,2,4])[1,2,3,4,5]12.4Python標準庫Python標準庫非常龐大,所提供的標準庫涉及范圍十分廣泛,正如以下內容目錄所顯示的。這個庫包含了多個內置模塊(以C編寫),Python程序員必須依靠它們來實現系統級功能,例如文件I/O,此外還有大量以Python編寫的模塊,提供了日常編程中許多問題的標準解決方案。在國家計算機等級考試中Python語言常用到的標準庫有turtle庫、random庫(詳見3.4節)、math庫、time庫、datetime庫等,我們主要以前三個標準庫為例來介紹。12.4Python標準庫_turlte繪圖庫方

法功

能pensize(width=None)|width(width=None)設置畫筆的寬度。pencolor()pencolor(colorstring)pencolor((r,g,b))1.沒有參數返回當前畫筆顏色。2.傳入參數時設置畫筆顏色,可以是字符串如"green","red"、"#33cc8c",也可以是RGB。3.元組,如(1.0,0.56,0),colormode方法默認為1.0小數形式,可以通過colormode(255)改為整數形式speed(speed=None)設置畫筆移動速度,畫筆繪制的速度范圍整數或速度字符串。如"fastest":0最快;"fast":10快;"normal":6正常;"slow":3慢;"slowest":1最慢>>>importturtle#導入turtle庫>>>turtle.circle(100)#調用turtle庫繪制圓的circle方法>>>importturtleast#導入turtle庫以別名t代替>>>t.circle(100)#用別名t調用turtle庫的方法使用turtle庫繪制圖形時,首先需要通過import命令導入turtle庫及調用方法,兩種方式命令如下:方式一:方式二:12.4Python標準庫_turlte繪圖庫【例12-6】設置畫筆顏色為紫色,寬度5像素,速度最快,繪制一個圓。>>>turtle.pencolor("purple")>>>turtle.pensize(5)>>>turtle.speed(0)#也可以turtle.speed("fastest")>>>turtle.circle(50)12.4Python標準庫_turlte繪圖庫畫筆動作方法方

法功

能goto(x,y)將畫筆移動到坐標為x,y的位置penup()|pu()|up()提起筆移動,不繪制圖形,用于另起一個地方繪制pendown()|pd()|down()移動時繪制圖形,缺省時也為繪制forward(distance)|fd(distance)向前運動,向當前畫筆方向移動distance像素長度backward(distance)|bk(distance)向后運動,向當前畫筆相反方向移動distance像素長度home()設置當前畫筆位置為原點,朝向東circle(radius,extent=None)半徑為正(負),表示逆(順)時針畫圓left(degree)|lt(degree)逆時針移動degree°,但不運動right(degree)|rt(degree)順時針移動degree°,但不運動setheading(angle)|seth(angel)設置當前朝向為angle角度,但不運動12.4Python標準庫_turlte繪圖庫【例12-7】繪制一個正三角形和一個半徑100順時針的紅色圓。>>>importturtleast #導入turtle模塊別名為t>>>t.setup(500,500,0,0) #設置畫布寬、高,左上角頂點的位置>>>t.pensize(5) #設置畫筆寬度為5>>>t.speed(1) #設置繪制速度為1>>>t.penup() #提起畫筆,不繪制圖形>>>t.goto(100,0) #將畫筆水平向右移動100像素>>>t.left(60) #逆時針旋轉60度>>>t.pendown() #落下畫筆,移動時繪制圖形>>>t.forward(100)#向當前畫筆方向移動100像素長度畫一條直線>>>t.right(120) #順時針旋轉120度>>>t.forward(100)#向當前畫筆方向移動100像素長度畫一條直線>>>t.right(120)>>>t.forward(100)>>>t.penup()>>>t.home() #設置當前畫筆位置為原點,朝向東>>>t.pendown()>>>t.pencolor("red")#設置畫筆顏色為紅色>>>t.circle(-100) #順時針畫圓,半徑為10012.4Python標準庫_turlte繪圖庫畫筆控制方法方

法功

能fillcolor(colorstring)|fillcolor((r,g,b))繪制圖形的填充顏色,colorstring表示顏色的字符串,如“red”、“purple”等。(r,g,b)顏色對應RGB的0-1數值,如(1,0.65,0)color(color1,color2)同時設置畫筆色pencolor=color1和填充色fillcolor=color2begin_fill()準備開始填充圖形end_fill()填充完成同時上色hideturtle()|ht()隱藏畫筆的turtle形狀showturtle()|st()顯示畫筆的turtle形狀write(s[,font=("font-name",font_size,"font_type")])寫字符s,設置字體名稱,大小和類型;font為可選項clear()清空turtle窗口,但是turtle的位置和狀態不會改變undo()撤銷上一個turtle動作mainloop()|done()啟動事件循環-調用Tkinter的mainloop函數。必須作為一個海龜繪圖程序的結束語句12.4Python標準庫_turlte繪圖庫【例12-8】繪制紅色線條的六邊形,線條大小5像素,每條長度80,填充黃色。在下方30像素出顯示“六邊形”,隱藏畫筆。>>>importturtleast #導入turtle模塊別名為t>>>t.pensize(5) #設置畫筆寬度>>>t.color("red","yellow")#設置畫筆顏色為紅色,填充顏色為黃色>>>t.begin_fill()#開始填充>>>foriinrange(6): #繪制六邊形 t.forward(80) t.left(60)

>>>t.end_fill()#結束填充>>>t.penup()#提筆>>>t.goto(0,-30)#垂直下移30像素>>>t.write("六邊形",font=("宋體",18))#寫字,字體為宋體,字號18>>>t.hideturtle() #隱藏畫筆>>>#注意:如果上一步操作繪制錯誤可以使用t.undo()來進行撤銷操作12.4Python標準庫_random隨機數庫隨機數可以用于日常生活、數學、游戲等領域中,還經常被嵌入到算法中,用來提高算法效率,并提高程序的安全性。random庫常用生成隨機數方法如表12.10所示,通過importrandom導入random庫。方

法功

能random.seed(a=None)初始化隨機數種子,默認值為當前系統時間。如果你不了解其原理,你不必設定seed,Python會幫你設定random.random()生成一個[0.0,1.0]之間的隨機小數random.randint(a,b)生成一個[a,b]之間的整數random.randrange(stop)random.randrange(start,stop[,step])生成一個[0,stop)之間的隨機整數生成一個[start,stop)之間以step為步數的隨機整數random.getrandbits(k)生成一個k比特長度的隨機整數,如random.getrandbits(2),它產生的范圍在[0,3]之間求值random.choice(seq)從非空序列seq中返回一個隨機元素。如果seq為空,則引發錯誤IndexErrorrandom.shuffle(seq[,random])將序列seq隨機打亂位置,返回打亂后的序列random.sample(seq,k)返回從序列seq中選擇的唯一元素的k個元素,以列表類型返回。用于無重復的隨機抽樣。random.uniform(a,b)返回一個[a,b]之間的隨機浮點數12.4Python標準庫_random隨機數庫【例12-9】從學生列表中隨機產生N名學生,名單中不允許有重復名字。123456789101112importrandom

n=eval(input("請輸入隨機產生幾名學生:"))students=['閆明銳','王志超','李珊珊','陳德方','張勇強','孫維剛','王童銳','劉銘','張也','韋一峰','李潔明','朱富貴']newStudents=set()whileTrue:iflen(newStudents)==n:breakelse:newStudents.add(random.choice(students))print(newStudents)請輸入隨機產生幾名老師:5{'張勇強','劉銘','王志超','王童銳','朱富貴'}1234567importrandom

n=eval(input("請輸入隨機產生幾名學生:"))students=['閆明銳','王志超','李珊珊','陳德方','張勇強','孫維剛','王童銳','劉銘','張也','韋一峰','李潔明','朱富貴']print(random.sample(students,n))方法一:方法二:運行結果:運行結果:請輸入隨機產生幾名學生:5['閆明銳','張也','朱富貴','劉銘','張勇強']12.4Python標準庫_math數學庫math庫提供了對C標準定義的數學函數的訪問。實現了許多對浮點數的數學運算方法,這些方法一般與C語言庫中的同名函數的封裝。這些函數不適用于復數;如果你需要計算復數,請使用cmath模塊中的同名函數。math庫的常用數學運算方法如表12.11所示。通過importmath來調用方法。方

法功

能實

例運行結果math.e自然常數emath.e2.718281828459045math.pimath.pi3.141592653589793math.ceil(x)返回不小于x的整數math.ceil(3.89)math.ceil(-3.89)4-3math.floor(x)返回不大于x的整數math.floor(4.57)math.floor(-4.27)4-5math.fabs(x)返回x的絕對值math.fabs(-3.7)3.7math.factorial(x)返回x的階乘math.factorial(5)120math.sqrt(x)返回x的平方根并且是浮點數math.sqrt(9)3.0math.fmod(x,y)返回x%y的余數并且是浮點數math.fmod(9,5)4.0math.fsum(iterable)返回可迭代對象中的精準浮點值math.fsum([2,4,5,6])17.0math.gcd(*integers)返回給定整數參數的最大公約數math.gcd(27,24)3math.modf(x)返回x的小數和整數部分。兩個結果都帶有x的符號并且是浮點數math.modf(3.85)math.modf(4.5)(0.8500000000000001,3.0),(0.5,4.0)math.trunc(x)返回x的整數部分math.trunc(4.55)4math.pow(x,y)返回x的y次方并且是浮點數math.pow(3,3)27.0math.exp(x)返回e的x次方math.exp(2)7.38905609893065math.log(x[,base])返回x的以base為底的對數,base默認為emath.log(10)2.302585092994046math.log10(x)返回x的以10為底的對數math.log10(20)1.3010299956639813math.sin(x)返回x弧度的正弦值math.sin(math.pi/2)1.0math.cos(x)返回x弧度的余弦值math.cos(math.pi/4)0.7071067811865476math.tan(x)返回x弧度的余弦值math.tan(math.pi/4)0.9999999999999999math.atan(x)返回以弧度為單位的x的反正切值。結果范圍在-pi/2到pi/2之間math.atan(math.pi/4)0.6657737500283538math.degrees(x)將角度x從弧度轉換為角度math.degrees(math.pi/2)90.0math.radians(x)將角度x從角度轉換為弧度math.radians(45)0.785398163397448312.4Python標準庫_math數學庫【例12-10】用int、floor、ceil將浮點數轉換為整數應用實例123456789importmathasm

hds=['i','int','trunc','floor','ceil']print('{:^6}{:^6}{:^6}{:^6}{:^6}'.format(*hds))print('{:-^6}{:-^6}{:-^6}{:-^6}{:-^6}'.format('','','','','',))fmt='{:5.1f}{:5.1f}{:6.1f}{:6.1f}{:7.1f}'TEST_VALUES=[-1.5,-0.8,-0.5,-0.2,0,0.2,0.5,0.8,1.5]foriinTEST_VALUES:print(fmt.format(i,int(i),m.trunc(i),m.floor(i),m.ceil(i)))運行結果:iinttruncfloorceil

-1.5-1.0-1.0-2.0-1.0-0.80.00.0-1.00.0-0.50.00.0-1.00.0-0.20.00.0-1.00.00.00.00.00.00.00.20.00.00.01.00.50.00.00.01.00.80.00.00.01.01.51.01.01.02.012.4Python標準庫_math數學庫【例12-11】弧度(radians)與角度(degrees)轉換應用。12345678910111213141516importmathasm

hds=['Degrees','Radians']print('{:^7}{:^7}'.format(*hds))print('{:-^7}{:-^7}'.format('',''))input_datas=[(0,0),(30,m.pi/6),(45,m.pi/4),(60,m.pi/3),(90,m.pi/2),(180,m.pi),(270,3/2.0*m.pi),(360,2*m.pi)]fordeg,expectedininput_datas:print('{:7d}{:7.2f}'.format(deg,m.radians(deg)))DegreesRadiansexpected

00.000.00300.520.52450.790.79601.051.05901.571.571803.143.142704.714.713606.286.28運行結果:12.5第三方庫Python計算生態另一種形式是采用按需安裝才能使用的功能模塊,被稱為Python第三方庫。第三方庫獲取通過PyPI網址:第三方庫的安裝:見1.6節【例12-13】通過pip工具安裝中文分詞庫jieba?!痉治觥渴紫却蜷_命令窗口,通過單擊右鍵“開始菜單”,找到“運行”命令單擊,在運行對話框中輸入cmd,打開命令窗口。在提示符后輸入pipinstalljieba回車。12.5第三方庫第三方庫縱覽Python計算生態從數據處理到人工智能、從Web解析到網絡空間、從人機交互到藝術設計涌現出許多優秀的第三方庫,從10個領域來介紹第三方庫,每個部分簡要介紹三個Python計算生態庫。1、數據分析數據分析是Python的一個優勢方向,具有大批高質量的第三方庫。最常用的生態庫:numpy、pandas、scipy。(1)numpy庫Python數據分析的最基本的庫是Numpy,它用于表達N維數組,是眾多數據分析庫的基礎。有關numpy庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝numpy庫:>pipinstallnumpy12.5第三方庫1、數據分析(2)pandas庫進一步提供數據分析的功能可以使用Pandas庫,它是數據分析高層次應用庫,簡單來說它提供了簡單易用的具有較高抽象的數據結構以及數據分析的方法。pandas庫是我們理解數據類型和索引關系、操作索引進而操作數據的重要的第三方庫,是Python最主要的數據分析功能庫。并且pandas庫本身是基于numpy開發,速度非常優異。有關pandas庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝pandas庫:>pipinstallpandas(3)scipy庫再進一步,Python提供了一個在數學、科學和工程計算方面的第三方庫,叫scipy。scipy提供了一批數學算法以及工程數據運算的功能,它很類似在工程中使用的一個工具Matlab。Scipy庫包含統計、優化、整合、傅里葉變換、信號處理、常微分方程求解等相關的模塊。scipy最主要是是用于科學計算和工程計算,它的底層也是基于Numpy開發的,因此計算性能非常優異。有關scipy庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝scipy庫:>pipinstallpandas12.5第三方庫2、數據可視化

數據可視化是指根據數據特點將其展示位易于理解的圖形的過程。Python語言在數據可視化方面具有較強的優勢。最常用的生態庫:matplotlib、seaborn、mayavi。(1)matplotlib庫在基礎的數據分析之上,我們希望對數據進行直觀的展示,那么Python提供了一批進行數據可視化的第三方庫,其中最基礎的高質量的二維數據可視化功能庫要數matplotlib。matplotlib提供了超過100種數據可視化的展示效果,由于這個庫的展示效果非常多,所以這個庫的子庫也非常多。有關matplotlib庫的更多介紹請訪問官方網站:/。在官網Examples菜單項下有許多實例。在Windows的cmd命令行使用如下命令安裝matplotlib庫:>pipinstallmatplotlib12.5第三方庫2、數據可視化

數據可視化是指根據數據特點將其展示位易于理解的圖形的過程。Python語言在數據可視化方面具有較強的優勢。最常用的生態庫:matplotlib、seaborn、mayavi。(2)seaborn庫seaborn庫能夠對統計類數據進行有效的可視化展示,它提供了一批高層次的統計類數據的可視化展示效果。統計類數據指的是可以展示數據間的分布、分類、線性關系等一些內容。seaborn是基于matplotlib進行在封裝開發,并且支持numpy和pandas。官網:/有關seaborn庫的更多介紹請訪問官方網站:https:///。在官網Gallery菜單項下有許多實例,如圖12-10所示:在Windows的cmd命令行使用如下命令安裝seaborn庫:>pipinstallseaborn12.5第三方庫2、數據可視化

數據可視化是指根據數據特點將其展示位易于理解的圖形的過程。Python語言在數據可視化方面具有較強的優勢。最常用的生態庫:matplotlib、seaborn、mayavi。(3)Mayavi庫除了最基本的二維數據可視化之外,Python也提供了一些三維科學數據可視化的功能庫,其中最優秀的要數Mayavi庫,它提供了一批簡單易用的三維科學計算數據可視化的展示效果,目前是第二個版本(Mayavi2)。三維可視化最主要的第三方庫就是Mayavi,它同時支持Numpy、TVTK、Traits、Envisage等第三方庫,并且能與它們聯動使用。有關mayavi庫的更多介紹請訪問官方網站:/mayavi/mayavi/。通過選擇“Galleryandexamples”查看更多的圖庫和示例。>pipinstallmayavi>pipinstallPyQt512.5第三方庫3、文本處理Python提供了很多與文本處理相關的計算生態庫,非常適合處理文本,在這個方向也形成了大量有價值的第三方庫。最常用的生態庫python-docx、openxl、PyPDF2。(1)

python-docx庫MicrosoftOffice軟件是我們在日常工作中經常使用的一個工作集,Python提供了一些操作MicrosoftWord文件的第三方庫,其中最優秀的是python-docx庫,它支持讀取、查詢以及修改doc、docx等格式文件。有關python-docx庫的更多介紹請訪問官方網站:https://python-docx.readthedocs.io/en/latest/index.html。在Windows的cmd命令行使用如下命令安裝python-docx庫:>pipinstallpython-docx【例12-14】通過python-docx庫創建一個word文檔。12345678910fromdocximportDocument#導入python-docx庫中的Document對象

document=Document()#創建Document()實例document.add_heading('文檔標題',0)#添加標題p=document.add_paragraph('標題1\n標題2\n標題3')#添加段落p.add_run('bold').bold=True#段落后面追加bold為粗體document.add_paragraph('firstiteminunorderedlist',style='ListBullet')document.add_paragraph('firstiteminorderedlist',style='ListNumber')document.add_page_break()document.save('demo.docx')12.5第三方庫3、文本處理Python提供了很多與文本處理相關的計算生態庫,非常適合處理文本,在這個方向也形成了大量有價值的第三方庫。最常用的生態庫python-docx、openxl、PyPDF2。(2)

openpyxl庫openpyxl是一個處理MicrosoftExcel文檔的Python第三方庫,它支持讀寫Excel的xls、xlsx、xlsm、xltx、xltm等格式文件,并進一步能處理Excel文件中的工作表、表單和數據單元。有關openpyxl庫的更多介紹請訪問官方網站:http://openpyxl.readthedocs.io/。在Windows的cmd命令行使用如下命令安裝openpyxl庫:>pipinstallopenpyxl(3)PyPDF2庫PyPDF2是一個與pdf文件相關的工作集,它提供了一批處理pdf文件的計算功能,包括獲取pdf文件中的信息以及其中的內容、逐頁拆分文檔、逐頁合并文檔、加密或解密文件、裁剪頁面等。PyPDF2完全使用Python語言實現,不需要額外的依賴,功能非常穩定。有關PyPDF2庫的更多介紹請訪問官方網站:http://mstamy2.github.io/PyPDF2/。在Windows的cmd命令行使用如下命令安裝PyPDF2庫:>pipinstallPyPDF212.5第三方庫4、機器學習

機器學習是人工智能領域的一個重要分支,Python語言也是機器學習和人工智能的重要基礎語言,python提供了一批與機器學習相關的第三方生態庫,其中三個高質量的機器學習框架:scikit-learn、TensorFlow、Theano。(1)

scikit-learn庫

scikit-learn是機器學習方法的一個工具集,它提供了一批統一化使用的機器學習方法,其中包括聚類、分類、回歸、數據降維、模型選擇、數據預處理等相關功能,它也是機器學習最基本且最優秀的Python第三方庫,它基于NumPy、Scipy和matplotlib構建。有關scikit-learn庫的更多介紹請訪問官方網站:/stable/。在Windows的cmd命令行使用如下命令安裝scikit-learn庫:>pipinstallscikit-learn(2)TensorFlow庫TensorFlow是谷歌公司基于DistBelief進行研發的第二代人工智能學習系統,也是AlphaGo系統的機器學習框架,它是谷歌公司推動并建立的開源機器學習功能框架。開源的TensorFlow使用的就是Python語言,它能夠將數據流圖作為基礎,在圖中以節點代表運算,邊代表張量,進而形成機器學習的整體模式,它也是應用機器學習的一種方式,它支撐了谷歌人工智能的所有應用。有關TensorFlow庫的更多介紹請訪問官方網站:/。12.5第三方庫4、機器學習

機器學習是人工智能領域的一個重要分支,Python語言也是機器學習和人工智能的重要基礎語言,python提供了一批與機器學習相關的第三方生態庫,其中三個高質量的機器學習框架:scikit-learn、TensorFlow、Theano。(3)

Theano庫Theano為執行深度學習中大規模神經網絡算法的運算而設計,擅長處理多維數組。Theano開發始于2007年,可以理解它是一個運算數學表達式的編譯器,并可以高效運行在GPU或CPU上。Theano是一個偏向底層開發的庫,更像一個研究平臺而非單純的深度學習庫。有關Theano庫的更多介紹請訪問官方網站:/software/theano/。在Windows的cmd命令行使用如下命令安裝Theano庫:>pipinstalltheano12.5第三方庫5、網絡爬蟲

網絡爬蟲是指通過程序將Web頁面中的內容爬取下來。Python語言提供了多個具備網絡爬蟲功能的第三方生態庫。這里介紹四個常用的Python網絡爬蟲庫:requests、scrapy、pyspide。(1)

requests庫

requests提供了簡單易用的,類似HTTP協議的網絡爬蟲功能,它支持連接池、SSL、Cookies、HTTP以及HTTPS代理等相關功能,即使我們的網絡環境十分復雜,也可以使用requests庫來爬取特定的頁面。requests是Python最主要的頁面級網絡爬蟲功能庫。有關requests庫的更多介紹請訪問官方網站:/en/master/。在Windows的cmd命令行使用如下命令安裝requests庫:>pipinstallrequests方

法功

能requests.request()構造一個請求,支撐一下各個方法的基礎方法requests.get()獲取HTML網頁的主要方法,對應于HTTP的GETrequests.head()獲取HTML頁面頭信息的方法,對應與HTTP的HEADrequests.post()向HTML網頁提交POST請求的方法,對應于HTTP的POSTrequests.put()向HTML網頁提交PUT請求的方法,對應于HTTP的PUTrequests.patch()向HTML頁面提交局部修改請求,對應于HTTP的PATCHrequests.delete()向HTML頁面提交刪除請求,對應于HTTP的DELETE12.5第三方庫5、網絡爬蟲

網絡爬蟲是指通過程序將Web頁面中的內容爬取下來。Python語言提供了多個具備網絡爬蟲功能的第三方生態庫。這里介紹四個常用的Python網絡爬蟲庫:requests、scrapy、pyspide。(2)

scrapy庫scrapy是Python開發的一個快速的、高層次的Web獲取框架。在Scrapy中,它支持批量或定時的網頁爬取,并且提供數據處理的完整流程。Scrapy包含若干個組件和部分,期望了解更多的專業網絡爬蟲構建可以深入的去學習這個庫的功能。有關scrapy庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝scrapy庫:>pipinstallscrapy(3)pyspider庫

通過pyspider來形成一個完整的網頁爬取系統。pyspider不僅支持網頁爬取的基本功能,它也能夠支持后端加載不同的數據庫、構建消息隊列、分發優先級以及在不同的計算機上形成分布式架構等一批重要的功能,它也是Python的網絡爬蟲第三方庫。使用pyspider也是建立和建設專業級Web網絡爬取系統的重要的支撐技術之一。有關pyspider庫的更多介紹請訪問官方網站:/en/latest/。在Windows的cmd命令行使用如下命令安裝pyspider庫:>pipinstallpyspider12.5第三方庫6、Web信息提取

Web信息提取是將頁面爬取下來之后,去解析其中的HTML和XML的內容,此時我們需要一批Web信息提取的第三方庫,這里主要介紹3個Python第三方生態庫:beautifulsoup4,re,goose3。(1)

beautifulsoup4庫

當我們將頁面爬取下來之后,解析其中的HTML和XML的內容,此時我們需要一批Web信息提取的第三方庫,其中最優秀的當屬Beautifulsoup。它用于解析和處理HTML以及XML的Web信息等全部功能,其中可以加載多種解析引擎,經常與網絡爬蟲庫搭配使用。比如可以在scrapy、requests中加載BeautifulSoup的解析功能,進而形成一個完整的數據爬取與信息提取的系統。有關beautifulsoup4庫的更多介紹請訪問官方網站:/software/BeautifulSoup/。在Windows的cmd命令行使用如下命令安裝beautifulsoup4庫:>pipinstallbeautifulsoup4(2)re標準庫

解析Web信息內容,也無需構建或還原HTML的設計格式,我們可以使用正則表達式庫來定點的獲取Web信息。re全稱regularexpression,是Python最主要的標準庫之一,無需安裝。它提供了定義和解析正則表達式的一批通用功能。re庫提供search、match、Findall、split、finditer和sub等一系列功能方法用來圍繞這個定義的正則表達式,進行信息查找和信息匹配,這對于我們去查找文本中的特定模式能夠起到非常重要的支撐作用。

有關re標準庫的更多介紹請訪問官方網站:/3.6/library/re.html。12.5第三方庫6、Web信息提取

Web信息提取是將頁面爬取下來之后,去解析其中的HTML和XML的內容,此時我們需要一批Web信息提取的第三方庫,這里主要介紹3個Python第三方生態庫:beautifulsoup4,re,goose3。(3)

goose3庫goose3是用Python重寫的Goose,Goose原來是用Java寫的文章提取工具。用于對給定任意資訊文章或者任意文章類的網頁,不僅提取出文章的主體,同時提取出所有元信息以及圖片等信息,支持中文網頁。這個庫只針對特定類型的Web頁面,但是由于文章類型在互聯網上極其常用,所以它的應用十分廣泛,它也是Python中最主要的Web信息提取第三方庫。相比Beautifulsoup這種源數據的處理更加方便,抽象層次也更高。有關goose3庫的更多介紹請訪問官方網站:/project/goose3/。在Windows的cmd命令行使用如下命令安裝goose3庫:>pipinstallgoose312.5第三方庫7、Web開發

Web開發是Python語言流行的一個重要方向,主要用于服務器后端開發。Python提供了一批很有用的后端框架,這里主要介紹3個Python第三方生態庫:Django、Pyramid、Flask。(1)Django庫Django是Python生態中最流行的開源Web應用框架。它能夠構建Web系統,并且提供整個的基本框架思路。Django采用MTV模式,即將一個網站后端分為模型(Model)、模板(Template)和視圖(Views),設計三者的相關流程并打通,形成一個基本的Web應用框架。有關Django庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝Django庫:>pipinstalldjango(2)Pyramid庫Pyramid是一個通用、開源的PythonWeb應用程序開發框架。Pyramid的設計思想是對規模適中的應用需求,提供簡單方便的構建Web系統的應用框架,它是一個產品級的應用框架,這個框架非常穩定、易于使用。有關Pyramid庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝Pyramid庫:>pipinstallpyramid12.5第三方庫7、Web開發

Web開發是Python語言流行的一個重要方向,主要用于服務器后端開發。Python提供了一批很有用的后端框架,這里主要介紹3個Python第三方生態庫:Django、Pyramid、Flask。(3)Flask庫

既然有復雜的Web應用框架,適中的應用框架,那一定也有很小規模的應用框架。Flask就是Python語言所提供輕量型Web應用的微框架,它提供了最簡單的構建Web應用系統的相關功能,特點就是簡單、規模小、編寫速度快,如果我們的應用需求僅僅是建立有幾個頁面的網站,那么使用Flask是一個非常好的選擇。有關Flask庫的更多介紹請訪問官方網站:/。在Windows的cmd命令行使用如下命令安裝Flask庫:>pipinstallflask【例12-16】一個最小的Flask應用。123456fromflaskimportFlask

app=Flask(__name__)

@app.route("/")defmessage():return"<p>慶祝中國共產黨成立100周年!</p>"12.5第三方庫8、圖形用戶界面(GUI)

Python標準庫內置了一個GUI庫Tkinter,這個庫基于Tcl/Tk開發,然而,這個庫十分陳舊,提供的開發空間也很有限,編寫出來的GUI分給與現代程序GUI風格相差甚遠,從用戶體驗角度說,Tkinter庫并不成熟。因此,Python提供了一批能夠既時尚有快捷的圖形用戶界面的第三方庫:PyQt,wxPython、PyGObject。9、游戲開發

游戲開發是一個有趣的方向,在游戲邏輯和功能實現層面,Python已經成為重要的支撐性語言。Python不僅支持能開發二維效果的游戲,還能開發3D效果的游戲。這里介紹3個Python第三方生態庫:Pygame、Panda3D、Cocos2D。10、圖形藝術

Python圖形藝術是使用特定生態庫通過算法對圖形或圖像進行處理。Python提供了一批高質量的圖形藝術的第三方生態庫:Quads、ascii_art、Turtle。12.6經典程序分析【例12-17】math庫中三角函數的應用?!痉治觥咳呛瘮祵⑷切沃械慕桥c其邊長相關聯。在有周期性質的公式中經常出現三角函數,如諧波或圓周運動;在處理角時也會經常用到三角函數。標準庫中所有三角函數的角參數都被表示為弧度。1234567891011121314importmath

print('{:^7}{:^7}{:^7}{:^7}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論