Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
數(shù)據(jù)可視化的研究熱潮中,如何讓數(shù)據(jù)生動呈現(xiàn),成了一個具有挑戰(zhàn)性的任務(wù),隨之也出現(xiàn)了大量的可視化軟件。相對于其他商業(yè)可視化軟件,Python是開源且免費(fèi)的,而且具有易上手、效果好的優(yōu)點(diǎn)。
大家普遍第一次接觸到的Python數(shù)據(jù)可視化庫基本上都是Matplotlib。Python還有很多數(shù)據(jù)可視化庫,本文盤點(diǎn)了12款常用的Python數(shù)據(jù)可視化庫,挑選適合自己業(yè)務(wù)的那一款吧!
深入學(xué)習(xí)Python商業(yè)數(shù)據(jù)可視化技術(shù),推薦閱讀《Python商業(yè)數(shù)據(jù)可視化實(shí)戰(zhàn)》。
▼
Python有很多數(shù)據(jù)可視化庫,這些數(shù)據(jù)可視化庫主要分為探索式可視化庫和交互式可視化庫。前者透過簡單直接的視覺圖形,更方便用戶看懂原數(shù)據(jù),后者主要用于與業(yè)務(wù)結(jié)合過程中展現(xiàn)總體分析結(jié)果。
探索式可視化庫
探索式分析最大的優(yōu)勢在于,可以讓業(yè)務(wù)人員在海量數(shù)據(jù)中“自由發(fā)揮”,不受數(shù)據(jù)模型的限制。通過探索式分析和可視化,業(yè)務(wù)人員可以快速發(fā)現(xiàn)業(yè)務(wù)中存在的問題。
Python探索式可視化庫主要包括如下幾個。
1Matplotlib
Matplotlib是Python數(shù)據(jù)可視化庫的元老,盡管它已有十多年的歷史,但仍然是Python社區(qū)中使用最廣泛的繪圖庫,編寫幾行代碼即可生成線圖、直方圖、功率譜密度圖、條形圖、錯誤圖、散點(diǎn)圖等。
Python的可視化庫眾多,各有各的特點(diǎn),但是Matplotlib是一個非常基礎(chǔ)的Python可視化庫,如果需要學(xué)習(xí)Python數(shù)據(jù)可視化,那么Matplotlib是非學(xué)不可的,之后再學(xué)習(xí)其他庫就比較簡單了。Matplotlib的中文學(xué)習(xí)資料比較豐富,其中最好的學(xué)習(xí)資料是其官方網(wǎng)站的幫助文檔,大家可以在上面查閱自己感興趣的內(nèi)容。
2Seaborn
Seaborn利用Matplotlib的強(qiáng)大功能,只用幾行代碼就能創(chuàng)建出漂亮的圖表。它們的關(guān)鍵區(qū)別在于,Seaborn的默認(rèn)款式和調(diào)色板設(shè)計更加美觀和現(xiàn)代。由于Seaborn是在Matplotlib基礎(chǔ)上構(gòu)建的,因此用戶還需要了解Matplotlib以便調(diào)整Seaborn的默認(rèn)值。
Seaborn同Matplotlib一樣,也是Python進(jìn)行數(shù)據(jù)可視化分析的重要第三方包。
Seaborn在Matplotlib的基礎(chǔ)上進(jìn)行了更高級的API封裝,使用戶繪圖更加容易,所繪圖形更加漂亮。Seaborn是基于Matplotlib的一個模塊,專用于統(tǒng)計可視化,可以和Pandas進(jìn)行無縫連接,使可視化的初學(xué)者更容易上手。
相對于Matplotlib,Seaborn語法更簡潔,兩者的關(guān)系類似于Numpy和Pandas的關(guān)系。但是需要注意的是,應(yīng)該把Seaborn視為Matplotlib的補(bǔ)充,而不是替代物。
Seaborn庫旨在以數(shù)據(jù)可視化為中心來挖掘與理解數(shù)據(jù),它提供的面向數(shù)據(jù)集制圖函數(shù)主要是對行列索引和數(shù)組的操作,包含對整個數(shù)據(jù)集進(jìn)行內(nèi)部的語義映射與統(tǒng)計整合,以此生成信息豐富的圖表。
3Pyecharts
Pyecharts是我國開發(fā)人員開發(fā)的,相比較Matplotlib、Seaborn等可視化庫,Pyecharts十分符合國內(nèi)用戶的使用習(xí)慣。
Pyecharts的目的是實(shí)現(xiàn)Echarts與Python的對接,以便在Python中使用Echarts生成圖表。
Echarts是百度開源的一個數(shù)據(jù)可視化JavaScript庫,生成的圖的可視化效果非常好,其憑借良好的交互性,精巧的圖表設(shè)計,得到了眾多開發(fā)者的認(rèn)可
4Missingno
處理缺失的數(shù)據(jù)是一件讓人痛苦的事,Missingno通過使用視覺摘要來快速評估數(shù)據(jù)集的完整性,而不是通過大篇幅的表格。它可以根據(jù)熱力圖或樹狀圖的完成度或點(diǎn)的相關(guān)度對數(shù)據(jù)進(jìn)行過濾和排序。
交互式可視化庫
數(shù)據(jù)可視化可以是靜態(tài)的也可以是交互的,交互式的數(shù)據(jù)可視化是指人們使用計算機(jī)和移動設(shè)備深入圖表和圖形的具體細(xì)節(jié),然后用交互的方式改變他們看到的數(shù)據(jù)。Python交互式可視化庫主要包括如下幾個。
1Bokeh
Bokeh基于JavaScript實(shí)現(xiàn)交互式可視化,它是原生Python語法,它可以在Web瀏覽器中實(shí)現(xiàn)美觀的視覺效果。
它的優(yōu)勢在于能夠創(chuàng)建交互式的網(wǎng)站圖,可以很容易地將數(shù)據(jù)輸出為JSON對象、HTML文檔或交互式Web應(yīng)用程序。Bokeh還支持流媒體和實(shí)時數(shù)據(jù)。
但是它也有明顯的缺點(diǎn):一是版本時常更新,最重要的是有時語法不向下兼容,這對于開發(fā)者來說是噩夢;二是語法晦澀,與Matplotlib相比,可以說是有過之而無不及。
2HoloViews
HoloViews是一個開源的Python庫,旨在使數(shù)據(jù)分析和可視化更加簡便,可以用非常少的代碼行完成數(shù)據(jù)分析和可視化。
除了默認(rèn)的Matplotlib后端,它還添加了一個Bokeh后端。結(jié)合Bokeh提供的交互式小部件,可以使用HTML5和WebGL快速生成交互式視圖,以及進(jìn)行高維數(shù)據(jù)的可視化探索。
3Plotly
Plotly是一個數(shù)據(jù)可視化的在線平臺,與Bokeh一樣,Plotly的強(qiáng)項在于制作交互式視圖,但它提供了一些在大多數(shù)庫中沒有的圖表,如等高線圖、樹狀圖和3D圖表??梢栽诰€繪制條形圖、散點(diǎn)圖、餅圖、直方圖等多種圖形,可以畫出很多媲美Tableau的高質(zhì)量圖。
Plotly支持在線編輯圖形,支持Python、JavaScript、MATLAB和R等多種語言的API。Plotly生成的所有圖表實(shí)際上都是由JavaScript產(chǎn)生的,無論是在瀏覽器還是在Jupyter中,所有的可視化、交互都是基于plotly.js的,它是一個高級的聲明性圖表庫,提供了20多種圖表類型,包含3D圖表、統(tǒng)計圖和SVG地圖等。
4pygal
與Bokeh和Plotly一樣,pygal提供了可以嵌入Web瀏覽器的交互式視圖。區(qū)別在于,它能夠?qū)D表輸出為SVG格式。如果用戶使用較小的數(shù)據(jù)集,則輸出位SVG格式的圖像就可以了,但是如果用戶制作的圖表包含數(shù)十萬個數(shù)據(jù)點(diǎn),那么它們就會很難被渲染并變得反應(yīng)遲鈍。
Pygal繪制線圖的方法很簡單,可以將圖表渲染為一個SVG文件,用戶使用瀏覽器打開SVG文件就可以查看生成的圖表。
5plotnine
plotnine是Python中圖形語法的一種實(shí)現(xiàn),它基于ggplot2包,語法繪圖功能強(qiáng)大,可以輕松將數(shù)據(jù)映射到構(gòu)成圖的可視對象,然后創(chuàng)建自定義的圖形。plotnine提供各種不同的可視化視圖,易于適應(yīng)定制化輸出,安裝十分簡單,用戶可以通過pip install plotnine命令直接安裝。
plotnine的優(yōu)點(diǎn)為代碼簡潔,易學(xué);繪制出的圖流暢大方;不需要很多的代碼就可以繪制出很不錯的圖。在使用plotnine繪圖之前,首先需要理解繪圖的基本概念。
6Altair
Altair是一個專為Python編寫,它可以讓數(shù)據(jù)科學(xué)家更多地關(guān)注數(shù)據(jù)本身和其內(nèi)在的聯(lián)系。
因為是基于Vega-Lite(交互式圖形語法)的聲明性統(tǒng)計可視化庫,Altair API具有簡單、友好、一致等特點(diǎn)。
聲明意味著用戶只需要提供數(shù)據(jù)列與編碼通道之間的鏈接,例如,x軸、y軸、顏色等,其余的繪圖細(xì)節(jié)它會自動處理。聲明使Altair變得簡單、友好和一致,用戶使用Altair可以輕松設(shè)計出有效且美觀的可視化代碼。
7ggplot
ggplot是基于R語言的ggplot2包和Python的繪圖系統(tǒng)。ggplot的運(yùn)行方式與Matplotlib不同,它允許用戶對組件進(jìn)行分層以創(chuàng)建完整的繪圖。例如,用戶可以從軸開始畫,然后添加點(diǎn),接著添加線、趨勢線等。雖然圖形語法被認(rèn)為是繪圖的“直觀”方法,但經(jīng)驗豐富的Matplotlib用戶可能需要時間來適應(yīng)這個新的方式。
8Gleam
Gleam的靈感來自R語言的Shiny包。它允許用戶僅使用Python腳本就可將分析結(jié)果轉(zhuǎn)換為交互式Web應(yīng)用程序,因此用戶不必了解任何其他語言,如HTML、CSS或JavaScript。Gleam適用于任何Python數(shù)據(jù)可視化庫。在創(chuàng)建繪圖后,用戶可以在它的上面添加字段,以便對數(shù)據(jù)進(jìn)行篩選和排序。
圖書推薦
▊《Python商業(yè)數(shù)據(jù)可視化實(shí)戰(zhàn)(全彩)》
王國平 著
本書由淺入深、循序漸進(jìn)地介紹了基于Python的商業(yè)數(shù)據(jù)可視化技術(shù),并結(jié)合實(shí)際案例詳細(xì)介紹了Python在數(shù)據(jù)可視化方面的具體應(yīng)用。
重點(diǎn)介紹了Python的9個可視化庫,分別為Matplotlib、Seaborn、Pyecharts、Bokeh、HoloViews、Plotly、Pygal、plotnine、Altair,并介紹了商業(yè)數(shù)據(jù)可視化的思維。讀者通過學(xué)習(xí)本書,能夠輕松、快速地掌握商業(yè)數(shù)據(jù)可視化技術(shù)。
者:dataplusscience
翻譯:和中華
校對:丁楠雅
本文約2000字,建議閱讀8分鐘。
本文介紹了Tableau中如何把箱形圖和單位直方圖分離。
Steve Wexler在他最近的一篇博客文章《Is this better than a Jitterplot? Could be》中探索了可視化jitterplot圖(帶有隨機(jī)jitter的點(diǎn)圖,jitter用來區(qū)分點(diǎn))的替代方法:
博客文章鏈接:https://www.datarevelations.com/betterthanjitterplot.html
在本文中,我將展示如何創(chuàng)建與單位直方圖(unit histogram)區(qū)分的箱形圖(box plot)。
譯者注:jitter是一個隨機(jī)值,分配給點(diǎn)用來將其區(qū)分,這樣就不會重疊了,詳細(xì)內(nèi)容可以參見下面這篇文章:Methods for Creating Jitter in Tableau:https://www.dataplusscience.com/TableauJitter.html
單位直方圖
史蒂夫在他的帖子以及另一篇文章”Tableau visualization is here“中描述了如何制作單位直方圖:
Tableau visualization is here:https://public.tableau.com/profile/swexler
我將用它作為此文章的起點(diǎn),因此如果您想跟著練習(xí),請在此處下載他的workbook:
下載鏈接:https://public.tableau.com/workbooks/DataRevelations_MeVsOthers_UnitHistogram.twb
這是史蒂夫做的單位直方圖:
刪除分步帶(distribution bands)并添加箱形圖
下載并打開Steve的Tableau workbook后,右鍵單擊主儀表板選項卡“Salary Comparison Jitterplot Dashboard(2)”并選擇“Unhide All Sheets”。
轉(zhuǎn)到名為Breakout with Quartiles的工作表。單擊分布帶中的線并將其拖離Tableau Canvas。另一種方法是右鍵單擊該線并選擇“刪除”。對分步帶也重復(fù)此步驟。您現(xiàn)在應(yīng)該得到了一個沒有分布帶的單位直方圖。
單擊左上角的“分析”選項卡。單擊并將箱形圖拖動到Tableau canvas并將其放在SUM(continuous Bin)上。這將為單位直方圖添加一個箱形圖。
這很簡單,但請注意,箱形圖的中心位于窗格中并覆蓋了一些點(diǎn)。
讓我們探討一些將箱形圖移開的辦法。
改變箱形圖的位置
第一種方法是通過創(chuàng)建更多點(diǎn)來移動箱形圖。我們將通過創(chuàng)建另一個膠囊(pill)并使用雙軸來實(shí)現(xiàn)這一目標(biāo):
雙擊INDEX() 膠囊右側(cè)白色區(qū)域的Column Shelf。這將允許您輸入行內(nèi)公式。輸入-20并按Enter鍵。右鍵單擊新膠囊并選擇“Dual Axis”。右鍵單擊圖表頂部的新二級X軸,然后選擇“Synchronize Axis”。 在SUM(-20)的標(biāo)記卡上,單擊顏色并將不透明度設(shè)置為0%,將邊框設(shè)置為“None”。
您現(xiàn)在應(yīng)該得到了一個單位直方圖,它從箱形圖的中心開始。
但是,您會注意到許多點(diǎn)仍然隱藏在箱形圖的后面。您可以將X軸更改為固定以調(diào)整位置,但我認(rèn)為很難以不與點(diǎn)重疊并能顯示所有點(diǎn)的方式固定箱形圖的位置。
將箱形圖與單位直方圖分開
分離箱形圖和點(diǎn)圖的最明顯方法是為每個箱形圖和單位直方圖創(chuàng)建工作表。在本例中,有四代,所以將有八個工作表。這種方法允許您為每一代創(chuàng)建一個不同的視圖,一個帶有箱形圖,另一個帶有單位直方圖,并且可以非常直接地復(fù)制整個工作表并相應(yīng)地調(diào)整過濾器以創(chuàng)建每個視圖。但這并不是一個好辦法,當(dāng)你有更多類別時,很快就會變得笨拙。
另一種分離它們的方法是復(fù)制數(shù)據(jù)。這可以使用自定義SQL,Tableau Prep,Alteryx或在原始數(shù)據(jù)源中預(yù)處理來完成。為了便于演示,您可以在此處下載重復(fù)的數(shù)據(jù):
下載鏈接:https://www.dataplusscience.com/files/BoxandUnitHisto.xlsx
此電子表格只是簡單地復(fù)制原始數(shù)據(jù)并帶有一個名為“Column”的新列。第一組數(shù)據(jù)在此新列中具有值“box”,第二組數(shù)據(jù)具有值“dots”。
從頂部菜單中選擇“Data”,然后選擇“New Data Source”。選擇“Microsoft Excel”并選擇您下載的文件"BoxandUnitHisto.xlsx"。這將打開新的數(shù)據(jù)源。再次單擊"Breakout with quartiles"選項卡來返回Tableau canvas。再次從頂部菜單中選擇“Data”,然后選擇“Replace Data Source”?!癈urrent:”數(shù)據(jù)源應(yīng)設(shè)置為"Reshaped Survey Data",“Replacement:”數(shù)據(jù)源應(yīng)設(shè)置為"Sheet1(BoxandUnitHisto)"。
這將使用復(fù)制了所有記錄的新數(shù)據(jù)源替換原來的單個數(shù)據(jù)源,并具有一個名為“Column”的新字段。
復(fù)制數(shù)據(jù)集的一個大問題是計算可能會受到影響。例如,Continuous Bin,它是Y軸上的主要字段,現(xiàn)在已經(jīng)翻倍了。有很多方法可以解決這個問題,但是我們將對此進(jìn)行簡單的修復(fù),即將數(shù)字除以2。注意這可能不是所有情況下的最佳解決方案:
右鍵單擊Continuous Bin并將/ 2添加到公式中,以便該值除以2。 在Breakdown之后將Column膠囊拖到Column shelf上。向上拖動SUM(-20)離開canvas以刪除膠囊或右鍵單擊并選擇“Remove”。 右鍵單擊Continuous Bin并選擇“Duplicate” 右鍵單擊新字段Continuous膠囊(copy)并選擇“Edit” 調(diào)整公式:IF [Column]='box' then INT([Value] / [Bin Size])* [Bin Size] / 2 ELSE null END 將新的Continuous膠囊(copy)拖動到“Continuous Bin”旁邊的Rows shelf 右鍵單擊Continuous膠囊(copy)并選擇“Dual Axis” 右鍵單擊右側(cè)的新二級Y軸,然后選擇“Synchronize Axis” 將Dots窗格中的箱形圖從Tableau Canvas中拖出以將其刪除,或者右鍵單擊Dots窗格中的箱形圖并選擇“Remove”
現(xiàn)在,您將擁有一個僅在標(biāo)有“box”的左窗格窗口中的箱形圖,而不是標(biāo)記為“dots”的第二個窗格。讓點(diǎn)在“box”窗格中消失有點(diǎn)棘手。我想你會發(fā)現(xiàn)不透明度,顏色,邊框和尺寸在此刻都不起作用。所以我們將創(chuàng)建另外兩個字段來處理這個問題:
計算字段:Col Num公式:IF [Column]='box' THEN 0 ELSE 1 END 計算字段:Count公式:IF avg([Col Num])=0 THEN null ELSE index()END 使用新字段Count替換Column shelf上的INDEX()右鍵單擊Column shelf上的Count,然后選擇“Compute Using”并將其設(shè)置為“Resp ID”
您現(xiàn)在應(yīng)該在第一個列窗格中有一個箱形圖,在第二個列窗格中有一個單位直方圖。其余的只是根據(jù)需要進(jìn)行格式化:
在圖表區(qū)域中單擊鼠標(biāo)右鍵,然后選擇“Format” 選擇“Borders”并將“Column Divider Level:”向左滑動一個位置。 右鍵在二級Y軸的Continuous膠囊(copy)點(diǎn)擊并取消選中“Show Header”以刪除 右鍵單擊帶有“box”和“dots”的列標(biāo)題,然后取消選中“Show Header”以刪除根據(jù)需要調(diào)整點(diǎn)的顏色。
復(fù)制數(shù)據(jù)肯定會有缺點(diǎn),但是,這里的最終結(jié)果是一個不與單位直方圖重疊的箱形圖,并且與在點(diǎn)的頂部繪制的典型箱形圖相比具有一些優(yōu)點(diǎn)。這種方法也可以用于分布帶。只需用分布帶替換箱形圖窗格。
這也可以與jitterplot一起使用,但我發(fā)現(xiàn)單位直方圖比使用jitter隨機(jī)放置點(diǎn)更有用。
我希望這篇文章對您有所幫助。如果您有任何問題,請隨時給我發(fā)電子郵件Jeff@DataPlusScience.com
原文標(biāo)題:
How to Separate a Box Plot and Unit Histogram in Tableau
原文鏈接:
https://www.dataplusscience.com/BoxandUnitHisto.html
譯者簡介
和中華,留德軟件工程碩士。由于對機(jī)器學(xué)習(xí)感興趣,碩士論文選擇了利用遺傳算法思想改進(jìn)傳統(tǒng)kmeans。目前在杭州進(jìn)行大數(shù)據(jù)相關(guān)實(shí)踐。加入數(shù)據(jù)派THU希望為IT同行們盡自己一份綿薄之力,也希望結(jié)交許多志趣相投的小伙伴。
于數(shù)據(jù)分析師來說,數(shù)據(jù)獲取通常有兩種方式,一種是直接從系統(tǒng)本地獲取數(shù)據(jù),另一種是爬取網(wǎng)頁上的數(shù)據(jù),爬蟲從網(wǎng)頁爬取數(shù)據(jù)需要幾步?總結(jié)下來,Python爬取網(wǎng)頁數(shù)據(jù)需要發(fā)起請求、獲取響應(yīng)內(nèi)容、解析數(shù)據(jù)、保存數(shù)據(jù)共計4步。
本文使用Python爬取去哪兒網(wǎng)景點(diǎn)評論數(shù)據(jù)共計100條數(shù)據(jù),數(shù)據(jù)爬取后使用Tableau Public軟件進(jìn)行可視化分析,從數(shù)據(jù)獲取,到數(shù)據(jù)清洗,最后數(shù)據(jù)可視化進(jìn)行全流程數(shù)據(jù)分析,下面一起來學(xué)習(xí)。
示例工具:anconda3.7
本文講解內(nèi)容:數(shù)據(jù)獲取、數(shù)據(jù)可視化
適用范圍:網(wǎng)頁數(shù)據(jù)獲取及評論分析
Python爬取網(wǎng)頁數(shù)據(jù)需要發(fā)起請求、獲取響應(yīng)內(nèi)容、解析數(shù)據(jù)、保存數(shù)據(jù)共計4步,懂的數(shù)據(jù)爬取的原理后,進(jìn)行數(shù)據(jù)爬取。
1、發(fā)起請求
以去哪兒旅行網(wǎng)站為例,爬取網(wǎng)頁數(shù)據(jù),首先發(fā)送請求。
import requests
u='https://travel.qunar.com/p-cs300100-xian-jingdian'#爬取網(wǎng)址
response=requests.get(u)
print('狀態(tài)碼:{}'.format(response.status_code))
if response.status_code !=200:
pass
else:
print("服務(wù)器連接正常")
這里返回狀態(tài)碼為200,說明服務(wù)器連接正常,可以進(jìn)行數(shù)據(jù)爬取。
2、獲取響應(yīng)內(nèi)容
服務(wù)器連接正常后,直接打印返回內(nèi)容,這里返回整個網(wǎng)頁html。
print(response.text)
3、解析數(shù)據(jù)
網(wǎng)頁結(jié)構(gòu)由復(fù)雜的html語言構(gòu)成,這里借助BeautifulSoup庫進(jìn)行解析。
from bs4 import BeautifulSoup
ri=requests.get(url=u)
soupi=BeautifulSoup(ri.text,'lxml')#解析網(wǎng)址
ul=soupi.find('ul',class_='list_item clrfix')
lis=ul.find_all('li')
lis
對于特定的標(biāo)簽進(jìn)行定位,輸出text。
print(soupi.h1.text)#標(biāo)簽定位,輸出text
lis=ul.find_all('li')
print(lis[0].text)
建立一個字典,解析目標(biāo)標(biāo)簽內(nèi)容。
li1=lis[0]
dic={}
dic['景點(diǎn)名稱']=li1.find('span',class_="cn_tit").text
dic['攻略提到數(shù)量']=li1.find('div',class_="strategy_sum").text
dic['評論數(shù)量']=li1.find('div',class_="comment_sum").text
dic['lng']=li['data-lng']
dic['lat']=li['data-lat']
dic
使用for循環(huán)解析標(biāo)簽內(nèi)容。
import requests
from bs4 import BeautifulSoup
u1='https://travel.qunar.com/p-cs300100-xian-jingdian'
ri=requests.get(url=u1)
soupi=BeautifulSoup(ri.text,'lxml')#解析網(wǎng)址
ul=soupi.find('ul',class_='list_item clrfix')
lis=ul.find_all('li')
for li in lis:
dic={}
dic['景點(diǎn)名稱']=li.find('span',class_="cn_tit").text
dic['攻略提到數(shù)量']=li.find('div',class_="strategy_sum").text
dic['評論數(shù)量']=li.find('div',class_="comment_sum").text
dic['lng']=li['data-lng']
dic['lat']=li['data-lat']
print(dic)
根據(jù)翻頁規(guī)律設(shè)置翻頁數(shù),這里設(shè)置一個列表,用來循環(huán)爬取前十頁數(shù)據(jù)。
#根據(jù)翻頁規(guī)律,設(shè)置翻頁數(shù)
urllst=[]
for i in range(11):
urllst.append('https://travel.qunar.com/p-cs300100-xian-jingdian'+str('-1-')+str(i))
urllst=urllst[2:11]
urllst.append('https://travel.qunar.com/p-cs300100-xian-jingdian')
urllst
4、保存數(shù)據(jù)
新建一個空的數(shù)據(jù)框,用于保存數(shù)據(jù)。
import pandas as pd
dic=pd.DataFrame(columns=["景點(diǎn)名稱", "攻略提到數(shù)量", "評論數(shù)量", "lng", "lat"])
dic
在空的數(shù)據(jù)框中保存第一條數(shù)據(jù),并且使用for循環(huán),依次爬取其余頁面的數(shù)據(jù)。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。