云應(yīng)用開發(fā)實戰(zhàn) 課件 單元3 航班數(shù)據(jù)采集及可視化分析_第1頁
云應(yīng)用開發(fā)實戰(zhàn) 課件 單元3 航班數(shù)據(jù)采集及可視化分析_第2頁
云應(yīng)用開發(fā)實戰(zhàn) 課件 單元3 航班數(shù)據(jù)采集及可視化分析_第3頁
云應(yīng)用開發(fā)實戰(zhàn) 課件 單元3 航班數(shù)據(jù)采集及可視化分析_第4頁
云應(yīng)用開發(fā)實戰(zhàn) 課件 單元3 航班數(shù)據(jù)采集及可視化分析_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

云應(yīng)用開發(fā)實戰(zhàn)1單元3航班數(shù)據(jù)采集及可視化分析部署AmazonEC2實例并配置開發(fā)環(huán)境深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析使用多進程采集上海浦東機場離港航班數(shù)據(jù)及其可視化分析綜合實訓(xùn)--粵港澳大灣區(qū)五個機場航班數(shù)據(jù)爬取及分析單元3—航班數(shù)據(jù)采集及可視化分析知識目標(biāo):掌握Python中列表、元組的使用掌握Python中字典的使用掌握Python中鏈?zhǔn)讲僮鞯氖褂谜莆誔ython中函數(shù)的使用掌握爬蟲技術(shù)的知識掌握多進程編程的知識掌握數(shù)據(jù)分析的知識掌握可視化技術(shù)的知識能力目標(biāo):能使用列表、元組和字典存儲數(shù)據(jù)能使用函數(shù)進行結(jié)構(gòu)化程序設(shè)計能使用Python熟練操作數(shù)據(jù)文件能夠在AmazonEC2實例上安裝部署JupyterNotebook開發(fā)環(huán)境能夠使用特定模板部署AmazonEC2實例能夠使用AmazonSageMaker創(chuàng)建筆記本實例能使用Notebook開發(fā)Python程序能使用AmazonS3存取數(shù)據(jù)能使用鏈?zhǔn)讲僮鬟M行復(fù)雜代碼的開發(fā)能使用threading包進行多線程程序開發(fā)能使用requests包進行爬蟲數(shù)據(jù)開發(fā)能使用BeautifulSoup包解析文檔能使用Multiprocessing包設(shè)計多進程應(yīng)用程序能使用Pandas包進行數(shù)據(jù)分析程序開發(fā)能使用pyecharts包進行可視化表達項目3.1安裝部署AmazonEC2實例及開發(fā)環(huán)境部署AmazonEC2實例并配置開發(fā)環(huán)境安裝預(yù)置了開發(fā)環(huán)境的Amazon實例在AmazonSageMaker控制臺中創(chuàng)建筆記本實例使用ssh客戶端遠程登錄AmazonEC2實例

以AmazonAWS為例,在云計算環(huán)境中進行軟件開發(fā)具有諸多優(yōu)點,譬如,用戶無需考慮硬件投入、部署速度快、組織靈活性高等。特別是使用云平臺上的計算實例進行開發(fā)工作,是很多開發(fā)人員的選擇。Linux操作系統(tǒng)能夠運行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議,逐漸成為功能完善、穩(wěn)定的操作系統(tǒng),在個人電腦和服務(wù)器中具有很高的占有率。設(shè)計數(shù)據(jù)采集及可視化分析程序,開發(fā)人員可以在AmazonEC2實例中搭建Python開發(fā)環(huán)境,也可以使用預(yù)先配置好開發(fā)環(huán)境的模板安AmazonEC2實例。本任務(wù)首先要求在亞馬遜云科技管理控制臺中創(chuàng)建AmazonEC2實例,之后在AmazonEC2實例中安裝配置JupyterNotebook。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境一、任務(wù)描述3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境

