版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python大數(shù)據(jù)基礎(chǔ)與實(shí)戰(zhàn)實(shí)驗(yàn)(實(shí)訓(xùn))指導(dǎo)書
實(shí)驗(yàn)項(xiàng)目?jī)?nèi)容與學(xué)時(shí)分配序號(hào)實(shí)驗(yàn)名稱實(shí)驗(yàn)內(nèi)容學(xué)時(shí)實(shí)驗(yàn)類型實(shí)驗(yàn)要求1anaconda安裝和使用Anaconda的安裝、配置和簡(jiǎn)單實(shí)用2驗(yàn)證必修2序列的使用列表、元組、字典、集合的使用2設(shè)計(jì)必修3字符串處理程序編寫編寫對(duì)字符串(正則表達(dá)式)進(jìn)行操作的程序2設(shè)計(jì)必修4函數(shù)的使用函數(shù)的設(shè)計(jì)與使用2設(shè)計(jì)必修5類的使用類的設(shè)計(jì)與使用2設(shè)計(jì)必修6文件的操作和使用二進(jìn)制和文本文件的操作使用2設(shè)計(jì)必修7異常處理異常處理程序的編寫2設(shè)計(jì)必修8數(shù)據(jù)可視化數(shù)據(jù)可視化庫(kù)matplotlib的使用2設(shè)計(jì)必修9數(shù)據(jù)分析Pandas庫(kù)的使用2設(shè)計(jì)選修10網(wǎng)絡(luò)爬蟲設(shè)計(jì)lxml、requests庫(kù)的使用2設(shè)計(jì)選修合計(jì)學(xué)時(shí)20實(shí)驗(yàn)一anaconda安裝與使用實(shí)驗(yàn)?zāi)康暮鸵笳莆誻indows下PythonIDEL的安裝。掌握anaconda的安裝和配置、jupyternotebook、spyder工具的使用3)掌握使用pip安裝Python擴(kuò)展庫(kù)。4)熟悉離線安裝輪子文件的方法。二、實(shí)驗(yàn)內(nèi)容1)PythonIDL、anaconda下載和安裝。2)JupyterNotebook使用和常用功能。3)擴(kuò)展庫(kù)的安裝。4)輪子文件的安裝。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)一臺(tái),安裝有Windows7操作系統(tǒng)四、實(shí)驗(yàn)原理從Python官網(wǎng)下載Python3.7.2。從anaconda官網(wǎng)下載anaconda,建議下載3.6以上版本。Jupyternotebook是一個(gè)IDL,可以進(jìn)行交互式編程,支持多種格式文件的編輯。IDEL也可以進(jìn)行交互性編程。五、實(shí)驗(yàn)步驟1.下載anaconda/PythonIDEL從官網(wǎng)上下載anaconda3.6,需要根據(jù)安裝的OS來進(jìn)行選擇。具體的安裝環(huán)境要求可以查看官網(wǎng)的文檔說明。從官網(wǎng)上下載Python,建議安裝3.7.2版本。安裝anaconda安裝時(shí)選擇定制安裝,建議不要把a(bǔ)naconda安裝在c:盤上。安裝時(shí)選擇針對(duì)所有用戶。不要把a(bǔ)nacond自帶的python解釋器加入到path中。啟動(dòng)JupyterNotebook
1)【開始】-->【所有程序】-->【anaconda】-->【JupyterNotebook】選擇復(fù)制鏈接。修改屬性,將%userprofile%更改為今后存放Python源程序的目錄。啟動(dòng)JupyterNotebook。單擊【new】--->“Python3”,進(jìn)入Python腳本編輯界面??梢赃x擇單元類型【code】,輸入源代碼,通過按下【shifit】+【enter】組合鍵,運(yùn)行程序。也可以選擇單元類型【markdown】。Markdown模式下可以對(duì)文本進(jìn)行編輯,采用Markdown的語法規(guī)范,可以設(shè)定文本格式,插入鏈接、圖片甚至數(shù)學(xué)公式,同樣,通過按下【shifit】+【enter】組合鍵可運(yùn)行Markdown單元,顯示格式化的文本。在首行前加一個(gè)“#”字符和空格代表一級(jí)標(biāo)題,加兩個(gè)“#”字符和空格代表二級(jí)標(biāo)題,以此類推。項(xiàng)目符號(hào)可以使用“+”、“-”、“*”加空格,公式使用兩個(gè)“$”符號(hào),例如“$E=mc^2$”。完成以下內(nèi)容的輸入:4.安裝第三方擴(kuò)展庫(kù)(以安裝matplotlib庫(kù)為例。)1)升級(jí)pipwindows下進(jìn)入命令行模式,輸入python-mpipinstall--upgradepip。2)切換到python安裝目錄的scripts子目錄下3)依次輸入pipinstallnumpyscipy、pipinstallmatplotlib。5.離線安裝第三方擴(kuò)展庫(kù)如果遇到安裝不成功的擴(kuò)展庫(kù),使用瀏覽器打開下面的網(wǎng)址,下載whl文件進(jìn)行離線安裝:/~gohlke/pythonlibs/。在IDLE中使用import導(dǎo)入安裝好的擴(kuò)展庫(kù),驗(yàn)證是否安裝成功。六、實(shí)驗(yàn)注意事項(xiàng)1)Python是解釋型語言,需要Python解釋器支持。2)可以使用.tab來獲取對(duì)象的屬性,使用函數(shù)名?獲取函數(shù)幫助信息,??函數(shù)名獲取函數(shù)源碼。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:anaconda安裝過程、第三方擴(kuò)展庫(kù)的安裝、Python程序基本結(jié)構(gòu)。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)實(shí)驗(yàn)二序列、流程控制語句的使用一、實(shí)驗(yàn)?zāi)康暮鸵笳莆樟斜淼墓δ芎褪褂?。掌握元組的功能和使用。掌握字典的功能和使用。掌握集合的功能和使用。掌握選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)for、while的使用二、實(shí)驗(yàn)內(nèi)容把列表中的所有數(shù)字都加5,得到新列表。輸入三個(gè)序列,輸出三個(gè)序列中最大值相乘的結(jié)果和最大值出現(xiàn)的位置。生成包含1000個(gè)隨機(jī)字符的字符串,統(tǒng)計(jì)每個(gè)字符的出現(xiàn)次數(shù)。已知有一個(gè)包含一些同學(xué)成績(jī)的字典,現(xiàn)在需要計(jì)算所有成績(jī)的最高分、最低分、平均分,并查找所有最高分同學(xué)。編寫一個(gè)程序,檢查用戶輸入3條邊能否構(gòu)成三角形,如果可以構(gòu)成,請(qǐng)判斷三角形的類型(銳角、鈍角和直角以及等腰、等邊)。三、實(shí)驗(yàn)儀器、設(shè)備Windows7以上OS、安裝有anaconda。四、實(shí)驗(yàn)原理列表、集合、元組和集合的定義、可以進(jìn)行的操作。五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。3)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)1)正確使用數(shù)據(jù)類型。2)先確定思路,在編寫程序?qū)崿F(xiàn)。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。比較列表、元組、字典和集合的異同。比較for、while循環(huán)的執(zhí)行流程。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序1)x=list(range(10))y=[]fornuminx: y.append(num+5)或者[num+5fornuminx]2)x=input("inputfirstlist:")x=list(map(int,x.split()))i=max(x)iPos=x.index(i)y=input("inputsecondlist:")y=list(map(int,y.split()))j=max(y)jPos=y.index(j)z=input("inputthirdlist:")z=list(map(int,z.split()))k=max(z)kPos=z.index(k)print("maxis",i*j*k,",positionis%d,%d,%d."%(iPos,jPos,kPos))3)importstringimportrandomx=string.ascii_letters+string.digits+string.punctuationy=[random.choice(x)foriinrange(1000)]z=''.join(y)d=dict()#使用字典保存每個(gè)字符出現(xiàn)次數(shù)forchinz:d[ch]=d.get(ch,0)+14)scores={"ZhangSan":45,"LiSi":78,"WangWu":40,"ZhouLiu":96,"ZhaoQi":65,"SunBa":90,"ZhengJiu":78,"WuShi":99,"DongShiyi":60}highest=max(scores.values())#最高分lowest=min(scores.values())#最低分average=sum(scores.values())/len(scores)#平均分highestPerson=[nameforname,scoreinscores.items()ifscore==highest]#或者scores={'LiSi':78,'ZhaoQi':65,'WangWu':40,'WuShi':99,'ZhengJiu':78,'ZhangSan':45,'SunBa':90,'ZhouLiu':96,'DongShiyi':60}highest=max(scores.values())average=sum(scores.values())/len(scores)forname,scoreinscores.items():ifscore==highest:print(name)5)"""本程序完成對(duì)輸入的3條邊進(jìn)行判斷,如果構(gòu)成三角形,則判斷是銳角、鈍角和直角三角形;還可以判斷等腰和等邊三角形"""x,y,z=eval(input("請(qǐng)輸入三角形3條邊的長(zhǎng)度(以,分隔):"))#輸入三條邊長(zhǎng)度x,y,z=sorted([x,y,z],reverse=True)#降序排列三條邊長(zhǎng)度whiley+z<=x:print("不能構(gòu)成三角形,請(qǐng)重新輸入3條邊的長(zhǎng)度:")x,y,z=eval(input("請(qǐng)輸入三角形3條邊的長(zhǎng)度(以,分隔):"))x,y,z=sorted([x,y,z],reverse=True)cosX=(y**2+z**2-x**2)/2.0/y/zifcosX>0.0:print("銳角三角形")elifcosX==0.0:print("直角三角形")else:print("鈍角三角形")ifx==y==z:print("等邊三角形")elifx==yory==zorx==z:print("等腰三角形")實(shí)驗(yàn)三字符串處理程序編寫一、實(shí)驗(yàn)?zāi)康暮鸵笫煜げ⒄莆兆址亩x掌握字符串常用操作的使用二、實(shí)驗(yàn)內(nèi)容生成指定長(zhǎng)度的隨機(jī)密碼。編寫程序?qū)崿F(xiàn)字符串加密和解密,循環(huán)使用指定密鑰,采用簡(jiǎn)單的異或算法。檢查并判斷密碼字符串的安全強(qiáng)度,密碼必須至少包含6個(gè)字符。編寫程序,模擬打字練習(xí)程序的成績(jī)?cè)u(píng)定。假設(shè)origin為原始內(nèi)容,userInput為 用戶練習(xí)時(shí)輸入的內(nèi)容,要求用戶輸入的內(nèi)容長(zhǎng)度不能大于原始內(nèi)容的長(zhǎng)度,如果對(duì)應(yīng) 位置的字符一致則認(rèn)為正確,否則判定輸入錯(cuò)誤。最后成績(jī)?yōu)椋赫_的字符數(shù)量/原始 字符串長(zhǎng)度,按百分制輸出,要求保留2位小數(shù)。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、windows7操作系統(tǒng)+anaconda。四、實(shí)驗(yàn)原理1)在Python中,字符串屬于不可變有序序列,使用單引號(hào)、雙引號(hào)、三單引號(hào)或三雙引號(hào)作為定界符,并且不同的定界符之間可以互相嵌套。2)Python字符串對(duì)象提供了大量方法用于字符串的切分、連接、替換和排版等操作,另外還有大量?jī)?nèi)置函數(shù)和運(yùn)算符也支持對(duì)字符串的操作。五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。4)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)正確使用字符串的方法和基本操作。字符串編碼方案。編程規(guī)范。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:1)importstringimportrandomcharacters=string.digits+string.ascii_lettersprint(''.join([random.choice(characters)foriinrange(8)]))#返回8位的密碼字段print(''.join([random.choice(characters)foriinrange(10)]))#返回10位的密碼字段print(''.join([random.choice(characters)foriinrange(16)]))#返回16位的密碼字段2)fromitertoolsimportcyclesource='xijinguniveisity'key='FanHui'result=''temp=cycle(key)forchinsource:result=result+chr(ord(ch)^ord(next(temp)))print(result)3)importstringpwd=input(‘inputapassword’)#密碼必須至少包含6個(gè)字符ifnotisinstance(pwd,str)orlen(pwd)<6:return'notsuitableforpassword'#密碼強(qiáng)度等級(jí)與包含字符種類的對(duì)應(yīng)關(guān)系d={1:'weak',2:'belowmiddle',3:'abovemiddle',4:'strong'}#分別用來標(biāo)記pwd是否含有數(shù)字、小寫字母、大寫字母和指定的標(biāo)點(diǎn)符號(hào)r=[False]*4forchinpwd:#是否包含數(shù)字ifnotr[0]andchinstring.digits:r[0]=True#是否包含小寫字母elifnotr[1]andchinstring.ascii_lowercase:r[1]=True#是否包含大寫字母elifnotr[2]andchinstring.ascii_uppercase:r[2]=True#是否包含指定的標(biāo)點(diǎn)符號(hào)elifnotr[3]andchin',.!;?<>':r[3]=True#統(tǒng)計(jì)包含的字符種類,返回密碼強(qiáng)度result=d.get(r.count(True),'error')4)origin='''Beautifulisbetterthanugly.\Explicitisbetterthanimplicit.\Simpleisbetterthancomplex.\Complexisbetterthancomplicated.\Flatisbetterthannested.'''print("原始字符串:",origin)userInput=input("請(qǐng)按照原始字符串輸入:")iflen(origin)<len(userInput):print("輸入字符串和原始字符串長(zhǎng)度不一致!")#精確匹配的字符個(gè)數(shù)right=sum(1foroc,ucinzip(origin,userInput)ifoc==uc)rate=right/len(origin)print("正確率為:{}%".format(round(rate*100,2)))實(shí)驗(yàn)四函數(shù)的編寫和使用一、實(shí)驗(yàn)?zāi)康暮鸵笫煜げ⒄莆蘸瘮?shù)的定義和調(diào)用理解函數(shù)形參和實(shí)參的含義,能夠正確設(shè)置形參類型理解隱含函數(shù)lambda二、實(shí)驗(yàn)內(nèi)容輸出“水仙花數(shù)”。所謂水仙花數(shù)是指1個(gè)3位的十進(jìn)制數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153是水仙花數(shù),因?yàn)?53=13+53+33。請(qǐng)使用函數(shù)式編程+內(nèi)置函數(shù)來實(shí)現(xiàn)。把列表中的所有數(shù)字都加5,得到新列表。請(qǐng)使用函數(shù)實(shí)現(xiàn)。計(jì)算兩點(diǎn)間曼哈頓距離。判斷密碼強(qiáng)度,數(shù)字、小寫字母、大寫字母和指定的標(biāo)點(diǎn)符號(hào),分別對(duì)應(yīng)weak、belowmiddle、abovemiddle、strong。編寫函數(shù),求任意一個(gè)數(shù)的立方根。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有anaconda。四、實(shí)驗(yàn)原理1)def定義函數(shù)2)函數(shù)名參數(shù)后面添加:表示函數(shù)體開始3)利用縮進(jìn)表示函數(shù)體4)函數(shù)內(nèi)參數(shù)為局部變量五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。3)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)函數(shù)的正確縮進(jìn)。Lambda函數(shù)的定義和實(shí)現(xiàn)。函數(shù)內(nèi)變量的作用域。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序1)defsxh():fornuminrange(100,1000):r=map(lambdax:int(x)**3,str(num))ifsum(r)==num:print(num)2)defadd5(alist):return[i+5foriinalist]3)defmanhattanDistance(x,y):returnsum(map(lambdai,j:abs(i-j),x,y))print(manhattanDistance([1,2],[3,4]))print(manhattanDistance([1,2,3],[4,5,6]))print(manhattanDistance([1,2,3,4],[5,6,7,8]))4)defcheck(pwd):#密碼強(qiáng)度等級(jí)與包含字符種類的對(duì)應(yīng)關(guān)系d={1:'weak',2:'belowmiddle',3:'abovemiddle',4:'strong'}#分別用來標(biāo)記pwd是否含有數(shù)字、小寫字母、大寫字母和指定的標(biāo)點(diǎn)符號(hào)r=[False]*4forchinpwd:ifnotr[0]andchinstring.digits:r[0]=Trueelifnotr[1]andchinstring.ascii_lowercase:r[1]=Trueelifnotr[2]andchinstring.ascii_uppercase:r[2]=Trueelifnotr[3]andchin',.!;?<>':r[3]=True#統(tǒng)計(jì)包含的字符種類,返回密碼強(qiáng)度returnd.get(r.count(True),'error')5)defcbrt(x): ifx==0.0: return0.0 x1=x whileTrue: x2=(2.0*x1+x/x1/x1)/3 ifabs((x2-x1)/x1)<0.001: returnx2 x1=x2實(shí)驗(yàn)五類的設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵笫煜げ⒄莆疹惖木帉戇^程理解類中成員的含義二、實(shí)驗(yàn)內(nèi)容系統(tǒng)中的用戶分類非常復(fù)雜,不同用戶組具有不同的行為和權(quán)限,并且可能會(huì)經(jīng)常改變,管理非常困難。這時(shí)候我們可以獨(dú)立地定義一些行為,然后根據(jù)需要來為不同的用戶設(shè)置相應(yīng)的行為能力。請(qǐng)?jiān)O(shè)計(jì)一個(gè)Person類,完成sing()、walk()、eat()等行為?,F(xiàn)有一個(gè)基類Animal,其中有一個(gè)方法show(),請(qǐng)使用多態(tài)性方法,實(shí)現(xiàn)Cat、Dog、Tiger中的show()方法。編寫一個(gè)隊(duì)列類myQueue,完成隊(duì)列的初始化、刪除、入隊(duì)和出隊(duì)等操作。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫類的Python程序2)執(zhí)行類的Python程序3)根據(jù)提示信息判斷程序中類的使用錯(cuò)誤修改程序得出正確的結(jié)果五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。3)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。熟悉類的語法結(jié)構(gòu)。當(dāng)出現(xiàn)錯(cuò)誤腳本會(huì)停止在錯(cuò)誤行上,修正錯(cuò)誤后,重新運(yùn)行腳本。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:1)importtypesclassPerson(object):def__init__(self,name):assertisinstance(name,str),'namemustbestring'=namedefsing(self): print(+'cansing.')defwalk(self): print(+'canwalk.') defeat(self): print(+'caneat.')2)classAnimal(object):#定義基類defshow(self):print('Iamananimal.')classCat(Animal):#派生類,覆蓋了基類的show()方法defshow(self):print('Iamacat.')classDog(Animal):#派生類defshow(self):print('Iamadog.')classTiger(Animal):#派生類defshow(self):print('Iamatiger.')classTest(Animal):#派生類,沒有覆蓋基類的show()方法passx=[item()foritemin(Animal,Cat,Dog,Tiger,Test)]foriteminx:#遍歷基類和派生類對(duì)象并調(diào)用show()方法item.show()3)classmyDeque:#構(gòu)造方法,默認(rèn)隊(duì)列大小為10def__init__(self,iterable=None,maxlen=10):ifiterable==None:self._content=[]self._current=0else:self._content=list(iterable)self._current=len(iterable)self._size=maxlenifself._size<self._current:self._size=self._current#析構(gòu)方法def__del__(self):delself._content#修改隊(duì)列大小defsetSize(self,size):ifsize<self._current:#如果縮小隊(duì)列,需要同時(shí)刪除后面的元素foriinrange(size,self._current)[::-1]:#逆序delself._content[i]self._current=sizeself._size=size#在右側(cè)入隊(duì)defappendRight(self,v):ifself._current<self._size:self._content.append(v)self._current=self._current+1else:print('Thequeueisfull')#在左側(cè)入隊(duì)defappendLeft(self,v):ifself._current<self._size:self._content.insert(0,v)self._current=self._current+1else:print('Thequeueisfull')#在左側(cè)出隊(duì)defpopLeft(self):ifself._content:self._current=self._current-1returnself._content.pop(0)else:print('Thequeueisempty')#在右側(cè)出隊(duì)defpopRight(self):ifself._content:self._current=self._current-1returnself._content.pop()else:print('Thequeueisempty')#循環(huán)移位defrotate(self,k):ifabs(k)>self._current:print('kmust<='+str(self._current))returnself._content=self._content[-k:]+self._content[:-k]#元素翻轉(zhuǎn)defreverse(self):self._content=self._content[::-1]#顯示當(dāng)前隊(duì)列中元素個(gè)數(shù)def__len__(self):returnself._current#使用print()打印對(duì)象時(shí),顯示當(dāng)前隊(duì)列中的元素def__str__(self):return'myDeque('+str(self._content)+',maxlen='+str(self._size)+')'#直接對(duì)象名當(dāng)做表達(dá)式時(shí),顯示當(dāng)前隊(duì)列中的元素__repr__=__str__#隊(duì)列置空defclear(self):self._content=[]self._current=0#測(cè)試隊(duì)列是否為空defisEmpty(self):returnnotself._content#測(cè)試隊(duì)列是否已滿defisFull(self):returnself._current==self._sizeif__name__=='__main__':print('Pleaseusemeasamodule.')實(shí)驗(yàn)六文件的操作和使用一、實(shí)驗(yàn)?zāi)康暮鸵笳莆瘴募亩x、操作和使用能夠正確使用文件來獲取和存儲(chǔ)數(shù)據(jù)二、實(shí)驗(yàn)內(nèi)容遞歸遍歷指定文件夾下的子文件夾和文件。編寫程序,遞歸刪除指定文件夾中指定類型的文件。編寫程序,進(jìn)行文件夾增量備份。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫類的Python程序2)執(zhí)行類的Python程序3)根據(jù)提示信息判斷程序中類的使用錯(cuò)誤修改程序得出正確的結(jié)果五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。3)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。熟悉文件的操作語法。當(dāng)出現(xiàn)錯(cuò)誤腳本會(huì)停止在錯(cuò)誤行上,修正錯(cuò)誤后,重新運(yùn)行腳本。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:1)fromosimportlistdirfromos.pathimportjoin,isfile,isdirdeflistDirDepthFirst(directory):#遍歷文件夾,如果是文件就直接輸出,如果是文件夾,就輸出顯示,然后遞歸遍歷該文件夾forsubPathinlistdir(directory):path=join(directory,subPath)print(path)ifisdir(path):listDirDepthFirst(path)2)fromos.pathimportisdir,join,splitextfromosimportremove,listdirimportsysfiletypes=['.tmp','.log','.obj','.txt']#指定要?jiǎng)h除的文件類型defdelCertainFiles(directory):ifnotisdir(directory):returnforfilenameinlistdir(directory):temp=join(directory,filename)ifisdir(temp):delCertainFiles(temp)elifsplitext(temp)[1]infiletypes:#檢查文件類型remove(temp)print(temp,'deleted....')3)importosimportfilecmpimportshutilimportsysdefautoBackup(scrDir,dstDir):if((notos.path.isdir(scrDir))or(notos.path.isdir(dstDir))or(os.path.abspath(scrDir)!=scrDir)or(os.path.abspath(dstDir)!=dstDir)):usage()foriteminos.listdir(scrDir):scrItem=os.path.join(scrDir,item)dstItem=scrItem.replace(scrDir,dstDir)ifos.path.isdir(scrItem):#創(chuàng)建新增的文件夾,保證目標(biāo)文件夾的結(jié)構(gòu)與原始文件夾一致ifnotos.path.exists(dstItem):os.makedirs(dstItem)print('makedirectory'+dstItem)#遞歸調(diào)用自身函數(shù)autoBackup(scrItem,dstItem)elifos.path.isfile(scrItem):#只復(fù)制新增或修改過的文件if((notos.path.exists(dstItem))or(notfilecmp.cmp(scrItem,dstItem,shallow=False))):shutil.copyfile(scrItem,dstItem)print('file:'+scrItem+'==>'+dstItem)defusage():print('scrDiranddstDirmustbeexistingabsolutepathofcertaindirectory')print('Forexample:{0}c:\\olddirc:\\newdir'.format(sys.argv[0]))sys.exit(0)if__name__=='__main__':iflen(sys.argv)!=3:usage()scrDir,dstDir=sys.argv[1],sys.argv[2]autoBackup(scrDir,dstDir)實(shí)驗(yàn)七異常處理一、實(shí)驗(yàn)?zāi)康暮鸵笳莆誔ython的異常處理結(jié)構(gòu)能夠獨(dú)立編寫異常處理程序二、實(shí)驗(yàn)內(nèi)容編寫函數(shù)模擬猜數(shù)游戲。系統(tǒng)隨機(jī)產(chǎn)生一個(gè)數(shù),并且指定玩家最多可以猜的次數(shù),系統(tǒng)會(huì)根據(jù)玩家的猜測(cè)進(jìn)行提示,玩家則可以根據(jù)系統(tǒng)的提示對(duì)下一次的猜測(cè)進(jìn)行適當(dāng)調(diào)整。用戶輸入若干個(gè)分?jǐn)?shù),求所有分?jǐn)?shù)的平均分。每輸入一個(gè)分?jǐn)?shù)后詢問是否繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“yes”就繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“no”就停止輸入分?jǐn)?shù)。請(qǐng)使用異常處理機(jī)制來編寫程序編寫自定義異常類,完成對(duì)異常信息的記錄,將異常信息寫入到app_log_file.txt文件中。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫異常處理的Python程序2)執(zhí)行Python程序3)根據(jù)提示信息判斷程序中的使用錯(cuò)誤修改程序得出正確的結(jié)果五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。4)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。熟悉文件的操作語法。當(dāng)出現(xiàn)錯(cuò)誤腳本會(huì)停止在錯(cuò)誤行上,修正錯(cuò)誤后,重新運(yùn)行腳本。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:1)fromrandomimportrandintdefguess(maxValue=100,maxTimes=5):value=randint(1,maxValue)#隨機(jī)生成一個(gè)整數(shù)foriinrange(maxTimes):prompt='StarttoGUESS:'ifi==0else'Guessagain:'try:#使用異常處理結(jié)構(gòu),防止輸入不是數(shù)字的情況x=int(input(prompt))except:print('YouMustinputanintegerbetween1and',maxValue)else:ifx==value:#猜對(duì)了print('Congratulations!')breakelifx>value:print('Toobig')else:print('Toolittle')else:#次數(shù)用完還沒猜對(duì),游戲結(jié)束,提示正確答案print('Gameover.FAIL.')print('Thevalueis',value)2)numbers=[]#使用列表存放臨時(shí)數(shù)據(jù)whileTrue:x=input('請(qǐng)輸入一個(gè)成績(jī):')try:#異常處理結(jié)構(gòu)numbers.append(float(x))except:print('不是合法成績(jī)')whileTrue:flag=input('繼續(xù)輸入嗎?(yes/no)').lower()ifflagnotin('yes','no'):#限定用戶輸入內(nèi)容必須為yes或noprint('只能輸入yes或no')else:breakifflag=='no':breakprint(“平均分是{0:.1f}”.format(sum(numbers)/len(numbers)))3)fromdatetimeimportdatetimeimporttraceback,sysclassMyException(Exception):logfile="c:\\app_log_file.txt"defdoLog(self):log=open(self.logfile,"wt")day=datetime.today()x=sys.exc_info()print("\n------出錯(cuò)了------",file=log)print("\n日期時(shí)間:",day,file=log)log.write("\n異常類型:%s"%x[0].__name__)log.write("\n異常描述:%s"%x[1])print("\n堆棧跟蹤信息:",file=log)traceback.print_tb(self.args[1],file=log)#獲得堆棧跟蹤信息log.close()try:try:print(5/'0')exceptExceptionasex:raiseMyException(ex.args[0],ex.__traceback__)except(MyException)asex:ex.doLog()finally:print("程序執(zhí)行結(jié)束")實(shí)驗(yàn)八數(shù)據(jù)可視化一、實(shí)驗(yàn)?zāi)康暮鸵笳莆照劬€圖的作用與繪制方法。掌握柱形圖的作用與繪制方法。掌握條形圖的作用與繪制方法。掌握散點(diǎn)圖的作用與繪制方法掌握氣泡圖的作用與繪制方法。掌握面積圖的作用與繪制方法。掌握雷達(dá)圖的繪制方法掌握三維曲面圖、三維散點(diǎn)圖的繪制方法掌握數(shù)學(xué)函數(shù)圖形的繪制方法掌握樹地圖的繪制方法實(shí)驗(yàn)內(nèi)容折線圖的繪制方法。柱形圖的繪制方法。條形圖的繪制方法。散點(diǎn)圖的繪制方法氣泡圖的繪制方法。面積圖的繪制方法。雷達(dá)圖的繪制方法三維曲面圖、三維散點(diǎn)圖的繪制方法數(shù)學(xué)函數(shù)圖形的繪制方法樹地圖的繪制方法三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫Python程序。2)導(dǎo)入matplotlib.pyplot和seaborn庫(kù)。3)使用seaborn和matplotlib庫(kù)提供的函數(shù)來編寫代碼。五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序4)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。在代碼第一行加入指令
%matplotlibinline,以確保圖形能夠在瀏覽器中顯示。如果要將圖形存盤,使用如下代碼:plt.savefig(r"d:\test2.jpg",dpi=1000,bbox_inches='tight',pad_inches=0)。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)數(shù)學(xué)函數(shù)圖形的繪制1)初等函數(shù)繪圖代碼:importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['KaiTi']#SIMHei黑體plt.rcParams['axes.unicode_minus']=False#正常顯示圖中負(fù)號(hào)plt.figure(figsize=(15,4))#設(shè)置畫布大小fig,ax=plt.subplots(2,2,figsize=(15,12))#一個(gè)繪制4個(gè)圖形importmathx=np.linspace(0,2*math.pi);ax[0,0].plot(x,np.sin(x),c='red',linestyle='--');ax[0,1].plot(x,np.cos(x))ax[1,0].plot(x,np.log(x))ax[1,1].plot(x,np.exp(x))plt.show()運(yùn)行截圖:2)極坐標(biāo)圖形的繪制代碼:#根據(jù)函數(shù)式的基本繪圖,在直角坐標(biāo)下可使用參數(shù)方法:#(x/a)^2+(y/b)^2=1等價(jià)于x=asin(c),y=bcos(c),(0<c<2*pi)#其圖形繪制方法如下importnumpyimportmathimportmatplotlib.pyplotaspltt=numpy.linspace(0,2*math.pi)x=2*numpy.sin(t)y=2*numpy.cos(t)plt.plot(x,y)plt.text(0,0,r'$\frac{x^2}{2}+\frac{y^2}{3}=1$',fontsize=20);plt.show()運(yùn)行截圖:2.繪制折線圖代碼:importnumpyasnpimportmathimportmatplotlib.pyplotasplt#折線圖常用于表示隨著時(shí)間的推某指標(biāo)的變化趨勢(shì),使用的是plt庫(kù)中的plot方法。#plot方法的具體參數(shù)如下:#plt.plot(x,y,color,linestyle,linewidth,marker,markeredgeclor,markeredgwidth,markerfacecolor,markersize,label)#其中,參數(shù)x,y分別表示x軸和y軸的數(shù)據(jù);color表示折線圖的顏色,linestyle表示顯得風(fēng)格,linewith表示線的寬度。#繪制某公司1-9月份注冊(cè)用戶量的折線圖。plt.subplot(1,1,1)#建立一個(gè)坐標(biāo)系x=np.array([1,2,3,4,5,6,7,8,9])#指定x值y=np.array([886,2335,5710,6482,6120,1605,3813,4428,4631])plt.plot(x,y,color='r',linestyle='dashdot',linewidth=1,marker='o',markersize=5,label='注冊(cè)用戶數(shù)')#繪圖plt.title('某公司1-9月注冊(cè)用戶量',loc='center')#設(shè)置標(biāo)題名及標(biāo)題的位置#添加數(shù)據(jù)標(biāo)簽fora,binzip(x,y):plt.text(a,b,b,ha='center',va='bottom',fontsize=10)plt.grid(True)#設(shè)置網(wǎng)格線plt.legend()#設(shè)置圖例,調(diào)用顯示出plot的labelplt.show()plt.savefig(r'C:\Users\Administrator\Desktop\8.1.jpg')#保存到本地運(yùn)行截圖:3.繪制柱形圖代碼:importnumpyasnpimportmathimportmatplotlib.pyplotaspltfrompylabimport*mpl.rcParams['font.sans-serif']=['SimHei']#柱形圖常用于比較不同類別之間的數(shù)據(jù)情況,使用的是plt庫(kù)中的bar方法。#bar方法實(shí)現(xiàn)如下:#plt.bar(x,height,width=0.8,bottom=None,align='center',color,edgecolor)#其中,height表示每根柱子的高度,width表示每根柱子的寬度,bottom表示每根柱子的底部位置,每根柱子的底部位置讀可以一樣,也可以不一樣;#align表示柱子的位置與x值得關(guān)系,有center、edge兩個(gè)參數(shù)可選,center表示柱子位于x值得中心位置,edge表示柱子位于x值的邊緣位置;color表示顏色;edgecolor表示柱子邊緣的顏色#繪制一張全國(guó)各分區(qū)任務(wù)量的普通柱形圖plt.subplot(1,1,1)#建立一個(gè)坐標(biāo)系x=np.array(['東區(qū)','北區(qū)','南區(qū)','西區(qū)'])y=np.array([8566,6482,5335,7310])plt.bar(x,y,width=0.5,align='center',label='任務(wù)量',color=['r','g','b','k'])#繪圖plt.title('全國(guó)各分區(qū)任務(wù)量',loc='center')#設(shè)置標(biāo)題fora,binzip(x,y):plt.text(a,b,b,ha='center',va='bottom',fontsize=10)#添加數(shù)據(jù)標(biāo)簽plt.xlabel('分區(qū)')#設(shè)置x軸坐標(biāo)plt.ylabel('任務(wù)量')#設(shè)置y軸坐標(biāo)plt.legend()#顯示圖例plt.show()#簇狀柱形圖常用來表示不同類別隨著同一變量的變化情況,使用的同樣是plt庫(kù)中的bar方法,只不過需要調(diào)整柱子的顯示位置。#如繪制全國(guó)各分區(qū)任務(wù)量和完成量的簇狀圖形圖。plt.subplot(1,1,1)#建立一個(gè)坐標(biāo)系x=np.array([1,2,3,4])y1=np.array([8566,6482,5335,7310])#任務(wù)量y2=np.array([4283,2667,3655,3241])#任務(wù)量plt.bar(x,y1,width=0.3,label='任務(wù)量')#柱形圖的寬度為0.3plt.bar(x+0.3,y2,width=0.3,label='完成量')#x+0.3相當(dāng)于把完成量的每個(gè)柱子右移動(dòng)0.3plt.title('全國(guó)各分區(qū)任務(wù)量',loc='center')#設(shè)置標(biāo)題fora,binzip(x,y1):plt.text(a,b,b,ha='center',va='bottom',fontsize=12)#添加數(shù)據(jù)標(biāo)簽fora,binzip(x+0.3,y2):plt.text(a,b,b,ha='center',va='bottom',fontsize=12)#添加數(shù)據(jù)標(biāo)簽plt.xlabel('分區(qū)')#設(shè)置x軸坐標(biāo)plt.ylabel('任務(wù)情況')#設(shè)置y軸坐標(biāo)#設(shè)置x軸刻度值plt.xticks(x+0.15,['東區(qū)','南區(qū)','西區(qū)','北區(qū)'])#設(shè)置網(wǎng)格線plt.grid(False)plt.legend()#顯示圖例plt.show()#堆積柱形圖實(shí)例#堆積柱形圖常用來比較同類別各變量和不同類別變量的總和差異,使用的同樣是plt庫(kù)中的bar方法,只要在相同的x位置繪制不同的y,y就會(huì)自動(dòng)疊加。#如,繪制全國(guó)各分區(qū)任務(wù)量和完成量的堆積柱形圖plt.subplot(1,1,1)#建立一個(gè)坐標(biāo)系x=np.array([1,2,3,4])y1=np.array([8566,6482,5335,7310])#任務(wù)量y2=np.array([4283,2667,3655,3241])#任務(wù)量plt.bar(x,y1,width=0.3,label='任務(wù)量')plt.bar(x,y2,width=0.3,label='完成量')plt.title('全國(guó)各分區(qū)任務(wù)量和完成量',loc='center')#設(shè)置標(biāo)題fora,binzip(x,y1):plt.text(a,b,b,ha='center',va='top',fontsize=12)#添加數(shù)據(jù)標(biāo)簽fora,binzip(x,y2):plt.text(a,b,b,ha='center',va='bottom',fontsize=12)#添加數(shù)據(jù)標(biāo)簽plt.xlabel('分區(qū)')#設(shè)置x軸坐標(biāo)plt.ylabel('任務(wù)情況')#設(shè)置y軸坐標(biāo)#設(shè)置x軸刻度值plt.xticks(x,['東區(qū)','南區(qū)','西區(qū)','北區(qū)'])#設(shè)置網(wǎng)格線plt.grid(False)plt.legend(loc='uppercenter',ncol=2)#顯示圖例plt.show()運(yùn)行截圖:4.條形圖代碼:importnumpyasnpimportmathimportmatplotlib.pyplotaspltfrompylabimport*mpl.rcParams['font.sans-serif']=['SimHei']#條形圖與柱形圖類似,只不過是將柱形圖的x軸和y軸進(jìn)行了調(diào)換,縱向柱形圖變成了橫向柱形圖,使用plt庫(kù)中的barth方法。#barth方法如下所示:#plt.barth(y,width,height,align,color,edgecolor)#barth方法的參數(shù)及說明如下表:#width表示柱子的寬度#height表示柱子的高度#align表示柱子的對(duì)齊方式#color表示顏色#edgeclolor表示柱子邊緣顏色#繪制全國(guó)各分區(qū)任務(wù)量的條形圖plt.subplot(1,1,1)#建立一個(gè)坐標(biāo)系x=np.array(['東區(qū)','北區(qū)','南區(qū)','西區(qū)'])y=np.array([8566,6482,5335,7310])plt.barh(x,height=0.5,width=y,align='center',color=['r','g','b','k'])#繪圖plt.title('全國(guó)各分區(qū)任務(wù)量',loc='center')#設(shè)置標(biāo)題fora,binzip(x,y):plt.text(b,a,b,ha='center',va='bottom',fontsize=12)#添加數(shù)據(jù)標(biāo)簽plt.ylabel('分區(qū)')#設(shè)置y軸坐標(biāo)plt.xlabel('任務(wù)量')#設(shè)置x軸坐標(biāo)plt.grid(False)#不要網(wǎng)格線plt.show()運(yùn)行截圖:實(shí)驗(yàn)九數(shù)據(jù)分析一、實(shí)驗(yàn)?zāi)康暮鸵笫煜ython標(biāo)準(zhǔn)庫(kù)csv的用法。熟悉使用Python擴(kuò)展庫(kù)pandas進(jìn)行數(shù)據(jù)分析的基本操作。熟悉CSV和TXT文件操作。二、實(shí)驗(yàn)內(nèi)容(1)運(yùn)行下面的程序,在d:\文件夾中生成飯店?duì)I業(yè)額模擬數(shù)據(jù)文件data.csv。importcsvimportrandomimportdatetimefn=r'd:\data.csv'withopen(fn,'w',newline="")asfp:#創(chuàng)建csv文件寫入對(duì)象wr=csv.writer(fp)#寫入表頭wr.writerow(['日期','銷量'])#生成模擬數(shù)據(jù)startDate=datetime.date(2020,1,1)#生成200個(gè)模擬數(shù)據(jù)foriinrange(200):#生成一個(gè)模擬數(shù)據(jù),寫入csv文件amount=200+i*5+random.randrange(100)wr.writerow([str(startDate),amount])#生產(chǎn)下一天數(shù)據(jù)startDate=startDate+datetime.timedelta(days=1)2)然后完成下面的任務(wù):使用pandas讀取文件data.csv中的數(shù)據(jù),創(chuàng)建DataFrame對(duì)象,并刪除其中所有缺失值;使用matplotlib生成折線圖,反應(yīng)該飯店每天的營(yíng)業(yè)額情況,并把圖形保存為本地文件first.jpg;按月份進(jìn)行統(tǒng)計(jì),使用matplotlib繪制柱狀圖顯示每個(gè)月份的營(yíng)業(yè)額,并把圖形保存為本地文件second.jpg;按月份進(jìn)行統(tǒng)計(jì),找出相鄰兩個(gè)月最大漲幅,并把漲幅最大的月份寫入文件maxMonth.txt;按季度統(tǒng)計(jì)該飯店2020年的營(yíng)業(yè)額數(shù)據(jù),使用matplotlib生成餅狀圖顯示2020年4個(gè)季度的營(yíng)業(yè)額分布情況,并把圖形保存為本地文件third.jpg。三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫Python程序2)執(zhí)行Python程序3)根據(jù)提示信息判斷程序中的使用錯(cuò)誤4)修改程序5)得出正確的結(jié)果五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。4)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。熟悉函數(shù)的使用。當(dāng)出現(xiàn)錯(cuò)誤腳本會(huì)停止在錯(cuò)誤行上,修正錯(cuò)誤后,重新運(yùn)行腳本。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:%matplotlibinlineimportpandasaspdimportmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=False#讀取數(shù)據(jù),刪除缺失值df=pd.read_csv(r'd:\data.csv',encoding='cp936')df=df.dropna()#生成營(yíng)業(yè)額折線圖plt.figure()df.plot(x=df['日期'])plt.savefig('first.jpg')#按月統(tǒng)計(jì),生成柱狀圖plt.figure()df1=df[:]df1['month']=df1['日期'].map(lambdax:x[:x.rindex('-')])df1=df1.groupby(by='month',as_index=False).sum()df1.plot(x=df1['month'],kind='bar')plt.savefig('second.jpg')#查找漲幅最大的月份,寫入文件df2=df1.drop('month',axis=1).diff()m=df2['銷量'].nlargest(1).keys()[0]withopen(r'd:\maxMonth.txt','w')asfp:fp.write(df1.loc[m,'month'])#按季度統(tǒng)計(jì),生成餅狀圖plt.figure()one=df1[:3]['銷量'].sum()two=df1[3:6]['銷量'].sum()three=df1[6:9]['銷量'].sum()four=df1[9:12]['銷量'].sum()plt.pie([one,two,three,four],labels=['one','two','three','four'])plt.savefig('third.jpg')實(shí)驗(yàn)十網(wǎng)絡(luò)爬蟲設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康暮鸵笳莆誶equests、lxml庫(kù)的使用掌握多線程爬蟲系統(tǒng)設(shè)計(jì)掌握爬蟲系統(tǒng)設(shè)計(jì)過程二、實(shí)驗(yàn)內(nèi)容使用多線程爬蟲(Q房爬蟲實(shí)例)爬取目標(biāo)網(wǎng)站是深圳Q房網(wǎng)(/)三、實(shí)驗(yàn)儀器、設(shè)備計(jì)算機(jī)、安裝有ananconda系統(tǒng)四、實(shí)驗(yàn)原理 1)使用jupyternotebook來編寫Python程序2)導(dǎo)入requests、lxml、multiprocessing.dummy庫(kù)3)按照頁面HTML內(nèi)容分析、編寫爬蟲代碼、提取信息存盤步驟來設(shè)計(jì)程序五、實(shí)驗(yàn)步驟1)啟動(dòng)jupyternotebook2)單擊【new】按鈕。3)輸入程序。4)使用【run】按鈕執(zhí)行程序。六、實(shí)驗(yàn)注意事項(xiàng)使用jupyternotebook輸入源代碼。熟悉爬蟲庫(kù)的操作語法。當(dāng)出現(xiàn)錯(cuò)誤腳本會(huì)停止在錯(cuò)誤行上,修正錯(cuò)誤后,重新運(yùn)行腳本。七、實(shí)驗(yàn)報(bào)告要求實(shí)驗(yàn)報(bào)告以電子文檔形式提交。實(shí)驗(yàn)報(bào)告主要內(nèi)容:完成要求的程序編寫,提交源代碼和運(yùn)行結(jié)果。八、實(shí)驗(yàn)成績(jī)考核(黑體、小四號(hào)、加粗、行距1.5倍縮進(jìn)兩個(gè)字符)(百分制)參考程序:#coding:utf-8##使用多線程爬蟲(Q房爬蟲實(shí)例)###說明:爬取目標(biāo)網(wǎng)站是深圳Q房網(wǎng)(/)###1)頁面分析(分析頁面特點(diǎn)和URL構(gòu)造規(guī)律)###2)編寫爬蟲代碼###3)保存爬取到的信息####本示例演示多層頁面的爬蟲和使用函數(shù)組織代碼#"""首先導(dǎo)入requests庫(kù)和lxml庫(kù)。我們準(zhǔn)備把爬取的數(shù)據(jù)保存為CSV格式,因此還需要導(dǎo)入csv模塊。為了控制爬取速度,還需要導(dǎo)入time模塊??刂婆廊∷俣鹊哪康闹饕欠乐贡籕房網(wǎng)站的服務(wù)器反爬蟲。為了提高爬取速度,使用多線程技術(shù),因此需要導(dǎo)入multiprocessing.dummy庫(kù)"""importrequestsfromlxmlimportetreeimportcsvimporttimefrommultiprocessing.dummyimportPoolasplpre_url="/sale/f"#為防止被WEB服務(wù)器反爬蟲禁止,定義一個(gè)頭部headersheaders={"user-agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36"}#cookies具有一定的時(shí)效性,需要使用最新的cookiescookies="""acw_tc=db90631615547077210513243e12071b450b0885c180a9d3ef34797998;qchatid=75762117-5c92-46d8-9f52-0af0199e9b1b;__guid=29133566.2612920276169135600.1554707722539.75;_ga=GA1.3.59492559.1554707726;WINDOW_DEVICE_PIXEL_RATIO=1;CITY_NAME=SHENZHEN;sid=21761161-2b38-4ffb-a956-395898cb18f8;language=SIMPLIFIED;JSESSIONID=aaa-RFGCNMtCo8R_mJfQw;_qzjc=1;_jzqc=1;_jzqckmp=1;_gid=GA1.3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年離婚快速和解合同指南版B版
- 自控課程設(shè)計(jì)0型系統(tǒng)
- 私教體態(tài)調(diào)整課程設(shè)計(jì)
- 2025年高中生禁毒教案二
- 2024招聘計(jì)劃書(32篇)
- 2024年用電客戶受理員(二級(jí)技術(shù)師)理論考試題庫(kù)(B卷)
- 網(wǎng)上購(gòu)物系統(tǒng)web課程設(shè)計(jì)
- 舞蹈新鞋子課程設(shè)計(jì)
- 市場(chǎng)行業(yè)助理職責(zé)概述
- 三年高考地理(全國(guó)乙卷21-23)真題知識(shí)點(diǎn)-工業(yè)及其區(qū)位因素
- 社會(huì)消防安全教育培訓(xùn)題庫(kù)及答案
- 部編人教版語文八年級(jí)上冊(cè)文言文課下注釋
- 蘇教版譯林三年級(jí)上下冊(cè)單詞表
- 腫瘤病例隨訪調(diào)查表
- 游樂園、滑雪場(chǎng)、冰雪樂園建設(shè)合作協(xié)議
- 粉末涂料有限公司檢維修作業(yè)安全風(fēng)險(xiǎn)分級(jí)清單
- 【蘇教版】2022-2023學(xué)年六年級(jí)數(shù)學(xué)上冊(cè)期末試卷(及答案)
- 2023-2024學(xué)年連云港市灌云縣四年級(jí)數(shù)學(xué)第一學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含答案
- 湖南省懷化市鶴城區(qū)2023年數(shù)學(xué)三下期末監(jiān)測(cè)試題含解析
- 項(xiàng)目工程安全管理責(zé)任區(qū)域劃分表
- 2023年學(xué)校食堂審計(jì)發(fā)現(xiàn)問題整改報(bào)告3篇
評(píng)論
0/150
提交評(píng)論