旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢熱線:010-5367 2995
首頁(yè) > 熱門文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)分析如何跟蹤遷移模式

大數(shù)據(jù)分析如何跟蹤遷移模式

時(shí)間:2020-09-18來源:lb577.com點(diǎn)擊量:作者:Sissi
時(shí)間:2020-09-18點(diǎn)擊量:作者:Sissi




  提升技能是成為數(shù)據(jù)科學(xué)家的重要組成部分。剛開始時(shí),您主要側(cè)重于學(xué)習(xí)編程語(yǔ)言,正確使用第三方工具,顯示可視化內(nèi)容以及對(duì)統(tǒng)計(jì)算法的理論理解。下一步是在更困難的數(shù)據(jù)集上測(cè)試您的技能。
 

  有時(shí),這些數(shù)據(jù)集需要大量清理,格式不正確或很難找到。關(guān)于理解我們周圍數(shù)據(jù)的重要性,這里有很多內(nèi)容,但是對(duì)于如何實(shí)際獲取數(shù)據(jù)卻幾乎找不到。
 

  隨著您成為數(shù)據(jù)科學(xué)家的成長(zhǎng),最初的數(shù)據(jù)調(diào)查,探索和檢索是最重要的學(xué)習(xí)步驟。從多個(gè)來源中查找和清理數(shù)據(jù)集無疑會(huì)產(chǎn)生前期成本—但是一旦您擁有了清理,格式正確且易于理解的數(shù)據(jù)集,回答數(shù)據(jù)上多個(gè)問題的可能性就會(huì)大大提高。
 

  在大數(shù)據(jù)分析如何跟蹤遷移模式中,我們將逐步研究,檢索和清理現(xiàn)實(shí)世界的數(shù)據(jù)集。為了紀(jì)念世界候鳥日,我們將使用候鳥數(shù)據(jù)。我們還將介紹構(gòu)建您自己的數(shù)據(jù)集所涉及的成本收益和必要的工具。有了這些基礎(chǔ)知識(shí),您就可以深入研究并找到自己要使用的數(shù)據(jù)集。
 

  研究可用的候鳥數(shù)據(jù)集
 

  您應(yīng)該從一個(gè)關(guān)鍵問題開始每次調(diào)查:我們要學(xué)習(xí)什么?有了這個(gè)問題,找到合適的數(shù)據(jù)集就容易了。對(duì)于我們的示例,我們想了解北美鳥類的遷徙方式。要了解這些模式,我們需要在幾年中找到準(zhǔn)確的遷移數(shù)據(jù)。
 

  很難找到這樣的模糊數(shù)據(jù)??赡軙?huì)有業(yè)余愛好者在個(gè)人網(wǎng)站,論壇或其他渠道上托管自己的數(shù)據(jù),但是業(yè)余數(shù)據(jù)集通常容易出錯(cuò)并且包含丟失的數(shù)據(jù)。相反,我們應(yīng)該尋找在政府或大學(xué)網(wǎng)站上托管的更專業(yè)的數(shù)據(jù)集。
 

  搜尋關(guān)鍵字“鳥類遷徙”,“數(shù)據(jù)庫(kù)”和“美國(guó)”,我們找到了幾個(gè)有關(guān)鳥類遷徙信息的網(wǎng)站。第一個(gè)是eBird,包含康奈爾實(shí)驗(yàn)室托管的鳥類遷徙數(shù)據(jù)。第二個(gè)是來自美國(guó)魚類和野生動(dòng)物服務(wù)(USFWS)網(wǎng)站,該網(wǎng)站使用合作伙伴關(guān)系和公民研究數(shù)據(jù)來創(chuàng)建報(bào)告。我們希望使用兩種服務(wù)的數(shù)據(jù)集,以便我們可以交叉檢查數(shù)據(jù)并確定不一致之處。
 

  讓我們從eBirds數(shù)據(jù)集開始。
 

  導(dǎo)航到下載頁(yè)面,系統(tǒng)將要求您在康奈爾研究實(shí)驗(yàn)室創(chuàng)建一個(gè)帳戶。登錄后,您可以進(jìn)入下載頁(yè)面。但是在訪問完整的數(shù)據(jù)集之前,您需要填寫一張表格,描述您打算如何使用數(shù)據(jù)。我們成功填寫了表格并等待了幾天,然后才能完全訪問數(shù)據(jù)集。需要時(shí)間,但不太困難。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  接下來,讓我們看一下USFWS。乍一看,該網(wǎng)站似乎比eBirds門戶網(wǎng)站容易使用得多。有一個(gè)明確的鏈接可以指導(dǎo)我們找到完整的數(shù)據(jù)庫(kù)列表,其中包含不同的鳥類,地理數(shù)據(jù)點(diǎn)和遷徙飛行路線。如果它們具有有效的鏈接,則這些井井有條且經(jīng)過分類的數(shù)據(jù)集將非常有幫助且易于分析。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  不幸的是,從USFWS門戶檢索數(shù)據(jù)并不容易。有多個(gè)無效鏈接,格式不正確的數(shù)據(jù)集以及無法按所宣傳的那樣運(yùn)行的HTML按鈕。盡管這些問題大多是不良的界面設(shè)計(jì),但所有HTTP端點(diǎn)似乎都可以正常運(yùn)行,并且只需使用少量Python代碼,我們就會(huì)發(fā)現(xiàn)我們能夠獲取所需的數(shù)據(jù)。
 

  查找數(shù)據(jù)
 

  由于USFWS網(wǎng)站提供的鏈接數(shù)量眾多,很難僅找到可能的數(shù)據(jù)集端點(diǎn)。當(dāng)我們潛入時(shí),我們發(fā)現(xiàn)的第一個(gè)成功數(shù)據(jù)集是通過鏈接到USFWS發(fā)布的水禽飛行方式數(shù)據(jù)手冊(cè)。該數(shù)據(jù)手冊(cè)據(jù)說包含了我們進(jìn)行調(diào)查所需的所有信息,但存在一個(gè)主要缺陷:它以PDF格式存儲(chǔ)。由于PDF的結(jié)構(gòu)不一致,因此很難解析它們,因此這應(yīng)該是最后的選擇。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  致力于水鳥飛行路線模式的數(shù)據(jù)集,我們決定遵循另一條鏈接到USFWS報(bào)告的路徑。這些報(bào)告被描述為1995年以來有關(guān)北美水禽飛行路線模式的調(diào)查數(shù)據(jù)。正是我們想要的。單擊報(bào)告的鏈接后,我們將看到服務(wù)條款和免責(zé)聲明阻止程序。接受后,有一個(gè)報(bào)告生成表格,使研究人員能夠限制有關(guān)水禽類型,狀態(tài)或發(fā)現(xiàn)該水禽的“圖”的數(shù)據(jù)。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  而不是限制數(shù)據(jù),我們選擇表單中的每個(gè)值,然后按提交。最后,我們向您展示了一個(gè)分頁(yè)表格,其中包含完整數(shù)據(jù)集的樣本。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  滾動(dòng)到頁(yè)面底部,還有整個(gè)數(shù)據(jù)集的下載按鈕!不幸的是,按下按鈕會(huì)將我們重定向到403 Unauthorized頁(yè)面。
 

  有點(diǎn)沮喪,但并非沒有希望,我們正在尋找解決方案。首先,我們追溯為檢索數(shù)據(jù)而采取的步驟。這些步驟是導(dǎo)航到下載頁(yè)面,提交簡(jiǎn)單的表單提交,解析HTML格式的表并在數(shù)據(jù)的每一頁(yè)上運(yùn)行解析器??紤]這些步驟,我們意識(shí)到可以使用Python網(wǎng)絡(luò)抓取腳本輕松地將它們自動(dòng)化!
 

  下載數(shù)據(jù)
 

  我們將使用兩個(gè)主要包來抓取數(shù)據(jù)。
 

  1)請(qǐng)求(用于發(fā)出HTTP請(qǐng)求)

  2)beautifulsoup(用于解析HTML)
 

  首先,requests執(zhí)行HTTP請(qǐng)求,表單提交和下載HTML表文件。使用Chrome Dev Tools,我們將導(dǎo)航到調(diào)查表單頁(yè)面,并填寫表單中的所有值,然后按下Submit按鈕,然后檢查請(qǐng)求的標(biāo)題。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  我們分別突出顯示了請(qǐng)求類型,URL和表單數(shù)據(jù)的字段。從屏幕截圖中,要生成報(bào)告,我們需要使用給定的表單數(shù)據(jù)將POST請(qǐng)求發(fā)送到URL。為了使事情變得簡(jiǎn)單,我們將使用URL編碼的表單數(shù)據(jù)源代碼。然后,我們將使用以下代碼段使用和內(nèi)容類型標(biāo)頭來發(fā)出POST請(qǐng)求。requests.post()x-www-form-urlencoded

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  這種感覺是正確的,但是我們?nèi)鄙俚闹匾M成部分,我們才能發(fā)出請(qǐng)求。如果要運(yùn)行該代碼段,那么我們的請(qǐng)求將被所需的條款和條件頁(yè)面阻止,而不是返回報(bào)告?;叵胍幌?,USFWS要求您在使用數(shù)據(jù)之前接受其免責(zé)聲明。
 

  要解決此問題,請(qǐng)注意,在接受條款和條件時(shí),您的瀏覽會(huì)話擁有對(duì)其余報(bào)告的完全訪問權(quán)限。要在Python腳本中重新創(chuàng)建此行為,我們需要實(shí)例化一個(gè)持久requests.Session對(duì)象。使用該requests.Session對(duì)象,我們將導(dǎo)航到“接受”頁(yè)面來接受免責(zé)聲明,并且在經(jīng)過身份驗(yàn)證的會(huì)話中,我們將提交表單數(shù)據(jù)。
 

  總之,它看起來像:

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  成功!我們根據(jù)需要獲得了報(bào)告表,但是請(qǐng)注意,有616頁(yè)的數(shù)據(jù)要解析。我們可以減少數(shù)量的一種方法是選擇更多數(shù)量的textRows表單值。讓我們將其更改為每個(gè)表99行的最大值。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  現(xiàn)在我們已擁有每頁(yè)的最大行數(shù),我們可以轉(zhuǎn)到HTML解析步驟。
 

  解析數(shù)據(jù)
 

  要解析數(shù)據(jù),我們需要BeautifulSoup使用報(bào)告響應(yīng)HTML字符串創(chuàng)建一個(gè)對(duì)象。在后臺(tái),該BeautifulSoup對(duì)象將HTML字符串轉(zhuǎn)換為樹狀數(shù)據(jù)結(jié)構(gòu)。這樣可以輕松查詢諸如包含報(bào)告數(shù)據(jù)的標(biāo)簽之類的標(biāo)簽。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  使用我們的可分析對(duì)象,我們現(xiàn)在可以在HTML文檔中搜索該標(biāo)記。在文檔中,報(bào)告數(shù)據(jù)在第二個(gè)中,因此我們將使用該.findAll()方法并在列表中選擇第二個(gè)項(xiàng)目。然后,我們將過濾表的所有行,并將它們?cè)O(shè)置為rows變量。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  接下來,我們要提取標(biāo)題行并清理值。作為參考,HTML表格的標(biāo)題行使用標(biāo)記格式化,數(shù)據(jù)行使用格式化。要獲取標(biāo)簽值,我們需要調(diào)用標(biāo)簽的.string屬性BeautifulSoup。我們將從表的第一行中獲取標(biāo)頭值。

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  提取標(biāo)題后,就該從行中獲取數(shù)據(jù)了。我們將遍歷該表的各行,找到所有標(biāo)簽,并將其分配給新行。此外,我們將合并標(biāo)題和行,然后清理一些空白值,以使其更易于解析。
 