JupyterNotebook是一種以網(wǎng)頁形式打開的Web應(yīng)用程序,可以在Web頁面中輸入說明文檔、數(shù)學(xué)方程、代碼和可視化內(nèi)容,代碼的運行結(jié)果可以直接在代碼塊下顯示。如果開發(fā)人員在開發(fā)過程中需要編寫說明文檔,可在Notebook的同一個頁面中直接編寫,而無需另外編寫單獨的文檔,便于作及時的說明和解釋。其主要特點包括:1) 編程時具有語法高亮、自動縮進、Tab自動補全的功能。2) 可直接通過瀏覽器運行代碼,同時在代碼塊下方展示運行結(jié)果。3) 以富媒體格式展示計算結(jié)果。富媒體格式包括Html、LaTeX、png和svg等格式或標(biāo)準(zhǔn)。4) 對代碼編寫說明文檔或語句時,支持Markdown語法。5) 支持使用LaTeX編寫數(shù)學(xué)公式。上述特性和優(yōu)勢使得JupyterNotebook迅速成為數(shù)據(jù)分析和機器學(xué)習(xí)等開發(fā)人員的必備工具。JupyterNotebook介紹及其特點項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境二、知識要點3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺進入亞馬遜云官方主頁三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺點擊‘我的賬戶’‘管理控制臺’三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺進入登錄界面三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺單擊‘服務(wù)’--‘EC2’三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺進入EC2管理界面三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境開始創(chuàng)建AmazonEC2實例單擊‘啟動實例’三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境開始創(chuàng)建AmazonEC2實例進入選擇系統(tǒng)映像的界面三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step1:選擇AmazonEC2實例模板(AMI)開始創(chuàng)建AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,選擇AmazonEC2實例模板三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step2:選擇AmazonEC2實例的實例類型開始創(chuàng)建AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,選擇AmazonEC2實例類型三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step3:配置該AmazonEC2實例實例的具體信息創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,配置AmazonEC2實例的網(wǎng)絡(luò)等具體信息三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step4:配置該AmazonEC2實例實例的存儲創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,配置AmazonEC2實例的存儲三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step5:為該AmazonEC2實例實例添加標(biāo)簽創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,添加AmazonEC2實例標(biāo)簽三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step5:為該AmazonEC2實例實例添加標(biāo)簽創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,添加AmazonEC2實例標(biāo)簽三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step6:為該AmazonEC2實例實例配置安全組創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,配置安全組三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step6:為該AmazonEC2實例實例配置安全組創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,配置安全組三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step7:審核AmazonEC2實例創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,審核EC2實例三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施Step7:審核AmazonEC2實例創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,審核EC2實例3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施Step8:選擇現(xiàn)有密鑰或者創(chuàng)建新密鑰對創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,創(chuàng)建密鑰對3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施Step8:選擇現(xiàn)有密鑰或者創(chuàng)建新密鑰對創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,創(chuàng)建密鑰對3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step9:查看AmazonEC2實例狀態(tài)創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,查看實例狀態(tài)三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step10:修改、編輯AmazonEC2實例狀態(tài)和信息創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,修改和編輯實例狀態(tài)和信息三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step10:修改、編輯AmazonEC2實例狀態(tài)和信息創(chuàng)建并配置AmazonEC2實例創(chuàng)建并配置AmazonEC2實例,查看實例狀態(tài)為‘stopped’,表示該實例是停止?fàn)顟B(tài)三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step1:下載支持Python3.8的Anaconda安裝包sudowget/archive/Anaconda3-2020.07-Linux-x86_64.sh在AWSEC2實例中安裝使用JupyterNotebook下載支持Python3.8的Anaconda安裝包,遠程登錄EC2實例,在命令行輸入執(zhí)行下述命令,便可下載,下載完成后查看存在該文件的路徑三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step2:修改安裝包的權(quán)限sudochmodu+xAnaconda3-2020.07-Linux-x86_64.sh在AWSEC2實例中安裝使用JupyterNotebook修改安裝包權(quán)限,使用下述命令修改安裝包權(quán)限三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step2:修改安裝包的權(quán)限sudochmod700Anaconda3-2020.07-Linux-x86_64.sh在AWSEC2實例中安裝使用JupyterNotebook修改安裝包權(quán)限,使用下述命令修改安裝包權(quán)限三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step3:安裝Anaconda開發(fā)環(huán)境sudo./Anaconda3-2020.07-Linux-x86_64.sh在AWSEC2實例中安裝使用JupyterNotebook安裝Anaconda開發(fā)環(huán)境三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step3:安裝Anaconda開發(fā)環(huán)境在AWSEC2實例中安裝使用JupyterNotebook安裝Anaconda開發(fā)環(huán)境三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step3:安裝Anaconda開發(fā)環(huán)境在AWSEC2實例中安裝使用JupyterNotebook安裝Anaconda開發(fā)環(huán)境三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step3:安裝Anaconda開發(fā)環(huán)境三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境在AWSEC2實例中安裝使用JupyterNotebook安裝Anaconda開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step4:配置PATH環(huán)境變量echo$PATH在AWSEC2實例中安裝使用JupyterNotebook配置PATH環(huán)境變量三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step4:配置PATH環(huán)境變量exportPATH=/usr/anaconda3/bin:$PATHsource~/.bashrcecho$PATHwhichjupyter-notebook在AWSEC2實例中安裝使用JupyterNotebook配置PATH環(huán)境變量三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step5:配置JupyterNotebook遠程訪問jupyternotebook--generate-config在AWSEC2實例中安裝使用JupyterNotebook配置JupyterNotebook遠程訪問三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step5:配置JupyterNotebook遠程訪問jupyternotebookpassword在AWSEC2實例中安裝使用JupyterNotebook配置JupyterNotebook遠程訪問三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境vim/home/ec2-user/.jupyter/jupyter_notebook_config.py1 c.NotebookApp.ip='*'2 c.NotebookApp.open_browser=False3 c.NotebookApp.password=u'sha1:'4 c.NotebookApp.port=8888Step5:配置JupyterNotebook遠程訪問在AWSEC2實例中安裝使用JupyterNotebook配置JupyterNotebook遠程訪問三、任務(wù)實施3.1.1部署AmazonEC2實例并配置開發(fā)環(huán)境項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

