版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
一緒論
第1章緒論1.1研究背景及意義在科技高度發(fā)展的現(xiàn)代社會,大數(shù)據(jù)無處不在,各類信息呈爆炸式增長,人們在快節(jié)奏的生活中,時間與神經(jīng)常處于緊繃狀態(tài),在這樣的狀況中,許多人會選擇通過閱讀書籍來進(jìn)行調(diào)節(jié),在書的世界中尋求心靈的放松。但挑選一部自己心儀的書籍并不是十分容易的事,往往需要查詢作者、讀者評價等多種信息,互聯(lián)網(wǎng)中的信息雖已十分完備,但各類排行榜中的書籍排名并不適用于所有讀者的喜好,查詢的過程使讀者還沒有開始閱讀已經(jīng)耗費大量時間及精力,這個過程極其容易降低讀者的閱讀意愿。因此,若能夠?qū)臄?shù)據(jù)整合并清晰地展現(xiàn)出來,幫助讀者直觀迅速地觀察數(shù)據(jù)、理解數(shù)據(jù)之間的聯(lián)系,將大大提升人們的閱讀意愿,更加輕松地選擇適合自己喜好的書籍,享受閱讀帶來的樂趣。1.2國內(nèi)外研究現(xiàn)狀互聯(lián)網(wǎng)已成為現(xiàn)代人獲取信息的首選渠道,使用便捷成為了人們使用互聯(lián)網(wǎng)的最大理由。而爬蟲技術(shù)為互聯(lián)網(wǎng)更添一份便利,通過爬蟲,用戶可以迅速、準(zhǔn)確地獲取到所需資源,爬蟲的應(yīng)用領(lǐng)域十分廣泛,其中最流行的便是爬取網(wǎng)頁[1]。Python作為近年來十分常用且強(qiáng)大的編程語言,為爬蟲技術(shù)提供了許多方法和工具,不僅能夠高效地抓取信息,也能在避免反爬蟲方面發(fā)揮重要作用,確保用戶能夠安全、穩(wěn)定地獲取所需數(shù)據(jù)。結(jié)合Python語言的獨特優(yōu)勢與互聯(lián)網(wǎng)未來的蓬勃發(fā)展趨勢,可以得知Python爬蟲技術(shù)是一項具備廣闊拓展空間的前沿技術(shù),掌握爬蟲技術(shù)知識不僅對個人成長大有裨益,更是能契合社會和時代對科技進(jìn)步與創(chuàng)新的不懈追求[2]。數(shù)據(jù)可視化技術(shù)的發(fā)展最早可以追溯到18世紀(jì)前后應(yīng)用的手工測量繪圖及統(tǒng)計學(xué)圖表[3],如今,隨著計算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)可視化技術(shù)的形式與范圍也愈發(fā)完善,逐漸從平面二維向三維立體、動態(tài)交互發(fā)展。經(jīng)過查閱發(fā)現(xiàn),數(shù)據(jù)可視化的研究在國內(nèi)外已十分普遍,在金融、醫(yī)療[4]、教育及城市發(fā)展等多個領(lǐng)域均扮演著舉足輕重的角色,使用數(shù)據(jù)可視化是對數(shù)據(jù)進(jìn)行分析展示的十分適配的方法。21.3論文研究及設(shè)計內(nèi)容因此,本研究將利用Python爬蟲技術(shù),對市場主流網(wǎng)站豆瓣網(wǎng)中的書籍Top250排行榜進(jìn)行精確的數(shù)據(jù)提取。獲取到數(shù)據(jù)后,將借助數(shù)據(jù)分析及可視化工具如pandas和seaborn等,對這些數(shù)據(jù)進(jìn)行深入剖析。通過科學(xué)的分析,可以揭示出書籍排行榜背后的規(guī)律與趨勢,為讀者提供更為精準(zhǔn)科學(xué)的篩選方法。基于這些分析結(jié)論,利用數(shù)據(jù)可視化繪圖工具pyecharts,繪制出書籍信息相關(guān)的交互式圖像,直觀地展示書籍的各項數(shù)據(jù),并令讀者通過交互操作,深入了解書籍的數(shù)據(jù)情況。最后將把這些圖像組合制作為清晰美觀的可視化大屏網(wǎng)頁,將書籍?dāng)?shù)據(jù)一目了然地呈現(xiàn)在讀者面前,幫助他們更加快捷便利地挑選到符合預(yù)期的心儀書籍。二設(shè)計所用相關(guān)技術(shù)3第2章設(shè)計所用相關(guān)技術(shù)2.1爬蟲部分2.1.1Requests在網(wǎng)絡(luò)爬蟲中,首先需要獲取網(wǎng)頁,Requests庫可以發(fā)送HTTP請求,幫助我們簡單快捷地獲取到目標(biāo)網(wǎng)頁。Requests允許用戶以十分便捷的方式發(fā)送HTTP/1.1請求,不需要手動在URL中添加查詢字符串,也不需要對POST數(shù)據(jù)進(jìn)行表單編碼操作,得益于urllib3的支持,長連接和HTTP連接池都是全自動的。Python具有十分豐富的庫文件,Requests屬于第三方庫,是基于Apache2協(xié)議開源一種的PythonHTTP庫[4],并非Python自帶庫,所以使用前需要先安裝,本次設(shè)計前采用pip安裝方法,通過在本地IDE中終端運行命令完成安裝。2.1.2BeautifulSoupBeautifulsoup庫在爬蟲中的主要作用是解析HTML或XML,可以幫助用戶十分方便快捷地從目標(biāo)網(wǎng)頁中獲取信息。Beautifulsoup支持許多種解析器,如lxml及html5lib等Python內(nèi)置的解析器以及部分第三方庫,這種功能使得Beautifulsoup庫能夠處理各式各樣的HTML及XML文檔。HTML的代碼結(jié)構(gòu)為多個標(biāo)簽組成,Beautifulsoup通過將HTML及XML文檔轉(zhuǎn)換為樹形結(jié)構(gòu),能夠做到精準(zhǔn)定位到標(biāo)簽位置[6],方便用戶遍歷文檔中的元素,同時也具備搜索功能,用戶可通過標(biāo)簽、屬性等獲取目標(biāo)元素。此外,Beautifulsoup在修改、輸出文檔方面也具有十分強(qiáng)大的功能,使用戶在有定制化需求時可快捷實現(xiàn),并輸出美觀、可讀性強(qiáng)的文檔。2.1.3PandasPandas是一個Python中基于NumPy的強(qiáng)大且靈活的開源數(shù)據(jù)分析及數(shù)據(jù)處理庫,Pandas中包含了許多數(shù)據(jù)模型,以及大量可以幫助用戶快捷處理數(shù)據(jù)的函數(shù)和方法,十分適合進(jìn)行結(jié)構(gòu)化數(shù)據(jù)的處理,如類似于Excel表格的表格型數(shù)據(jù)。同時Pandas也可以在數(shù)據(jù)清洗、數(shù)據(jù)預(yù)處理、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等領(lǐng)域中發(fā)揮作用。Pandas中具有兩種數(shù)據(jù)結(jié)構(gòu),一種是Series,一種是DataFrame,Series是一組帶有索引的一維數(shù)組,數(shù)組中可包含多種不同數(shù)據(jù)類型的元素,而DataFrame是一種二維表格結(jié)構(gòu),這種結(jié)構(gòu)在使用中更加常見,可包含更多的數(shù)據(jù),可視為多個Series結(jié)合而成的字典[7]。在本次設(shè)計中主要4使用DataFrame,通過初始化建立一個DataFrame,將爬取出的“書名”、“作者”、“出版日期”等數(shù)據(jù)有序地存儲在csv文件中,便于下一步數(shù)據(jù)分析中使用。2.1.4TimePython中的Time庫本身是用來對時間進(jìn)行相關(guān)操作的庫,如獲取當(dāng)前時間、日期,對時間進(jìn)行加減法等。Time庫包含三類函數(shù),分別為時間獲?。╰ime()、ctime()、gmtime()),時間格式化(strftime()、strptime()),程序計時(sleep()、perf_counter())。由于在網(wǎng)站中進(jìn)行爬蟲操作時可能會遇到網(wǎng)站反爬機(jī)制,導(dǎo)致無法獲取數(shù)據(jù),本次設(shè)計中使用Time庫中的sleep模塊,通過設(shè)置,在爬取每一頁數(shù)據(jù)之間間隔一段時間,來達(dá)到反反爬蟲的效果。2.2數(shù)據(jù)分析與可視化部分2.2.1matplotlibMatplotlib是Python體系中的重要組成部分,是一個使用廣泛的開源數(shù)據(jù)可視化工具包,功能十分全面,已成為數(shù)據(jù)科學(xué)領(lǐng)域內(nèi)不可或缺的數(shù)據(jù)可視化工具。Matplotlib能夠繪制出各類圖像,使用matplotlib不僅限于可以制作2D的圖像,如折線圖、餅狀圖、柱狀圖、雷達(dá)圖等,同時也具備制作3D圖像及動畫的功能[8],使數(shù)據(jù)可以在三維空間中立體地呈現(xiàn),大大增強(qiáng)了數(shù)據(jù)的可讀性。本次設(shè)計中主要用到matplotlib中的pyplot子庫,pyplot是一個很常用的可視化模塊,使用方便上手快速,能十分便捷地繪制各種動靜態(tài)、可交互的可視化圖表,并根據(jù)需求自定義更改圖表元素,如更改節(jié)點或線條顏色、更改線條類型參數(shù)、更改節(jié)點標(biāo)記字符等,使目標(biāo)圖像更具特色,準(zhǔn)確表達(dá)信息。2.2.2SeabornSeaborn是Python中在matplotlib基礎(chǔ)上建立的一種專門用于數(shù)據(jù)可視化繪制各類圖表的庫,如條形圖、折線圖、熱力圖、密度圖、箱線圖等等,seaborn的使用十分便捷,它所提供的高級接口使得用戶可以大大減少編寫代碼的工作量,操作快速,上手也十分簡單,更加輕松地獲取數(shù)據(jù)可視化圖表,seaborn相比于matplotlib來說擁有更加美觀的圖像及顏色設(shè)計,它提供了各式各樣的主題,如深色網(wǎng)格主題darkgrid、淺色網(wǎng)格主題whitegrid等,以及十分豐富的配色方案調(diào)色板,不只局限于單色,可以將顏色進(jìn)行組合搭配,如二設(shè)計所用相關(guān)技術(shù)5“Blues”、“PuBuGn”等。同時,seaborn的兼容性也有很大優(yōu)勢,能夠同時支持NumPy以及pandas的數(shù)據(jù)結(jié)構(gòu)[9]。2.2.3PandasPandas庫自身并未提供數(shù)據(jù)可視化的功能,但如上文所述,pandas可以和其余可視化庫如seaborn、matplotlib等直接無縫集成。Pandas提供了靈活易用的數(shù)據(jù)結(jié)構(gòu),能夠十分簡便地處理數(shù)據(jù),這為數(shù)據(jù)可視化提供了良好的數(shù)據(jù)基礎(chǔ)。2.3前端展示部分2.3.1pyechartsPyecharts是一款十分強(qiáng)大的可視化工具,基于Echarts,與Python語言相結(jié)合而成。Echarts本身是一個JavaScript庫,pyecharts實現(xiàn)了echarts與Python之間的連接,使echarts更加具有普遍性,增大了使用范圍,也使Python在數(shù)據(jù)可視化領(lǐng)域更加靈活高效。Pyecharts主要用于制作各類圖像、表格等,為用戶提供了各式各樣的數(shù)據(jù)表形式,包括30余類常見圖表,同時也提供了極高自由度的自定義函數(shù)配置項來更改圖表的特性,使圖表更具有美觀性、可讀性[10]。Pyecharts官方文檔十分詳細(xì),且有大量具體實例,不僅可在本地IDE運行,也可在JupyterNotebook環(huán)境直接生成圖像,使用便捷易上手,是數(shù)據(jù)可視化的重要工具。6第3章網(wǎng)絡(luò)爬蟲3.1數(shù)據(jù)來源數(shù)據(jù)來源于豆瓣網(wǎng)(/)—讀書(/)—豆瓣圖書250(/top250?icn=index-book250-all)。3.2過程3.2.1網(wǎng)頁板塊分析打開豆瓣網(wǎng)站,找到讀書后打開豆瓣圖書Top250網(wǎng)頁(/top250?icn=index-book250-all),網(wǎng)頁布局如圖(圖3.1、圖3.2)所示,由頂部索引(豆瓣、讀書、電影……)、搜索欄、次索引欄(購書單、電子圖書……)、圖書(包含各個圖書小類子項)、底部信息欄組成。每頁展示二十五本圖書,共十頁,總計二百五十本圖書。三網(wǎng)絡(luò)爬蟲73.2.2網(wǎng)頁元素審查在瀏覽器中打開網(wǎng)頁,并在網(wǎng)頁中單擊右鍵,選擇審查元素,即可看到網(wǎng)頁代碼,其中<bodystyle>中包含網(wǎng)頁主界面所有板塊(圖3.3),以第一本圖書《紅樓夢》為例,網(wǎng)頁信息欄中包含作品名稱、作者、出版社、出版時間、價格、評分、評分人數(shù)、一句話評價信息。根據(jù)審查,可發(fā)現(xiàn)圖書信息存放于<divclass=“article”>中,單本圖書每一本存放在一個<tablewidth=“100%”>標(biāo)簽中,其中,作品名稱存放于<divclass=“Pl2”>中的title元素(圖3.4);作者、出版社、出版日期、價格存放于<pclass=“pl”>中,分別用“/”符隔開;評分及評價人數(shù)存放于<divclass=“starclearfix”>中,其中評分屬于“rating_nums”class,評價人數(shù)屬于“pl”class。至此即可獲取到所有所需數(shù)據(jù)的位置,觀察可發(fā)現(xiàn)每本圖書的信息存放位置都是一樣的,通過循環(huán)即可實現(xiàn)所有數(shù)據(jù)的獲取。83.2.3爬蟲代碼編寫(1)導(dǎo)入爬蟲所需的Python庫和模塊(圖3.5),包含requests、beautifulsoup、pandas及time。Requests庫用于向網(wǎng)站發(fā)送請求,beautifulsoup庫用于解析獲取到的HTML內(nèi)容,pandas庫用于將解析過的數(shù)據(jù)有序存放在CSV文件中,time庫用于在爬取過程中添加等待時間,防止網(wǎng)頁反爬蟲;(2)創(chuàng)建一些空的list,用于存放所需的書籍信息中不同數(shù)據(jù)類型;(3)定義新的函數(shù),用于獲取書籍?dāng)?shù)據(jù)信息,分為兩種,第一種是使用requests發(fā)送請求,第二種是使用beautifulsoup解析獲取后返回的信息。通過for循環(huán),由元素審查中獲取到的數(shù)據(jù)位置,解析每一類書籍信息,以書名為例,書名信息在網(wǎng)站中存放在“item”class下的“pl2”class,從屬于“a”標(biāo)簽,屬性名稱為“title”,則可以通過解析,將書籍名稱逐個添加到創(chuàng)建過的list中(圖3.6),評分、評分人數(shù)、價格等其余書籍信息同理;(4)根據(jù)不同情況執(zhí)行不同的代碼邏輯,若為正常情況,則按默認(rèn)邏輯輸出數(shù)據(jù),而個別圖書可能出現(xiàn)信息缺失或有多個信息的情況,如圖書作者信息缺失(第5頁《十萬個為什么》),或圖書價格數(shù)據(jù)有超過一個的(第1頁《福爾摩斯探案全集(上中下)》)等。將缺失部分記為空值,有多個數(shù)據(jù)的部分用“/”符號分割。以圖書作者及譯者缺失為例(圖3.7);三網(wǎng)絡(luò)爬蟲9(5)存儲數(shù)據(jù),首先初始化一個DataFrame對象,并使用pandas庫將已定義并獲取完成的數(shù)據(jù)列表拼接為一個DataFrame形式,使數(shù)據(jù)以列的形式展現(xiàn)出來(圖3.8);(6)爬蟲主函數(shù)。為了防止網(wǎng)站反爬,首先需要定義一個爬蟲請求頭,請求頭可在元素審查的“網(wǎng)絡(luò)”部分獲取,將“User-Agent”部分粘貼到headers部分中達(dá)到反爬效果。之后通過for循環(huán)來按序爬取10頁共250條數(shù)據(jù),并使用time庫中的sleep模塊達(dá)到每爬取一頁等待1秒的效果,防止網(wǎng)頁反爬。最終將文件保存到指定名稱的csv文件中(圖3.9)。海南師范大學(xué)本科生畢業(yè)論文103.3獲取數(shù)據(jù)結(jié)果在指定csv文件中可看到目標(biāo)數(shù)據(jù)如書名、作者、出版日期等,已被清晰有序地存放(圖3.10),為下一步的數(shù)據(jù)分析可視化奠定了良好的數(shù)據(jù)基礎(chǔ)。四數(shù)據(jù)分析與數(shù)據(jù)可視化11第4章數(shù)據(jù)分析與數(shù)據(jù)可視化4.1數(shù)據(jù)分析在數(shù)據(jù)可視化過程中,數(shù)據(jù)分析既是目的也是前期必須要做好的基礎(chǔ),其重要性在于能夠為數(shù)據(jù)可視化提供邏輯支持,使可視化更加清晰有條理。在書籍排行中,評分是一項必不可少的判定因素,評分代表讀者對書籍內(nèi)容、情節(jié)、人物設(shè)定等的認(rèn)可度,而對于想要尋找書籍進(jìn)行閱讀的人群來說,評分無疑是一個重要的參考,評分越高,意味著書籍各方面的綜合質(zhì)量越高,對讀者的吸引力也同步提升。從這一角度出發(fā),本次研究將從書籍評分入手,輔以書籍排名及評分人數(shù)指標(biāo),探究排名與其余各項數(shù)據(jù)的關(guān)聯(lián)性,從而觀察總結(jié)出讀者應(yīng)如何更加準(zhǔn)確地篩選心儀書籍的結(jié)論。(1)導(dǎo)入分析所需的Python庫(圖4.1),數(shù)據(jù)分析階段主要用到的庫為pandas,以及少量的seaborn及matplotlib。Pandas庫用于數(shù)據(jù)處理,seaborn庫及matplotlib庫用于繪制圖像。(2)使用pandas庫使用庫中的pd.read_csv()函數(shù)讀取已爬取完畢的csv文件,函數(shù)將自動將目標(biāo)csv文件轉(zhuǎn)換為DataFrame對象。接著使用.head()函數(shù)輸出DataFrame對象的前五行數(shù)據(jù),以便檢查文件是否讀取成功(圖4.2),可以看到程序正確輸出了文件的內(nèi)容;12(3)由于數(shù)據(jù)文件常會出現(xiàn)有異常值、空值等情況,所以本次研究采用繪制箱線圖的方法來檢查數(shù)據(jù)中是否存在異常值。繪制圖像之前,在未配置的情況下,中文顯示容易出現(xiàn)亂碼情況,所以需要通過使用matplotlib中的rcParams來修改樣式,解決中文無法顯示或出現(xiàn)亂碼的狀況。(圖4.3)。箱線圖的繪制需使用到seaborn庫,首先定位到“評分”列,并確認(rèn)列中的數(shù)據(jù)均為浮點型(float),確認(rèn)無誤后即可使用“boxplot”工具繪制箱線圖(圖4.4)??梢愿鶕?jù)圖像(圖4.5)看出“評分”列數(shù)據(jù)并無異常值;四數(shù)據(jù)分析與數(shù)據(jù)可視化13(4)利用pandas的數(shù)據(jù)分析模塊,計算出Top250書籍的平均評分,并查看最大值與最小值(圖4.6),可看出平均評分處于較高水準(zhǔn),最大與最小值的差值為1.2,最低值也處于整體書籍的上游水準(zhǔn)。144.2數(shù)據(jù)可視化(1)Top250書籍評分占比餅狀圖。餅圖通過分割圓形的方式展示數(shù)據(jù),并標(biāo)以不同顏色,具有良好的可讀性,能夠直觀明了的看出各部分的占比。餅圖的繪制使用到matplotlib中的pyplot子庫,首先使用pandas讀取csv文件并定位“評分”列,通過pyplot庫設(shè)置餅狀圖規(guī)格后進(jìn)行繪制(圖4.7),并在圖中展示各部分百分比(圖4.8);四數(shù)據(jù)分析與數(shù)據(jù)可視化15通過該餅狀圖,可以得出以下結(jié)論:Top250書籍中最高分與最低分占比最少,第二高分與第二低分次之,占比最高的為中間分值9.1及9.0,即為平均評分值的區(qū)間,極高分(9.5分及以上)的書籍僅占比6.8%,數(shù)量十分稀少。(2)書籍"排名-評分"折線圖。在書籍排名中,評分必然為重要標(biāo)準(zhǔn),但評分是否能夠決定排名并不肯定,本次研究采用折現(xiàn)圖的方法將排名與評分直接的關(guān)系展現(xiàn)出來,因為數(shù)據(jù)量較大,繪圖僅采用前70條數(shù)據(jù)。由于在繪制前圖時已獲取過文件,所以本次繪制僅需定位到“排名”及“評分”列,并規(guī)定取前70條數(shù)據(jù)即可,通過pyplot的“color”及“marker”模塊自定義圖像顏色及數(shù)據(jù)點標(biāo)注樣式,定義完成后即可使用“xticks”繪制折線圖(圖4.9);16通過該折線圖,可以看出隨著排名下降,評分整體略呈下降態(tài)勢,但并非絕對正相關(guān),在排名較靠后的書籍中也有評分極高的情況出現(xiàn),如排名第24的《野草》達(dá)到了9.5的高分,以及排名29的《卡拉馬佐夫兄弟》達(dá)到9.6的高分,所以書籍的評分并不能直接決定排名。(3)書籍"排名-評分人數(shù)"折線圖。讀者在閱讀一本書時,常常會有點評或分享感受的欲望,評分人數(shù)往往可以展現(xiàn)出該書籍的普及度,而評分人數(shù)與書籍排名是否有一定關(guān)聯(lián),本次研究采用折線圖的方式探尋,同樣采用Top250中的前70條數(shù)據(jù)進(jìn)行繪制,與"排名-評分"折線圖的繪制方法相同,將x軸數(shù)據(jù)設(shè)置為書籍排名,y軸數(shù)據(jù)設(shè)置為評分人數(shù)(圖4.10);通過該折線圖,無法看出評分人數(shù)與書籍排名之間有明顯關(guān)聯(lián),將數(shù)據(jù)擴(kuò)大至前200條并再次進(jìn)行繪圖(圖4.11);四數(shù)據(jù)分析與數(shù)據(jù)可視化17擴(kuò)大數(shù)據(jù)范圍后可看出,排名前80的書籍評分人數(shù)較之后的更多,尤其是會出現(xiàn)極高的峰值,如排名第2的《活著》有80萬余評分人數(shù)、排名第13的《小王子》有75萬余評分人數(shù)、排名第55的《追風(fēng)箏的人》有79萬余評分人數(shù),而80名之后的數(shù)據(jù)趨于平穩(wěn),僅偶爾出現(xiàn)小高峰??梢娕琶壳暗臅壮霈F(xiàn)評分人數(shù)極多的情況,即評分也更具參考價值,但并非排名靠前的書籍評分人數(shù)一定更多。(4)書籍“評分-評分人數(shù)”散點圖。在觀察過排名與評分、排名與評分人數(shù)的關(guān)聯(lián)后,本次研究仍需觀察評分與評分人數(shù)之間的數(shù)據(jù)關(guān)系。由于需要一目了然地看出每階段評分的評分人數(shù)數(shù)量,所以采用散點圖的方式,使用seaborn庫的scatterplot方法繪制散點圖(圖4.12);通過該散點圖,可以看出評分人數(shù)與評分之間并無明顯聯(lián)系,甚至評分最高的書籍評分人數(shù)僅不到20萬,而評分最低的書籍評分人數(shù)達(dá)到近80萬。184.3結(jié)果分析由以上的數(shù)據(jù)分析及數(shù)據(jù)可視化可以分析得知,書籍排名結(jié)果是評分與評價人數(shù)的綜合結(jié)果,僅評分高或評分人數(shù)多無法絕對證明書籍的內(nèi)容質(zhì)量,相比之下評分比評分人數(shù)更具說服力,但仍需評分人數(shù)的數(shù)量支持,若評分人數(shù)較少則評分也缺乏準(zhǔn)確性。讀者在挑選心儀書籍時應(yīng)結(jié)合兩點綜合判斷,才能更加準(zhǔn)確地找到多數(shù)人所認(rèn)可的書籍。五前端可視化展示19第5章前端可視化展示5.1數(shù)據(jù)分析并制作可視化圖像(1)中國/外國作者書籍?dāng)?shù)量上榜量前十柱狀圖書籍的撰寫往往與時代背景及文化相關(guān)聯(lián),如中國當(dāng)代著名小說《活著》,講述了主角在內(nèi)戰(zhàn)、“文化大革命”、大躍進(jìn)的時代背景下的一系列遭遇,作者余華不單是在寫主角的苦難人生,更是在映射時代背景中的和主角相同的無數(shù)小人物[11]。國內(nèi)與國外的環(huán)境雖有相似之處,但歷史背景存在很大差異,從而導(dǎo)致國內(nèi)外書籍的寫作風(fēng)格也各不相同,讀者可根據(jù)喜好選擇心儀的書籍類型。在繪制圖像前首先需要獲取數(shù)據(jù),在JupyterNotebook中使用pandas庫中的set_option方法對csv文件中“作者”一列進(jìn)行統(tǒng)計,并按數(shù)量從高到低排序。(圖5.1)得到數(shù)據(jù)支持后即可開始可視化圖像制作,首先在終端中使用pip下載pyecharts,下載成功后在文件中導(dǎo)入pyecharts圖庫中的Bar(柱狀圖)模塊及option模塊。為后續(xù)能夠更加方便地將圖像組合成為大屏,首先需要定義一個函數(shù),函數(shù)返回類型為Bar。以“中國作者書籍上榜量前十”為例,初始化一個變量a,用于存儲繪制的柱狀圖,使用Bar()函數(shù)繪制圖像,將x軸、y軸內(nèi)容進(jìn)行填充,同時設(shè)置柱狀圖顏色,并使用set_global_opts()方法設(shè)置全局選項,設(shè)置圖名稱及x軸、y軸名稱,由于x軸內(nèi)容信息較多,為節(jié)省空間防海南師范大學(xué)本科生畢業(yè)論文20止文字重疊或顯示不全,使圖像更加美觀,利用Label10pts方法將x軸上的標(biāo)簽統(tǒng)一旋轉(zhuǎn)-25度,最后返回變量a。(圖5.2)在組合圖像成為大屏之前,為審查圖像是否正常顯示并符合要求,可采用render()函數(shù)方法將圖像自動渲染為HTML文件(圖5.3),可直接在瀏覽器中打開進(jìn)行查看,便于進(jìn)一步修改(圖5.4、圖5.5)。五前端可視化展示21(2)Top10書籍評分面積圖由前文(4.2)可得知,書籍排名與書籍評分并非強(qiáng)相關(guān),排名靠前的書籍不一定是最高分的書籍。每位讀者在篩選書籍時都有自己不同的標(biāo)準(zhǔn),系統(tǒng)排名并不能代表所有讀者的喜好,評分折線圖可以使讀者一目了然地看出書籍評分高地的不同,進(jìn)一步選出心儀書籍。圖像類型選擇面積圖,在折線圖的基礎(chǔ)上增加填充,并將原本較為生硬的折現(xiàn)換為平滑曲線,使圖像更為美觀。與柱狀圖類似,先定義函數(shù),返回類型為Line(線形),初始化變量c,填入x軸、y軸信息,使用“is_smooth”方法將折線變?yōu)槠交€,并在.set_series_opts()、.set_global_opts()中設(shè)置圖像參數(shù),如面積填充顏色、透明度、標(biāo)簽旋轉(zhuǎn)角度等,由于數(shù)值相差較小,若y軸從0開始計數(shù)則圖像變化不明顯,不便于觀察,所以需特別將y軸數(shù)值設(shè)置為從9開始計數(shù),使數(shù)值變化更加鮮明。最后返回變量c(圖5.6)。22將圖像渲染為HTML文件查看(圖5.7)。(3)評分人數(shù)前十名書籍柱狀圖書籍內(nèi)容及作者文筆的評判除客觀因素外,也與讀者的個人喜好有很大關(guān)聯(lián),對書籍的評分往往帶有主觀因素,因此書籍評分人數(shù)的多少決定了評分的準(zhǔn)確性,評分人數(shù)越多,收集的數(shù)據(jù)樣本越多,也更代表大眾的選擇,增強(qiáng)了數(shù)據(jù)的可靠性。要篩選出評分人數(shù)前十的書籍,需要使用pandas庫,利用.sort_values()方法將csv文件中的數(shù)據(jù)以“評分人數(shù)”列的數(shù)量從高到低排列。(圖5.8)五前端可視化展示23在普通柱狀圖的基礎(chǔ)上,采用了象形柱狀圖,能夠更加直觀地看出各標(biāo)簽間的數(shù)量關(guān)系。象形柱狀圖所使用的模塊為PictorialBar,在導(dǎo)入options及PictoriaBar的基礎(chǔ)上,象形柱狀圖還需導(dǎo)入SymbolType模塊,用于圖標(biāo)自定義,不僅如此,象形柱狀圖中的柱狀圖組成塊大小也可以進(jìn)行調(diào)節(jié),擁有極強(qiáng)的靈活性。將x軸、y軸數(shù)據(jù)設(shè)置完成后,使用上文中類似的方法繪制象形柱狀圖,定義函數(shù)bar_d()并初始化變量d,經(jīng)過一系列參數(shù)設(shè)置后返回變量d(圖5.9)。將圖像渲染為HTML文件查看(圖5.10)。24(4)Top250書籍評分占比餅圖評分在眾多因素中,是最能體現(xiàn)書籍質(zhì)量的要素,而各個平臺的評分體系不同,讀者群體類型也會有一定差距,打分的嚴(yán)格程度不盡相同,由前文(4.2)中可以看到,Top250排行榜中書籍最高分為9.7,最低分為8.5,通過評分占比讀者可以預(yù)設(shè)自己篩選圖書的心理預(yù)期,如讀者希望閱讀評分較高的書籍,可將目標(biāo)投向評分在前30%的書籍。首先導(dǎo)入Pie(餅圖)模塊,通過設(shè)置圓的尺寸及同心圓的尺寸達(dá)到環(huán)形餅圖的效果,增強(qiáng)圖像的視覺舒適度,餅圖的配色效果、側(cè)標(biāo)簽顏色尺寸、字體顏色等都可通過自定義改變,以配合其余圖像的配色,達(dá)到美觀的目的。(圖5.11)五前端可視化展示25將圖像渲染為HTML文件查看(圖5.12)。(5)Top30書籍詞云詞云能夠?qū)谋緮?shù)據(jù)以視覺化的方式呈現(xiàn),使讀者可以快速看到文本關(guān)鍵詞,通過數(shù)據(jù)的設(shè)置,詞云可以幫助讀者一目了然地看到榜中哪些書籍最受歡迎。詞云的制作用到了WordCloud模塊,我們可以通過custom_color_func()方法為詞云進(jìn)行色彩搭配,通過if語句可以以詞匯或頻率為條件為每個模塊單獨設(shè)置顏色。將排行榜中Top30的書籍按從上到下排序,依次賦予從大到小的頻率數(shù)值,代表書籍熱度,頻率越高的書籍名稱在詞云中展示的尺寸越大,越容易被讀者捕捉。(圖5.13)海南師范大學(xué)本科生畢業(yè)論文26將圖像渲染為HTML文件查看(圖5.14)。(6)大屏標(biāo)題五前端可視化展示27在可視化大屏制作中必不可少的一個部分就是大屏標(biāo)題,標(biāo)題可以讓用戶在第一時間了解大屏的主要內(nèi)容。標(biāo)題的生成本次設(shè)計選擇利用Pie()模塊,但并不繪制餅圖,只顯示標(biāo)題。(圖5.15)5.2可視化大屏生成圖像繪制完成后,每個圖像仍是單獨的個體,要制作可視化大屏必須將各個分散的圖像整合成為一個完整的HTML文件。Pyecharts中提供了許多種組合圖表的組件,本次設(shè)計采用Page模塊,page可以將多個圖表按順序排列在同一個HTML文件中,同時使用DraggablePageLayout方法可以實現(xiàn)用拖拽的形式將圖表組合布局,支持圖表尺寸任意改變,十分方便快捷。將DraggablePageLayout方法導(dǎo)入后利用add()函數(shù)將繪制圖表時自定義的函數(shù)名稱加入到page中,直接使用render方法即可生成一個用于布局的臨時HTML文件(圖5.16)。在臨時文件中完成頁面布局后,點擊頁面左上角的“SaceConfig”,會自動生成一個名為“chart_config”的json文件,文件內(nèi)存儲了調(diào)整過的頁面布局位置數(shù)據(jù)。將json文件與page文件放在同一目錄下,并將文件名通過.save_resize_html()導(dǎo)入page中,再次生成最終大屏HTML文件,并通過修改HTML屬性的形式設(shè)置可視化大屏背景顏色,使界面更加美觀,通過瀏覽器打開最終大屏HTML文件即可看到布局完成的最終網(wǎng)頁界面。(圖5.17)28六結(jié)語29第6章結(jié)
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)藝術(shù)教育年度發(fā)展報告
- 長春健康職業(yè)學(xué)院《測繪案例分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 食品加工取樣與檢測流程
- AR眼鏡產(chǎn)品投資導(dǎo)覽模板
- 同學(xué)聚會講話稿
- 二零二五年度未成年人監(jiān)護(hù)權(quán)及撫養(yǎng)費支付協(xié)議書3篇
- 重慶市部分區(qū)2024-2025學(xué)年高二(上)期末物理試卷(含答案)
- 福建省泉州市泉港區(qū)2024-2025學(xué)年七年級上學(xué)期1月期末生物學(xué)試題(含答案)
- 二零二五年度綠色建筑設(shè)計與施工一體化建設(shè)工程技術(shù)咨詢合同05013篇
- 宿州職業(yè)技術(shù)學(xué)院《python與數(shù)據(jù)處理基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 快速康復(fù)在骨科護(hù)理中的應(yīng)用
- 國民經(jīng)濟(jì)行業(yè)分類和代碼表(電子版)
- ICU患者外出檢查的護(hù)理
- 公司收購設(shè)備合同范例
- 廣東省潮州市2023-2024學(xué)年高二上學(xué)期語文期末考試試卷(含答案)
- 2024年光伏發(fā)電項目EPC總包合同
- 試卷(完整版)python考試復(fù)習(xí)題庫復(fù)習(xí)知識點試卷試題
- 海外資管機(jī)構(gòu)赴上海投資指南(2024版)
- GB/T 44679-2024叉車禁用與報廢技術(shù)規(guī)范
- 抖音直播帶貨協(xié)議書模板
- 2024義務(wù)教育體育與健康課程標(biāo)準(zhǔn)(2022年版)必考題庫及答案
評論
0/150
提交評論