大數(shù)據(jù)分析如何跟蹤遷移模式
 

  使用進(jìn)行更多的unicode清理后unicodedata.normalize(),我們應(yīng)該獲得以下輸出:

大數(shù)據(jù)分析如何跟蹤遷移模式
大數(shù)據(jù)分析如何跟蹤遷移模式


  解析表之后,我們可以遍歷數(shù)據(jù)集的每一頁(yè)并將值組合在一起。
 

  放在一起
 

  在構(gòu)建完整的數(shù)據(jù)集之前,尚需實(shí)現(xiàn)三個(gè)部分:
 

  1)查找要分頁(yè)的數(shù)據(jù)總頁(yè)數(shù)。

  2)創(chuàng)建一個(gè)form_data模板以動(dòng)態(tài)修改表單數(shù)據(jù)。

  3)循環(huán)瀏覽頁(yè)面并合并所有行。
 

  我們將從第一點(diǎn)開始。窺視報(bào)告頁(yè)面的HTML,我們看到總頁(yè)數(shù)在標(biāo)題中。我們可以從標(biāo)題中提取總數(shù)的一種方法是從標(biāo)題中分離數(shù)字,然后將其轉(zhuǎn)換為整數(shù)。這是可行的,但是依靠標(biāo)題字符串的解決方案太脆弱了。
 

  相反,如果我們仔細(xì)查看表單數(shù)據(jù),則會(huì)有一個(gè)隱藏的輸入字段為我們完成工作。在標(biāo)記的底部,帶有的輸入值name=txtLastPage。使用BeautifulSoup,我們只需搜索輸入標(biāo)簽和匹配名稱,然后將值轉(zhuǎn)換為整數(shù)。這是一個(gè)潛在的實(shí)現(xiàn)。