以AmazonWebService為例,在云計算環(huán)境中進行軟件開發(fā)具有諸多優(yōu)點,譬如,用戶無需考慮硬件投入、部署速度快、組織靈活性高等。特別是使用云平臺上的計算實例進行開發(fā)工作,是很多開發(fā)人員的選擇。上一節(jié)講述了配置AmazonEC2實例以及開發(fā)環(huán)境的方法,用戶需要完成較多的配置任務(wù)。為了降低用戶配置開發(fā)環(huán)境的難度,本任務(wù)要求創(chuàng)建預(yù)制了開發(fā)環(huán)境的AmazonEC2實例,該實例使用的模板包含了Anaconda軟件和JupyterNotebook等開發(fā)工具。一、任務(wù)描述3.1.2安裝預(yù)置了開發(fā)環(huán)境的AmazonEC2實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

AMI(AmazonMachineImage)提供了部署實例需要的信息。用戶在創(chuàng)建實例的實例,必須指定一個AMI。用戶可以使用一個AMI創(chuàng)建多個實例。二、知識要點3.1.2安裝預(yù)置了開發(fā)環(huán)境的AmazonEC2實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境登錄亞馬遜云科技中國區(qū)管理控制臺開始創(chuàng)建AmazonEC2實例創(chuàng)建并配置AmazonEC2實例Step1:選擇實例模板(AMI)Step2:選擇AmazonEC2實例的實例類型Step3:配置該AmazonEC2實例實例的具體信息Step4:配置該AmazonEC2實例實例的存儲Step5:為該AmazonEC2實例實例添加標(biāo)簽Step6:為該AmazonEC2實例實例配置安全組Step7:審核AmazonEC2實例實例Step8:選擇現(xiàn)有密鑰或者創(chuàng)建新密鑰對三、任務(wù)實施3.1.2安裝預(yù)置了開發(fā)環(huán)境的AmazonEC2實例創(chuàng)建安裝預(yù)置了開發(fā)專精的AmazonEC2實例的邏輯結(jié)構(gòu)圖項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境Step1:選擇實例模板(AMI)三、任務(wù)實施3.1.2安裝預(yù)置了開發(fā)環(huán)境的AmazonEC2實例創(chuàng)建并配置AmazonEC2實例選擇實例模板,在EC2的詳細設(shè)置的用戶選項添加預(yù)置開發(fā)環(huán)境的代碼,則可實現(xiàn)創(chuàng)建安裝預(yù)置了開發(fā)環(huán)境的EC2實例,其他創(chuàng)建步驟與3.1.1中創(chuàng)建EC2類似,這里就不在贅述。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

一、任務(wù)描述3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例在之前的內(nèi)容中,介紹了創(chuàng)建AmazonEC2實例及開發(fā)環(huán)境的兩種方法。在一些應(yīng)用場合,用戶僅需要JupyterNotebook開發(fā)環(huán)境即可完成開發(fā)任務(wù)。本任務(wù)要求在AmazonSageMaker中部署筆記本實例。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

在之前的內(nèi)容中,介紹了創(chuàng)建AmazonEC2實例及開發(fā)環(huán)境的兩種方法。在一些應(yīng)用場合,用戶僅需要JupyterNotebook開發(fā)環(huán)境即可完成開發(fā)任務(wù)。本任務(wù)要求在AmazonSageMaker中部署筆記本實例。二、知識要點3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例登錄亞馬遜云科技中國區(qū)管理控制臺進入Amazon控制臺后,點擊‘服務(wù)’‘AmazonSageMaker’項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例創(chuàng)建AmazonSageMaker筆記本實例進入AmazonSageMaker管理界面,點左邊功能導(dǎo)航中的‘筆記本’‘筆記本實例’項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例創(chuàng)建AmazonSageMaker筆記本實例進入AmazonSageMaker筆記本實例管理界面,點擊右上角‘創(chuàng)建筆記本實例’。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例創(chuàng)建AmazonSageMaker筆記本實例進入AmazonSageMaker筆記本設(shè)置管理界面,設(shè)置筆記本實例的詳細信息。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.3在AmazonSageMaker控制臺中創(chuàng)建筆記本實例創(chuàng)建AmazonSageMaker筆記本實例AmazonSageMaker設(shè)置說明。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

在亞馬遜云科技平臺上創(chuàng)建的AmazonEC實例運行在云端,使用SSH協(xié)議客戶端可以方便、高效的登陸并訪問蓋AmazonEC2實例。

本任務(wù)要求在Windows10操作系統(tǒng)中使用SSH協(xié)議客戶端登錄AmazonEC2實例。一、任務(wù)描述3.1.4使用ssh客戶端遠程登陸登錄AmazonEC2實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境

SSH,即SecureShell,由IETF的網(wǎng)絡(luò)小組(NetworkWorkingGroup)制定,是一種建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議,SSH的安全性和可靠性使其成為遠程登錄會話和其他網(wǎng)絡(luò)服務(wù)的常用協(xié)議。

利用SSH協(xié)議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統(tǒng)上的一個程序,后來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網(wǎng)絡(luò)中的漏洞。SSH客戶端適用于多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可運行SSH。二、知識要點3.1.4使用ssh客戶端遠程登陸登錄AmazonEC2實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.4使用ssh客戶端遠程登陸登錄AmazonEC2實例獲取AmazonEC2實例的ip地址啟動EC2實例后,選中要連接的AmazonEC2實例,在下方的‘描述’選項卡中,單擊公有IP有房的復(fù)制圖標(biāo),便可瀆職實例的ip地址。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.4使用ssh客戶端遠程登陸登錄AmazonEC2實例使用ssh客戶端連接到AmazonEC2實例使用ssh客戶端工具‘MobaXterm’連接到AmazonEC2實例,點擊‘session’—‘SSH’,填入ip地址和私有密鑰對,便可連接到AmazonEC2實例項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境三、任務(wù)實施3.1.4使用ssh客戶端遠程登陸登錄AmazonEC2實例使用ssh客戶端連接到AmazonEC2實例進入ssh客戶端連接到AmazonEC2實例界面,輸入EC2的用戶名登錄EC2。項目3.1—安裝部署AmazonEC2實例及開發(fā)環(huán)境項目3.2深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析從數(shù)據(jù)源采集深圳保安機場進港航班信息首頁20條航班數(shù)據(jù)從數(shù)據(jù)源采集深圳保安機場所有進港航班數(shù)據(jù)分析深圳寶安機場進港航班機型數(shù)據(jù)可視化表達深圳寶安機場進港航班機型數(shù)據(jù)

本任務(wù)要求使用數(shù)據(jù)采集技術(shù)從數(shù)據(jù)源網(wǎng)頁采集數(shù)據(jù)。具體來說,使用Requets包的工具向網(wǎng)站發(fā)送請求,使用Beautifulsoup包的工具解析網(wǎng)站服務(wù)器返回的html文件,從解析的文件中獲取感興趣的航班數(shù)據(jù)。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析一、任務(wù)描述3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)數(shù)據(jù)采集技術(shù)數(shù)據(jù)采集技術(shù)是利用一種裝置或技術(shù),從系統(tǒng)外部采集數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部。數(shù)據(jù)采集技術(shù)廣泛應(yīng)用在各個領(lǐng)域。比如攝像頭,麥克風(fēng),都是數(shù)據(jù)采集工具。數(shù)據(jù)采集含義很廣,可以是能夠轉(zhuǎn)換為電訊號的各種物理量,如溫度、水位、風(fēng)速、壓力等,這些物理量既可以是模擬量,也可以是數(shù)字量。在互聯(lián)網(wǎng)行業(yè)快速發(fā)展的今天,數(shù)據(jù)采集已經(jīng)被廣泛應(yīng)用于互聯(lián)網(wǎng)及分布式領(lǐng)域,數(shù)據(jù)采集領(lǐng)域已經(jīng)發(fā)生了重要的變化。本單元中的數(shù)據(jù)采集技術(shù),指的是使用“爬蟲”技術(shù),從數(shù)據(jù)源網(wǎng)站爬取數(shù)據(jù)的技術(shù)。二、知識要點3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析HTTPWeb服務(wù)是基于TCP的,因此為了能夠隨時響應(yīng)客戶端的請求,Web服務(wù)器需要監(jiān)聽在80/TCP端口,使得客戶端瀏覽器和Web服務(wù)器之間可以通過HTTP協(xié)議進行通信??蛻襞c服務(wù)器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當(dāng)服務(wù)器返回本次請求的應(yīng)答后便立即關(guān)閉連接,下次請求再重新建立連接。HTTP是一種無狀態(tài)協(xié)議,即服務(wù)器不保留與客戶通信時的任何狀態(tài)。這大大減輕了服務(wù)器記憶負擔(dān),從而保持較快的響應(yīng)速度。HTTP是一種面向?qū)ο蟮膮f(xié)議。允許傳送任意類型的數(shù)據(jù)對象。它通過數(shù)據(jù)類型和長度來標(biāo)識所傳送的數(shù)據(jù)內(nèi)容和大小,并允許對數(shù)據(jù)進行壓縮傳送。當(dāng)用戶在一個HTML文檔中定義了一個超文本鏈后,瀏覽器將通過TCP/IP協(xié)議與指定的服務(wù)器建立連接。

HTTP協(xié)議的客戶端主要是Web瀏覽器,例如Firefox、MicrosoftEdge、Googlechrome、Safari、Opera二、知識要點3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)Requests包Requests是關(guān)于HTTP協(xié)議的Python庫。使用requests包,用戶可以向服務(wù)器發(fā)送HTTP/1.1請求,無需手動為URL添加查詢字串,也不需要對POST數(shù)據(jù)進行表單編碼。

Requests內(nèi)部使用了urllib3,因而使用requests包發(fā)送HTTP請求時,Keep-alive和HTTP連接池的功能是完全自動化的。EC2實例項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)BeautifulSoup包BeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫。使用這個庫,用戶可以通過喜歡的轉(zhuǎn)換器實現(xiàn)慣用的文檔導(dǎo)航、查找、修改文檔的功能。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)國際民用航空組織和ICAO代碼國際民用航空組織(ICAO,InternationalCivilAviationOrganization),其前身為根據(jù)1919年《巴黎公約》成立的空中航行國際委員會。由于第二次世界大戰(zhàn)對航空器技術(shù)發(fā)展起到了巨大的推動作用,使得世界上已經(jīng)形成了一個包括客貨運輸在內(nèi)的航線網(wǎng)絡(luò),但隨之也引起了一系列急需國際社會協(xié)商解決的政治上和技術(shù)上的問題。因此,在美國政府的邀請下,52個國家于1944年11月1日至12月7日參加了在芝加哥召開的國際會議,簽訂了《國際民用航空公約》,按照公約規(guī)定成立了臨時國際民航組織(PICAO)。