大數(shù)據(jù)分析如何跟蹤遷移模式
大數(shù)據(jù)分析如何跟蹤遷移模式
 

  現(xiàn)在,我們要一起添加模板和分頁(yè)。首先,我們將創(chuàng)建一個(gè)字符串模板,該模板form_data使用字符串格式提交動(dòng)態(tài)表單數(shù)據(jù)。在我們的情況下,我們要?jiǎng)討B(tài)修改當(dāng)前頁(yè)面值。接下來,我們將找到使用頁(yè)面總數(shù)的值并保持循環(huán),直到我們學(xué)會(huì)了數(shù)據(jù)集。經(jīng)過一點(diǎn)清理,我們得到以下最終實(shí)現(xiàn):

大數(shù)據(jù)分析如何跟蹤遷移模式
大數(shù)據(jù)分析如何跟蹤遷移模式
 

  太棒了!我們已經(jīng)提取了完整的數(shù)據(jù)集,并且它也處于Python可讀狀態(tài)。從這里,我們可以添加更多數(shù)據(jù)清理功能,將表保存到文件中,并對(duì)數(shù)據(jù)進(jìn)行一些分析。
 

  結(jié)論
 

  使用一些基本的Python Web抓取,我們能夠:
 

  1)使用會(huì)話訪問僅經(jīng)過身份驗(yàn)證的內(nèi)容。

  2)解析HTML表格數(shù)據(jù)并將其映射到Python列表列表。

  3)跨多個(gè)HTML頁(yè)面自動(dòng)抓取數(shù)據(jù)集。
 

  從這個(gè)例子中,我們能夠證明Python的Web抓取能力,用于數(shù)據(jù)調(diào)查,清理和檢索。如文章開頭所述,在詢問數(shù)據(jù)科學(xué)中更困難的問題時(shí),您需要查找自己的數(shù)據(jù)集。網(wǎng)絡(luò)上有大量可用數(shù)據(jù)。一旦您擁有查找和收集此數(shù)據(jù)的工具和經(jīng)驗(yàn),您將在分析中獲得很高的回報(bào)。
 

  如果您想更新示例,請(qǐng)?zhí)砑右韵聝?nèi)容:
 

  1)使用表數(shù)據(jù)創(chuàng)建一個(gè)CSV文件。

  2)使用協(xié)程或線程加快網(wǎng)絡(luò)呼叫的阻塞。

  3)循環(huán)瀏覽頁(yè)面,而不必兩次請(qǐng)求第一頁(yè)。

  4)添加錯(cuò)誤處理以提高代碼的健壯性。


 

預(yù)約申請(qǐng)免費(fèi)試聽課

填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ lb577.com 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