ICAO機場代碼是由國際民用航空組織規(guī)定,由四個英文字母組成的代碼。如:南京祿口國際機場的ICAO代碼是ZSNJ,其中Z代表中國,S代表華東地區(qū),ZS表示中國上海飛行情報區(qū),NJ代表南京祿口國際機場。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)分析數(shù)據(jù)源通過超鏈接進入進港航班表頁面,列出了深圳寶安機場最近進港的20條航班信息項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)分析數(shù)據(jù)源單擊上一圖中‘后20條’,進入該機場進港航班的第2頁。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析importrequestsfrombs4importBeautifulSoupbaseUrl='/live/airport/ZGSZ/arrivals'headers_w={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:78.0)

Gecko/20100101Firefox/78.0','connection':'close'

}r=requests.get(baseUrl,headers=headers_w)soup=BeautifulSoup(r.text,'html.parser')print(soup)三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用Requests包的工具向頁面發(fā)送http請求,使用BeautifulSoup的工具對返回的html文檔進行解析,使用Python語言處理文檔并獲取和存儲有用數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用瀏覽器(比如MicrosoftEdge)打開網(wǎng)址“/live/airport/ZGSZ/arrivals”,單擊鍵盤上的“F12”快捷鍵打開瀏覽器自帶的頁面分析工具,可以看到20條航班信息出現(xiàn)的位置右圖所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析foroneRowinairlineTable[2:22]:

oneRowData=oneRow.find_all('td')

FlightIdent=oneRowData[0].get_text()

FlightType=oneRowData[1].get_text()

FlightDetailedType=oneRowData[1].find('span')['title']

FlightCompany=oneRowData[0].find('span')['title']

ifoneRowData[2].find('span',attrs={'class':'hint'})==None:FlightOriginalTitle=Noneelse:ifoneRowData[2].find('span',attrs={'class':'hint'})['title']!=None:

FlightOriginalTitle=oneRowData[2].find('span',attrs={'class':'hint'})['title']elifoneRowData[2].find('span',attrs={'class':'hint'})['original-title'!=None]:

FlightOriginalTitle=oneRowData[2].find('span',attrs={'class':'hint'})['original-title']

FlightOrigin=oneRowData[2].get_text()

FlightDepartureTime=oneRowData[3].get_text()

FlightArrivalTime=oneRowData[4].get_text()三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用代碼獲取20個航班的具體信息。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析print("該進港航班的航班編號是:",FlightIdent)print("該進港航班的機型是:",FlightType)print("該進港航班的機型詳細信息是:",FlightDetailedType)print("該進港航班所屬的航空公司是:",FlightCompany)print("該進港航班的始發(fā)地是:",FlightOrigin)print("該進港航班的始發(fā)地詳細信息是:",FlightOriginalTitle)print("該進港航班的出發(fā)時間是:",FlightDepartureTime)print("該進港航班的到達時間是:",FlightArrivalTime)三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用代碼清單輸出打印其中一個航班的信息。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析foroneRowinairlineTable[2:22]:

oneRowData=oneRow.find_all('td')#省略多行

FlightArrivalTime=oneRowData[4].get_text()

totalDf=totalDf.append(pd.DataFrame(

{'FlightIdent':[FlightIdent],

'FlightType':[FlightType],

'FlightDetailedType':[FlightDetailedType],

'FlightCompany':[FlightCompany],

'FlightOriginalTitle':[FlightOriginalTitle],

'FlightOrigin':[FlightOrigin],

'FlightDepartureTime':[FlightDepartureTime],

'FlightArrivalTime':[FlightArrivalTime]}),sort=False)三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)在分析航班的for循環(huán)結(jié)構(gòu)末尾,添加代碼為totalDf賦值。代碼清單如下所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析totalDf=totalDf.reset_index(drop=True)print(type(totalDf),len(totalDf))print(totalDf.ix[:,0:3])三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用下述代碼輸出打印totalDf的值和相關(guān)信息。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析defscracthOnePage(url,theDf):

print('當(dāng)前爬取頁面:',url)

r=requests.get(url,headers=headers_w)

soup=BeautifulSoup(r.text,'html.parser')

#省略多行

FlightArrivalTime=oneRowData[4].get_text()

totalDf=totalDf.append(pd.DataFrame(

{'FlightIdent':[FlightIdent],

'FlightType':[FlightType],

'FlightDetailedType':[FlightDetailedType],

'FlightCompany':[FlightCompany],

'FlightOriginalTitle':[FlightOriginalTitle],

'FlightOrigin':[FlightOrigin],

'FlightDepartureTime':[FlightDepartureTime],

'FlightArrivalTime':[FlightArrivalTime]}),sort=False)

returntheDf三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)為了復(fù)用數(shù)據(jù)采集功能,將前述的數(shù)據(jù)采集功能封裝為函數(shù)scracthOnePage。該函數(shù)具有兩個參數(shù)。第一個參數(shù)url是待爬取頁面的URL地址,第二個參數(shù)theDf是存儲航班信息的DataFrame對象。使用該函數(shù)從url指定的頁面采集數(shù)據(jù),并將數(shù)據(jù)存儲到theDf對象中。該函數(shù)將的返回值是theDf對象。代碼清單如右圖所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)使用右圖所示代碼清單采集深圳寶安機場的20條進港航班信息,并將采集到的數(shù)據(jù)存儲在Excel文件“ICAO_ZGSZ_20_Airlines.xls”中。importrequestsfrombs4importBeautifulSoupimportpandasaspdbaseUrl='/live/airport/ZGSZ/arrivals'headers_w={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:78.0)

Gecko/20100101Firefox/78.0',

'connection':'close'

}columnList=['FlightIdent','FlightType',

'FlightDetailedType','FlightCompany',

'FlightOriginalTitle','FlightOrigin',

'FlightDepartureTime','FlightArrivalTime']totalDf=pd.DataFrame(columns=columnList)totalDf=scracthOnePage(baseUrl,totalDf)totalDf=totalDf.reset_index(drop=True)totalDf.to_excel('ICAO_ZGSZ_20_Airlines.xls')print(totalDf.ix[:,[1,2,6,7]])項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.1從數(shù)據(jù)源采集深圳寶安機場進港航班信息首頁20條航班數(shù)據(jù)采集20條寶安機場到港航班數(shù)據(jù)運行上述代碼后結(jié)果如左下圖所示,生成數(shù)據(jù)文件內(nèi)容如右下圖所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析

前面采集了寶安機場進港航班的20條航班信息,這20條航班信息也是數(shù)據(jù)源首頁面記錄的20個航班。從數(shù)據(jù)源采集寶安機場所有進港航班,需要采集所有頁面記錄的航班數(shù)據(jù),并將數(shù)據(jù)進行存儲。

完成該任務(wù)的思路是,首先采集數(shù)據(jù)源首頁面的航班數(shù)據(jù)和相關(guān)有用信息,然后設(shè)計一個循環(huán)結(jié)構(gòu),采集第二個頁面到最后一個頁面的航班數(shù)據(jù)。循環(huán)結(jié)構(gòu)的停止條件是應(yīng)用程序已經(jīng)采集完成數(shù)據(jù)源的最后一個頁面。完成數(shù)據(jù)采集之后,將數(shù)據(jù)存儲到S3存儲桶當(dāng)中。一、任務(wù)描述3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析1.結(jié)構(gòu)化編程

結(jié)構(gòu)化程序設(shè)計是,一種編程模式,它采用子程序、程序區(qū)塊、for循環(huán)以及while循環(huán)等結(jié)構(gòu),來取代傳統(tǒng)的goto。使用結(jié)構(gòu)化程序設(shè)計,可以改善計算機程序的明晰性、品質(zhì)以及開發(fā)時間,避免寫出面條式代碼。2.Python中的函數(shù)

函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。

開發(fā)人員將常用的代碼以固定的格式封裝成一個獨立的模塊,通過模塊的名字就可以重復(fù)使用這個模塊,把這個模塊就叫做函數(shù)(Function)。

Python中函數(shù)的應(yīng)用非常廣泛,除了可以直接使用的內(nèi)置函數(shù)外,Python還支持自定義函數(shù),即將一段有規(guī)律的、可重復(fù)使用的代碼定義成函數(shù),從而達到一次編寫、多次調(diào)用的目的。二、知識要點3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)數(shù)據(jù)源頁面分析如前所述,數(shù)據(jù)源首頁面的底部有一個“后20條”超鏈接,單擊此鏈接,跳轉(zhuǎn)到數(shù)據(jù)源的下一個頁面,顯示另外20條航班信息,由于在該頁面之前和之后還有若干條航班信息,因而在該頁面的左下角存在“前20條”和“后20條”兩個超鏈接。如果達到了數(shù)據(jù)源的最后一個頁面,則僅顯示“前20條”超鏈接。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析defscracthOnePage(url,theDf):

print('當(dāng)前爬取頁面:',url)

r=requests.get(url,headers=headers_w)

soup=BeautifulSoup(r.text,'html.parser')

#省略多行

return(theDf,soup)三、任務(wù)實施3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)從數(shù)據(jù)源采集更多的數(shù)據(jù)由于需要在返回的soup對象中獲取“前20條”或“后20條”這兩個字符串,因此需要修改采集首頁面航班數(shù)據(jù)的函數(shù)scracthOnePage,并將soup對象作為該函數(shù)的返回值之一,修改之后的scracthOnePage函數(shù)代碼清單如下所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析baseUrl='/live/airport/ZGSZ/arrivals'headers_w={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:78.0)

Gecko/20100101Firefox/78.0',

'connection':'close'

}columnList=['FlightIdent','FlightType',

'FlightDetailedType','FlightCompany',

'FlightOriginalTitle','FlightOrigin',

'FlightDepartureTime','FlightArrivalTime']totalDf=pd.DataFrame(columns=columnList)totalDf=scracthOnePage(baseUrl,totalDf)(totalDf,soup)=scracthOnePage(baseUrl,totalDf)print(soup)三、任務(wù)實施3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)從數(shù)據(jù)源采集更多的數(shù)據(jù)使用修改后的scracthOnePage函數(shù)向數(shù)據(jù)源首頁面發(fā)送http請求,并查看解析的soup對象。代碼清單如左下圖所示,運行結(jié)果如右下圖所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析pageCnt=2print('當(dāng)前爬取第%d頁'%(pageCnt))theOrginalPageURL=soup.find('table',attrs={'class':'fullWidth'}).find('a')['href']theNextPageUrl=theOrginalPageURL[0:4]+'s'+theOrginalPageURL[4:](totalDf,soup)=scracthOnePage(theNextPageUrl,totalDf)totalDf=totalDf.reset_index(drop=True)print("DataFrame對象存儲了%d條航班信息。"%len(totalDf))print(totalDf.iloc[0:5,0:3])print(totalDf.iloc[35:40,0:3])三、任務(wù)實施3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)從數(shù)據(jù)源采集更多的數(shù)據(jù)下述代碼的第1行創(chuàng)建變量pageCnt用來存儲當(dāng)前采集的頁面,其初值為2,輸出打印totalDf對象的相關(guān)信息,如右下圖所示。項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析設(shè)計數(shù)據(jù)采集函數(shù)在完成了第二個頁面的數(shù)據(jù)采集之后,基于這部分代碼,設(shè)計一個循環(huán)結(jié)構(gòu),完成其他頁面的采集任務(wù)。這里,是否完成采集,是通過判斷頁面中是否有“后20條”鏈接確定的。為了統(tǒng)計采集所有數(shù)據(jù)花費的時間,使用time包中的函數(shù),設(shè)計程序統(tǒng)計總耗時。代碼清單如右圖所示。importtime#省略多行pageCnt=2start_time=time.time()whileTrue:

start_time=time.time()

ifsoup.find('table',attrs={'class':'fullWidth'}).find('a').contents[0]=='后20條'\

orsoup.find('table',attrs={'class':'fullWidth'}).find('a').contents[0]=='Next20':

print('當(dāng)前爬取第%d頁'%(pageCnt))

theOrginalPageURL=soup.find('table',attrs={'class':'fullWidth'}).find('a')['href']

theNextPageUrl=theOrginalPageURL[0:4]+'s'+theOrginalPageURL[4:]

(totalDf,soup)=scracthOnePage(theNextPageUrl,totalDf)

pageCnt+=1

else:

breakend_time=time.time()total_time=end_time-start_timeprint('完成采集所有航班數(shù)據(jù),共耗時%.2f秒。'%total_time)三、任務(wù)實施3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析三、任務(wù)實施設(shè)計數(shù)據(jù)采集函數(shù)運行上述代碼,運行結(jié)果如下圖所示??梢?,完成數(shù)據(jù)采集需要1652秒,大約28分鐘。3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析totalDf=totalDf.reset_index(drop=True)print("DataFrame對象存儲了%d條航班信息。"%len(totalDf))print(totalDf.iloc[0:5,0:3])print(totalDf.iloc[len(totalDf)-5:len(totalDf),0:3])三、任務(wù)實施設(shè)計數(shù)據(jù)采集函數(shù)采用下述代碼輸出打印totalDf的部分信息。運行結(jié)果如右圖所示3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析importboto3totalDf.to_excel('ZGSZ_Arrivals.xlsx')s3=boto3.client('s3')response=s3.upload_file('./ZGSZ_Arrivals.xlsx',

$BUCKET_NAME,

'ZGSZ_Arrivals.xlsx')三、任務(wù)實施將采集的航班數(shù)據(jù)存儲到S3存儲桶中完成數(shù)據(jù)采集之后,將該文件存儲在AmazonEC2實例上,并存儲到S3存儲桶當(dāng)中,這里使用的代碼如左下圖所示,運行上該代碼之后,存儲桶當(dāng)中存儲了該數(shù)據(jù)文件,如右下圖所示。3.2.2從數(shù)據(jù)源采集深圳寶安機場進港航班數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析

本任務(wù)要求從S3中讀取數(shù)據(jù)文件,獲取深圳寶安機場進港航班并使用這些數(shù)據(jù),分析進港航班的機型分布情況,并作可視化呈現(xiàn)。一、任務(wù)描述3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析數(shù)據(jù)分析技術(shù)數(shù)據(jù)分析是指用適當(dāng)?shù)慕y(tǒng)計分析方法對收集來的大量數(shù)據(jù)進行分析,提取有用信息和形成結(jié)論而對數(shù)據(jù)加以詳細研究和概括總結(jié)的過程。這一過程也是質(zhì)量管理體系的支持過程。在工作和生產(chǎn)中,數(shù)據(jù)分析可幫助人們作出判斷,以便采取適當(dāng)行動。數(shù)據(jù)分析的數(shù)學(xué)基礎(chǔ)在20世紀(jì)早期就已確立,但直到計算機的出現(xiàn)才使得實際操作成為可能,并使得數(shù)據(jù)分析得以推廣。數(shù)據(jù)分析是數(shù)學(xué)與計算機科學(xué)相結(jié)合的產(chǎn)物。在統(tǒng)計學(xué)領(lǐng)域,有些人將數(shù)據(jù)分析劃分為描述性統(tǒng)計分析、探索性數(shù)據(jù)分析以及驗證性數(shù)據(jù)分析;其中,探索性數(shù)據(jù)分析側(cè)重于在數(shù)據(jù)之中發(fā)現(xiàn)新的特征,而驗證性數(shù)據(jù)分析則側(cè)重于已有假設(shè)的證實或證偽。探索性數(shù)據(jù)分析是指為了形成值得假設(shè)的檢驗而對數(shù)據(jù)進行分析的一種方法,是對傳統(tǒng)統(tǒng)計學(xué)假設(shè)檢驗手段的補充。該方法由美國著名統(tǒng)計學(xué)家約翰·圖基(JohnTukey)命名。定性數(shù)據(jù)分析又稱為“定性資料分析”、“定性研究”或者“質(zhì)性研究資料分析”,是指對諸如詞語、照片、觀察結(jié)果之類的非數(shù)值型數(shù)據(jù)(或者說資料)的分析。用來進行分析的數(shù)據(jù)主要來源于:搜索引擎抓取數(shù)據(jù)、網(wǎng)站IP、PV等基本數(shù)據(jù)、網(wǎng)站的HTTP響應(yīng)時間數(shù)據(jù)、網(wǎng)站流量來源數(shù)據(jù)等。

二、知識要點3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析CSV文件

CSV(Comma-SeparatedValues),逗號分隔值,其文件以純文本形式存儲表格數(shù)據(jù)(數(shù)字和文本)。CSV是一種通用的、相對簡單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。最廣泛的應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù),而這些程序本身是在不兼容的格式上進行操作的(往往是私有的和/或無規(guī)范的格式)。因為大量程序都支持某種CSV變體,至少是作為一種可選擇的輸入/輸出格式。純文本意味著CSV文件是一個字符序列,不含必須像二進制數(shù)字那樣被解讀的數(shù)據(jù)。CSV文件由任意數(shù)目的記錄組成,記錄間以某種換行符分隔;每條記錄由字段組成,字段間的分隔符是其它其他字符或字符串,最常見的是逗號或制表符。通常,所有記錄都有完全相同的字段序列。通常都是純文本文件。

CSV文件格式的通用標(biāo)準(zhǔn)并不存在,但是在RFC4180中有基礎(chǔ)性的描述。使用的字符編碼同樣沒有被指定,但是7-bitASCII是最基本的通用編碼??梢允褂贸S玫奈谋揪庉嬡浖蜷_CSV文件。

二、知識要點3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析Excel文件MicrosoftExcel是微軟公司的辦公軟件Microsoftoffice的組件之一,是由Microsoft為Windows和AppleMacintosh操作系統(tǒng)的電腦而編寫和運行的一款試算表軟件。Excel是微軟辦公套裝軟件的一個重要的組成部分,它可以進行各種數(shù)據(jù)的處理、統(tǒng)計分析和輔助決策操作,廣泛地應(yīng)用于管理、統(tǒng)計財經(jīng)、金融等眾多領(lǐng)域。

Excel文件也是常用的數(shù)據(jù)來源。

二、知識要點3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析importpandasaspdimportboto3totalDf=pd.read_excel('https://$BUCKET_NAME./ZGSZ_Arrivals.xlsx')totalDf=totalDf.drop(['Unnamed:0'],axis=1)三、任務(wù)實施從S3存儲桶中讀取航班數(shù)據(jù)文件及預(yù)處理使用右圖所示代碼從S3的存儲桶$BUCKET_NAME中讀取數(shù)據(jù)文件3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析tmpDf=totalDf.drop(['FlightIdent','FlightDetailedType',\

'FlightCompany','FlightOriginalTitle',\

'FlightOrigin','FlightDepartureTime',\

'FlightArrivalTime'],

axis=1)tmpDf['FlightTypeCnt']=1tmpDf=tmpDf.groupby('FlightType').count()tmpDf=tmpDf.sort_values(by='FlightTypeCnt',ascending=False)

.reset_index(drop=False)三、任務(wù)實施分析深圳寶安機場進港航班機型數(shù)量需要對航班的機型進行分析,因此可以將機型“FlightType”之外的列刪除掉,并增加值為1的新列“FlightTypeCnt”。新增加的列用來存儲統(tǒng)計的機型結(jié)果。使用的代碼清單如下所示:3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析defgetFlightTypeRank(AirLineDf):

tmpDf=totalDf.drop(['FlightIdent','FlightDetailedType',\

'FlightCompany','FlightOriginalTitle',\

'FlightOrigin','FlightDepartureTime',\

'FlightArrivalTime'],

axis=1)tmpDf['FlightTypeCnt']=1tmpDf=tmpDf.groupby('FlightType').count()tmpDf=tmpDf.sort_values(by='FlightTypeCnt',ascending=False)

.reset_index(drop=False)returntmpDf三、任務(wù)實施設(shè)計進港航班機型分析函數(shù)為了復(fù)用上述功能,將其封裝為函數(shù)getFlightTypeRank,該函數(shù)具有一個參數(shù),是從數(shù)據(jù)文件讀取出的DataFrame對象,該函數(shù)的返回值是經(jīng)分析處理后的DataFrame對象。代碼清單如右圖所示。3.2.3分析深圳寶安機場進港航班機型數(shù)據(jù)項目3.2—深圳寶安機場進港航班數(shù)據(jù)采集及其可視化分析flightTypeDf=getFlightTypeRank(totalDf)flightTypeList=list(flightTypeDf['Fligh

溫馨提示

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

評論

0/150

提交評論