版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
目錄
1引言...............................................................................................................................1
1.1項(xiàng)目背景.............................................................................................................1
1.2開發(fā)環(huán)境與工具................................................................................................2
1.2.1Python簡介............................................................................................2
1.2.2Pycharm簡介..........................................................................................2
1.2.3MySQL簡介..............................................................................................3
2需求分析.......................................................................................................................4
2.1可行性需求分析................................................................................................4
2.2采集目標(biāo)功能分析............................................................................................4
2.3關(guān)鍵技術(shù)分析....................................................................................................5
2.3.1網(wǎng)絡(luò)爬蟲技術(shù).........................................................................................5
2.3.2文件存取技術(shù).........................................................................................6
2.3.3可視化技術(shù).............................................................................................6
3數(shù)據(jù)采集.......................................................................................................................8
3.1采集頁面分析....................................................................................................8
3.2字段分析..........................................................................................................10
3.3編程實(shí)現(xiàn)..........................................................................................................10
4數(shù)據(jù)清洗與處理.........................................................................................................12
4.1數(shù)據(jù)清洗..........................................................................................................13
4.2數(shù)據(jù)儲存..........................................................................................................14
4.3編程實(shí)現(xiàn)..........................................................................................................15
5數(shù)據(jù)統(tǒng)計(jì)與分析.........................................................................................................18
5.1數(shù)據(jù)準(zhǔn)備..........................................................................................................18
5.2數(shù)據(jù)展示..........................................................................................................19
5.2.1依據(jù)歌曲名進(jìn)行統(tǒng)計(jì)...........................................................................19
5.2.2依據(jù)歌手進(jìn)行統(tǒng)計(jì)...............................................................................21
5.2.3依據(jù)歌曲時(shí)長進(jìn)行統(tǒng)計(jì).........................................................................24
I
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5.3綜述...................................................................................................................26
6小結(jié).............................................................................................................................26
參考資料.........................................................................................................................27
II
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
酷狗音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析
1引言
音樂是一種跨越文化和地域的藝術(shù)形式,它能夠觸動(dòng)人的心靈,引發(fā)人們
的共鳴。隨著互聯(lián)網(wǎng)的普及,音樂平臺如酷狗音樂等逐漸成為人們獲取音樂的
主要途徑??峁芬魳纷鳛閲鴥?nèi)知名的音樂平臺之一,其排行榜反映了廣大用戶
的音樂喜好和趨勢。對于音樂人、音樂公司以及音樂愛好者都具有很高的參考
價(jià)值。然而,由于酷狗音樂排行榜數(shù)據(jù)龐大且更新頻繁,人工分析存在很大的
局限性。因此,如何高效、準(zhǔn)確地獲取和分析酷狗音樂排行榜數(shù)據(jù),成為了亟
待解決的問題。對這些數(shù)據(jù)的采集和分析,有助于深入理解音樂市場的動(dòng)態(tài),
預(yù)測未來的流行趨勢,以及了解用戶的行為模式和喜好。此外,這些數(shù)據(jù)也可
以為音樂產(chǎn)業(yè)的決策者提供有力的數(shù)據(jù)支持,幫助他們制定更有效的策略。
通過對酷狗音樂網(wǎng)站排行榜數(shù)據(jù)的采集和分析,可以了解當(dāng)前音樂市場的
流行趨勢、用戶喜好以及潛在的音樂消費(fèi)行為。這不僅有助于音樂平臺的運(yùn)營
管理,為音樂創(chuàng)作和推廣提供參考,同時(shí)也可以為音樂產(chǎn)業(yè)的研究提供數(shù)據(jù)支
持。因此,對酷狗音樂網(wǎng)站排行榜數(shù)據(jù)的采集和分析具有重要的意義。
1.1項(xiàng)目背景
在數(shù)字化時(shí)代,音樂產(chǎn)業(yè)經(jīng)歷了巨大的變革?;ヂ?lián)網(wǎng)和移動(dòng)設(shè)備的普及使
得音樂的傳播和消費(fèi)方式發(fā)生了根本性的變化。數(shù)字音樂平臺如酷狗音樂成為
了連接音樂創(chuàng)作者和聽眾的重要橋梁??峁芬魳纷鳛橹袊I(lǐng)先的數(shù)字音樂服務(wù)
平臺之一,擁有龐大的用戶基礎(chǔ)和豐富的音樂資源,其排行榜數(shù)據(jù)更是成為了
衡量音樂流行趨勢和聽眾偏好的重要指標(biāo)。
音樂排行榜不僅反映了當(dāng)前流行音樂的走向,還為音樂制作公司、藝人、
廣告商等提供了重要的市場情報(bào)。通過分析排行榜數(shù)據(jù),可以洞察聽眾的喜好
變化,預(yù)測音樂市場的趨勢,從而指導(dǎo)音樂制作、推廣和營銷策略。然而,酷
狗音樂排行榜的數(shù)據(jù)量龐大且實(shí)時(shí)更新,手工收集和分析數(shù)據(jù)不僅效率低下,
而且難以捕捉數(shù)據(jù)的動(dòng)態(tài)變化。
因此,利用現(xiàn)代計(jì)算機(jī)技術(shù)和數(shù)據(jù)分析方法來自動(dòng)化地采集和分析酷狗音
樂排行榜數(shù)據(jù),對于音樂產(chǎn)業(yè)的專業(yè)人士和愛好者來說具有重要的實(shí)際意義。
Python作為一種功能強(qiáng)大、易于學(xué)習(xí)的編程語言,其在數(shù)據(jù)采集、處理和分析
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
方面的應(yīng)用日益廣泛。Python豐富的庫和框架,如requests、BeautifulSoup、
Scrapy、Pandas、NumPy、Matplotlib等,為進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)采集和分析提供了
便利。
本次畢業(yè)設(shè)計(jì)旨在基于Python語言,結(jié)合網(wǎng)絡(luò)爬蟲技術(shù)和數(shù)據(jù)分析方法,
實(shí)現(xiàn)對酷狗音樂排行榜數(shù)據(jù)的自動(dòng)化采集和分析,以期為音樂產(chǎn)業(yè)提供有價(jià)值
的數(shù)據(jù)支持和決策參考。通過本次畢業(yè)設(shè)計(jì)的實(shí)施,不僅可以提升數(shù)據(jù)采集的
效率,還可以深入挖掘數(shù)據(jù)背后的信息和趨勢,為音樂市場的洞察和發(fā)展提供
科學(xué)依據(jù)。
1.2開發(fā)環(huán)境與工具
1.2.1Python簡介
Python是一種高級的、動(dòng)態(tài)類型的編程語言,它被設(shè)計(jì)為易于閱讀和編寫。
Python的語法簡潔明了,使得它易于學(xué)習(xí)并適合快速開發(fā)。Python具有廣泛的
應(yīng)用領(lǐng)域,包括Web開發(fā)、數(shù)據(jù)科學(xué)、人工智能、機(jī)器學(xué)習(xí)、網(wǎng)絡(luò)爬蟲、系統(tǒng)
自動(dòng)化、游戲開發(fā)等。
Python是一種解釋型語言,它支持多種編程范式,包括面向?qū)ο缶幊毯瓦^
程式編程。Python的動(dòng)態(tài)類型特性意味著你不需要預(yù)先聲明變量的類型。Python
具有強(qiáng)大的標(biāo)準(zhǔn)庫和豐富的第三方庫,這些庫可以幫助你輕松地完成各種任務(wù)。
Python的強(qiáng)大之處在于它的社區(qū)。Python有一個(gè)活躍的開發(fā)者社區(qū),它為
Python的使用者提供了大量的資源和支持。你可以在Python的社區(qū)中尋找?guī)?/p>
助、分享經(jīng)驗(yàn)和學(xué)習(xí)新的技術(shù)。
總的來說,Python是一種強(qiáng)大、靈活和易于使用的編程語言,它可以幫助
你實(shí)現(xiàn)各種項(xiàng)目和目標(biāo)。無論你是初學(xué)者還是經(jīng)驗(yàn)豐富的開發(fā)者,Python都值
得你學(xué)習(xí)和使用。
1.2.2Pycharm簡介
PyCharm是一種Python的集成開發(fā)環(huán)境(IDE),專門設(shè)計(jì)用于幫助開發(fā)
者在使用Python語言開發(fā)時(shí)提高效率。PyCharm帶有一整套的工具,包括調(diào)試、
語法高亮、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測試和版本控制
等。
PyCharm有兩種版本:專業(yè)版和社區(qū)版。專業(yè)版適用于公司進(jìn)行專業(yè)互聯(lián)
網(wǎng)開發(fā),需要付費(fèi)購買激活碼才能使用,功能全面。社區(qū)版提供給開發(fā)者免費(fèi)
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
使用,功能雖然不夠全面,但能夠滿足日常開發(fā)需要。
此外,PyCharm還提供了一些高級功能,以支持Django框架下的專業(yè)Web
開發(fā)。
總的來說,PyCharm是一個(gè)強(qiáng)大的IDE,它可以幫助Python開發(fā)者更高效
地編寫代碼,簡化開發(fā)過程,并支持多種專業(yè)開發(fā)需求。
1.2.3MySQL簡介
MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),使用SQL(結(jié)構(gòu)化
查詢語言)作為其主要的數(shù)據(jù)庫查詢語言。它由瑞典MySQLAB公司開發(fā),目前
由甲骨文公司(OracleCorporation)負(fù)責(zé)開發(fā)和維護(hù)。
MySQL是一個(gè)多用戶數(shù)據(jù)庫,允許并發(fā)地處理多個(gè)用戶和事務(wù)。它提供了
一種安全且可靠的方式來存儲、檢索、更新和刪除數(shù)據(jù),使得應(yīng)用程序可以輕
松地與數(shù)據(jù)庫進(jìn)行交互。
下面是使用MySQL對爬取到的酷狗音樂網(wǎng)站數(shù)據(jù)進(jìn)行管理的基本流程:
(1)安裝和配置MySQL數(shù)據(jù)庫:首先,需要在你的計(jì)算機(jī)上安裝MySQL數(shù)
據(jù)庫,并配置好數(shù)據(jù)庫服務(wù)器??梢詮腗ySQL官方網(wǎng)站上下載安裝包,并按照
安裝向?qū)нM(jìn)行安裝。
(2)創(chuàng)建數(shù)據(jù)庫和表:在MySQL中,需要?jiǎng)?chuàng)建一個(gè)數(shù)據(jù)庫來存儲酷狗音樂
網(wǎng)的數(shù)據(jù)。然后,在該數(shù)據(jù)庫中創(chuàng)建表來定義數(shù)據(jù)的結(jié)構(gòu)和關(guān)系??梢允褂肕ySQL
提供的命令行工具或圖形化界面工具來創(chuàng)建數(shù)據(jù)庫和表。
(3)將數(shù)據(jù)導(dǎo)入MySQL數(shù)據(jù)庫:一旦創(chuàng)建了數(shù)據(jù)庫和表,需要將爬取到的
酷狗音樂網(wǎng)數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫中??梢允褂肕ySQL提供的導(dǎo)入功能或編
程語言中的數(shù)據(jù)庫連接庫來實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入。確保數(shù)據(jù)正確地插入到相應(yīng)的表
中。
(4)查詢和管理數(shù)據(jù):一旦數(shù)據(jù)被導(dǎo)入到MySQL數(shù)據(jù)庫中,可以使用SQL
查詢語言來檢索、更新和管理數(shù)據(jù)??梢跃帉慡ELECT語句來查詢數(shù)據(jù),使用
UPDATE語句來更新數(shù)據(jù),以及使用DELETE語句來刪除數(shù)據(jù)。
(5)數(shù)據(jù)備份和恢復(fù):為了確保數(shù)據(jù)的安全性,應(yīng)該定期備份MySQL數(shù)據(jù)
庫??梢允褂肕ySQL提供的備份工具或第三方備份軟件來進(jìn)行備份。在需要恢
復(fù)數(shù)據(jù)時(shí),可以使用備份文件來還原數(shù)據(jù)庫。
總的來說,MySQL是一個(gè)強(qiáng)大、可靠且靈活的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),廣
泛應(yīng)用于各種領(lǐng)域和應(yīng)用程序中。
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
2需求分析
2.1可行性需求分析
1、技術(shù)可行性
酷狗音樂網(wǎng)站排行榜數(shù)據(jù)是公開可訪問的,可以通過爬蟲技術(shù)來輕松獲取
數(shù)據(jù)。Python是一個(gè)強(qiáng)大的編程語言,廣泛用于網(wǎng)絡(luò)爬蟲和數(shù)據(jù)分析。利用
Python,可以使用各種庫(如requests、BeautifulSoup、Scrapy等)來爬取
網(wǎng)頁數(shù)據(jù)??峁芬魳肪W(wǎng)站的結(jié)構(gòu)、數(shù)據(jù)格式和傳輸方式會影響到數(shù)據(jù)解析的難
度。如果數(shù)據(jù)是結(jié)構(gòu)化的,可以使用BeautifulSoup或lxml等庫來解析。如果
數(shù)據(jù)是JSON格式的,可以使用Python內(nèi)置的json庫來解析。爬取到的數(shù)據(jù)需
要存儲起來以便后續(xù)分析。Python提供了多種方式來存儲數(shù)據(jù),如CSV、Excel、
數(shù)據(jù)庫等。選擇合適的存儲方式取決于具體需求和數(shù)據(jù)規(guī)模。
綜上所述,Python爬取酷狗音樂網(wǎng)站排行榜在技術(shù)上是可行的。
2、需求可行性
酷狗音樂作為中國人使用較多的音樂播放器之一,通過分析排行榜數(shù)據(jù),
可以了解當(dāng)前流行什么樣的音樂,哪些歌手或歌曲最受歡迎。這為音樂產(chǎn)業(yè)的
市場趨勢分析、音樂制作和發(fā)行提供了重要的參考信息。排行榜數(shù)據(jù)反映了用
戶的聽歌習(xí)慣和喜好。通過分析這些數(shù)據(jù),可以深入了解用戶的音樂偏好,從
而更好地滿足用戶需求,優(yōu)化推薦算法,提升用戶體驗(yàn)。
Python擁有大量的庫和工具,專門用于數(shù)據(jù)處理和分析,如Pandas、NumPy、
Matplotlib、Seaborn等,這些庫提供了高效的數(shù)據(jù)結(jié)構(gòu)、統(tǒng)計(jì)分析和可視化
功能。Python的數(shù)據(jù)可視化庫如Matplotlib和Seaborn可以創(chuàng)建高質(zhì)量的圖
表和圖形,幫助更好地理解和展示數(shù)據(jù)分析的結(jié)果。
綜上所述,Python因其強(qiáng)大的數(shù)據(jù)處理能力、易用性和成本效益而成為分
析酷狗音樂網(wǎng)站排行榜數(shù)據(jù)的首選語言。
2.2采集目標(biāo)功能分析
本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)集來源于酷狗音樂網(wǎng)官網(wǎng),通過Python技術(shù)爬取酷
狗音樂網(wǎng)排行榜的歌曲信息。經(jīng)數(shù)據(jù)清洗后共留有500條記錄,爬取完成后重
復(fù)檢查數(shù)據(jù)的準(zhǔn)確性,確定爬取出來的數(shù)據(jù)無誤,并且屬于酷狗音樂網(wǎng)酷狗排
行榜歌曲信息。
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
分析酷狗音樂網(wǎng)站網(wǎng)頁信息,明確本次畢業(yè)設(shè)計(jì)需要爬取的參數(shù)有酷狗音
樂排行榜列表數(shù)據(jù),包括歌曲名稱、歌手等數(shù)據(jù),在對原始數(shù)據(jù)進(jìn)行預(yù)處理后,
再對其數(shù)據(jù)進(jìn)行多個(gè)維度的分析。例如,按歌曲名稱進(jìn)行統(tǒng)計(jì),繪制詞云圖再
對比哪些詞出現(xiàn)的頻率較高。通過對歌手進(jìn)行排名,統(tǒng)計(jì)各個(gè)歌手在排行榜上
的歌曲數(shù)量,再進(jìn)行排名等。并提供數(shù)據(jù)可視化功能,將各項(xiàng)統(tǒng)計(jì)數(shù)據(jù)以圖表
等形式展示,方便用戶進(jìn)行數(shù)據(jù)分析和比較。
2.3關(guān)鍵技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲技術(shù),又稱網(wǎng)頁爬取技術(shù),是指使用自動(dòng)化程序模擬人類瀏覽網(wǎng)
頁的行為,從互聯(lián)網(wǎng)上獲取信息并提取有價(jià)值數(shù)據(jù)的過程。網(wǎng)絡(luò)爬蟲是搜索引
擎、數(shù)據(jù)分析、網(wǎng)絡(luò)監(jiān)測等領(lǐng)域的重要組成部分。
本次畢業(yè)設(shè)計(jì)將詳細(xì)介紹網(wǎng)絡(luò)爬蟲技術(shù),包括它的基本原理、爬蟲的分類、
爬蟲的基本流程、爬蟲的應(yīng)用以及爬蟲的局限性。
(1)基本原理:
網(wǎng)絡(luò)爬蟲通過發(fā)送HTTP請求訪問網(wǎng)頁,接收服務(wù)器返回的HTML、XML或
JSON等格式的響應(yīng)數(shù)據(jù)。解析這些數(shù)據(jù),提取出有價(jià)值的信息,如文本內(nèi)容、
圖片鏈接、視頻地址等。獲取網(wǎng)頁中的鏈接,制定策略繼續(xù)訪問其他網(wǎng)頁,實(shí)
現(xiàn)數(shù)據(jù)的規(guī)?;杉?/p>
(2)爬蟲的分類:
通用爬蟲:如搜索引擎爬蟲,廣泛地爬取網(wǎng)頁,用于構(gòu)建搜索引擎的索引
庫。
聚焦爬蟲:針對特定主題或網(wǎng)站進(jìn)行深度爬取,獲取詳細(xì)和深入的信息。
增量式爬蟲:只爬取網(wǎng)站更新或新增的部分,提高爬取效率。
(3)爬蟲的基本流程:
選擇目標(biāo):確定要爬取的網(wǎng)站和目標(biāo)數(shù)據(jù)。
發(fā)送請求:使用HTTP客戶端向目標(biāo)網(wǎng)頁發(fā)送請求,獲取網(wǎng)頁內(nèi)容。
解析數(shù)據(jù):對獲取的網(wǎng)頁內(nèi)容進(jìn)行解析,提取有用信息。
存儲數(shù)據(jù):將提取的數(shù)據(jù)存儲到本地文件、數(shù)據(jù)庫或其他存儲系統(tǒng)。
(4)爬蟲的應(yīng)用:
爬蟲技術(shù)的應(yīng)用非常廣泛,隨著互聯(lián)網(wǎng)的不斷發(fā)展和數(shù)據(jù)量的爆炸性增長,
爬蟲技術(shù)在各個(gè)領(lǐng)域的需求也在不斷增加。如:搜索引擎:搜索引擎如百度、谷
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
歌、必應(yīng)等使用爬蟲技術(shù)來索引互聯(lián)網(wǎng)上的網(wǎng)頁,以便用戶能夠通過搜索查詢
到相關(guān)信息。電子商務(wù):價(jià)格比較網(wǎng)站使用爬蟲技術(shù)抓取不同電商平臺上的商
品價(jià)格和詳情,幫助用戶做出購買決策。市場研究:企業(yè)使用爬蟲技術(shù)收集競
爭對手的信息,如產(chǎn)品介紹、價(jià)格策略、用戶評價(jià)等,以優(yōu)化自身的市場定位。
(5)爬蟲的局限性:
爬蟲技術(shù)雖然強(qiáng)大,但也存在一些局限性,主要包括:
反爬蟲策略:許多網(wǎng)站為了保護(hù)自己的數(shù)據(jù)和服務(wù),會采取反爬蟲措施,
如IP封禁、動(dòng)態(tài)頁面加載、驗(yàn)證碼、限制User-Agent等,這些都可能限制爬
蟲的正常工作。
隱私和安全問題:爬蟲抓取的數(shù)據(jù)可能包含用戶的隱私信息,如果沒有采
取適當(dāng)?shù)拇胧┍Wo(hù)這些信息,可能會引發(fā)隱私和安全問題。
因此,在使用爬蟲技術(shù)時(shí),需要充分考慮這些局限性,并采取相應(yīng)的措施
來避免或解決這些問題。
2.3.2文件存取技術(shù)
Python中的文件處理技術(shù)是指利用Python語言進(jìn)行文件的讀寫、管理和
操作。它可以幫助開發(fā)者更加有效地處理文件,提高工作效率。Python中文件
存取技術(shù)主要包括文件的打開、讀取、寫入和關(guān)閉等基本操作。
2.3.3可視化技術(shù)
可視化技術(shù)是指將數(shù)據(jù)或信息轉(zhuǎn)換為圖形、圖像或其他可視化形式的技術(shù),
以便更容易理解和分析。在計(jì)算機(jī)科學(xué)和信息技術(shù)領(lǐng)域,可視化技術(shù)廣泛應(yīng)用
于數(shù)據(jù)分析、科學(xué)計(jì)算、設(shè)計(jì)、工程、教育等多個(gè)方面。
(1)可視化技術(shù)的定義
可視化技術(shù)是一種將數(shù)據(jù)、信息或知識轉(zhuǎn)化為可視化形式(如圖形、圖像、
動(dòng)畫等)的方法和工具,以便更容易被人類感知、理解和交流。這種技術(shù)的目
的是通過視覺表示來增強(qiáng)信息的傳遞效率,使得復(fù)雜或抽象的概念更直觀、更
易于分析和管理。
(2)可視化技術(shù)的作用
可視化技術(shù)可以將復(fù)雜的數(shù)據(jù)和信息轉(zhuǎn)化為圖表、圖形、地圖等形式,使
人們更容易理解和分析。可視化技術(shù)可以用圖形和圖表來表達(dá)復(fù)雜的信息和數(shù)
據(jù),使得溝通更加清晰和有效。更快地獲取和理解數(shù)據(jù),從而更快速地做出決
策。這對于商業(yè)、金融、醫(yī)療等領(lǐng)域來說非常重要,因?yàn)檫@些領(lǐng)域需要快速、
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
準(zhǔn)確地做出決策。
(3)可視化技術(shù)的分類
可視化技術(shù)可以按照不同的標(biāo)準(zhǔn)進(jìn)行分類。以下是一些常見的分類方式:
(1)按照呈現(xiàn)方式分類:數(shù)字圖像(照片、視頻)、信息圖表(柱狀圖、
餅圖)、空間(三維圖形、虛擬現(xiàn)實(shí)技術(shù))。
(2)按照處理對象及目的分類:科學(xué)計(jì)算可視化、數(shù)據(jù)可視化、信息可視
化、知識可視化。
可視化技術(shù)的流程可以概括為以下幾個(gè)步驟:
(1)需求分析:明確可視化的目標(biāo)、受眾、數(shù)據(jù)來源以及需要呈現(xiàn)的關(guān)鍵
信息。
(2)數(shù)據(jù)收集與預(yù)處理:從各種來源收集大數(shù)據(jù),并對數(shù)據(jù)進(jìn)行清洗、整
合和格式化,以確保數(shù)據(jù)質(zhì)量和一致性。
(3)數(shù)據(jù)探索與分析:通過統(tǒng)計(jì)分析和數(shù)據(jù)挖掘技術(shù),探索數(shù)據(jù)中的模式、
趨勢和關(guān)聯(lián),確定哪些信息對于可視化是關(guān)鍵的。
(4)選擇合適的可視化工具:根據(jù)需求和技能水平,選擇適合的可視化工
具或平臺。
(5)設(shè)計(jì)可視化方案:根據(jù)分析結(jié)果和受眾需求,設(shè)計(jì)可視化的布局、色
彩、交互方式等。
(6)實(shí)現(xiàn)可視化:使用所選工具,將數(shù)據(jù)和設(shè)計(jì)轉(zhuǎn)化為具體的可視化圖表、
圖形或動(dòng)畫。
(7)測試與優(yōu)化:對可視化結(jié)果進(jìn)行測試,確保信息呈現(xiàn)準(zhǔn)確、清晰。根
據(jù)反饋和需求進(jìn)行必要的優(yōu)化和調(diào)整。
(8)發(fā)布與分享:將可視化結(jié)果發(fā)布到適當(dāng)?shù)钠脚_或工具上,與團(tuán)隊(duì)成員、
利益相關(guān)者或公眾分享,以促進(jìn)數(shù)據(jù)驅(qū)動(dòng)的決策和溝通。
(9)持續(xù)監(jiān)控與更新:隨著數(shù)據(jù)的更新和變化,持續(xù)監(jiān)控可視化的效果,
并根據(jù)需要進(jìn)行更新和維護(hù)。
這個(gè)流程強(qiáng)調(diào)了從需求分析到數(shù)據(jù)收集、處理、分析、可視化和分享的全
過程,確保大數(shù)據(jù)能夠有效地轉(zhuǎn)化為有價(jià)值的信息,并通過可視化方式呈現(xiàn)給
用戶。在可視化中,特別需要注意數(shù)據(jù)的預(yù)處理和性能優(yōu)化步驟,因?yàn)榇髷?shù)據(jù)
的處理和可視化可能會對計(jì)算資源和性能提出更高的要求。此外,由于大數(shù)據(jù)
的動(dòng)態(tài)性和變化性,可視化解決方案需要能夠適應(yīng)數(shù)據(jù)的實(shí)時(shí)更新和變化。
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
3數(shù)據(jù)采集
3.1采集頁面分析
首先通過瀏覽器搜索酷狗音樂的官方網(wǎng)頁,然后找到然后在榜單中找到酷
狗TOP500榜單,如圖3-1所示,其中URL為:
/yy/rank/home/1-8888.html?from=rank。瀏覽發(fā)現(xiàn)網(wǎng)
頁并無翻頁按鈕,一個(gè)頁面只顯示22首歌,但觀察url可以嘗試把1-8888中
的1替換成2,再進(jìn)行瀏覽,恰好返回的是第二頁的信息。如圖3-2所示,經(jīng)
過多次嘗試,發(fā)現(xiàn)更換不同的數(shù)字,即跳轉(zhuǎn)不同的頁面,因此只需要更改hone/
后面的數(shù)字即可,由于每頁只顯示22條信息,所以抓取前500總共需要23個(gè)
頁面。
圖3-1數(shù)據(jù)網(wǎng)址頁面
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-2網(wǎng)址頁面第二頁
按F12調(diào)出開發(fā)者工具,刷新頁面,如圖3-3。
圖3-3開發(fā)者工具
利用全局搜索工具定位所需數(shù)據(jù)位置,點(diǎn)擊開發(fā)者工具上面的Headers字
段,發(fā)現(xiàn)這個(gè)是一個(gè)GET請求,使用request庫中的get函數(shù)即可爬取數(shù)據(jù)。
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
3.2字段分析
首先來到酷狗音樂網(wǎng)頁面按F12調(diào)出開發(fā)者工具,然后點(diǎn)擊元素選擇器按
鈕再點(diǎn)擊所需要的數(shù)據(jù)就會定位到所需要的數(shù)據(jù)在網(wǎng)頁中的位置,如圖3-4所
示。可以使用request方法中的get函數(shù)來獲取網(wǎng)頁中的數(shù)據(jù),最原始的數(shù)據(jù)格
式是呈現(xiàn)html網(wǎng)頁格式的,所以需要清洗數(shù)據(jù)然后依次寫入到csv格式的文件
當(dāng)中。
圖3-4分析數(shù)據(jù)類型頁面圖
3.3編程實(shí)現(xiàn)
使用import導(dǎo)入所需庫,Requests庫用于請求網(wǎng)頁獲取網(wǎng)頁數(shù)據(jù),
BeautifulSoup庫用于解析網(wǎng)頁數(shù)據(jù),time庫的sleep()方法可以讓程序暫停。
代碼實(shí)現(xiàn)如下:
importrequests
frombs4importBeautifulSoup
importtime
importcsv
如果導(dǎo)入的庫標(biāo)紅可能有幾種原因:
(1)沒有安裝或沒有正確安裝需要導(dǎo)入的庫,需使用pip工具正確的安裝
所需要導(dǎo)入的庫。
(2)庫的名字沒有拼寫正確,安裝庫時(shí)需要仔細(xì)檢查拼寫是否正確。
(3)環(huán)境配置問題。
通過瀏覽器的開發(fā)者工具,復(fù)制請求頭,用于偽裝為瀏覽器,模擬瀏覽器
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
發(fā)送請求,防止被網(wǎng)站封禁,便于爬蟲的穩(wěn)定性。代碼實(shí)現(xiàn)如下:
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/56.0.2924.87Safari/537.36'
}
以上完成后,就可以編寫代碼爬取酷狗音樂網(wǎng)站排行榜了,代碼實(shí)現(xiàn)如下:
#導(dǎo)入相應(yīng)庫
importrequests
frombs4importBeautifulSoup
importtime
importcsv
#加入請求頭
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/56.0.2924.87Safari/537.36'
}
csv_data=[]
#定義獲取信息函數(shù)
defget_info(url):
#通過請求頭和url鏈接,得到整體網(wǎng)頁頁面信息
wb_data=requests.get(url,headers=headers)
#對返回的結(jié)果進(jìn)行解析
soup=BeautifulSoup(wb_data.text,'lxml')
#找到具體的相同的數(shù)據(jù)的內(nèi)容位置和內(nèi)容
ranks=soup.select('span.pc_temp_num')
titles=soup.select('.pc_temp_songname')
times=soup.select('.pc_temp_time')
#獲取具體的文字內(nèi)容
forranks,titles,timesinzip(ranks,titles,times):
data={
'排名':ranks.get_text().strip(),
'歌手':titles.get_text().replace('\n','').replace('\t','').replace('\r','').split('-')[1],
'歌名':titles.get_text().replace('\n','').replace('\t','').replace('\r','').split('-')[0],
'時(shí)長':times.get_text().strip().replace('\n','').replace('\t','').replace('\r','')
}
csv_data.append(data)
print(data)
if__name__=='__main__':
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
urls=['/yy/rank/home/{}-8888.html'.format(str(i))foriinrange(1,
24)]
#構(gòu)造要爬取的頁面地址列表
forurlinurls:
get_info(url)
time.sleep(1)
#將鏈接保存到CSV文件
withopen('kugou_top500.csv','w',newline="",encoding='utf-8')ascsvfile:
#定義CSV文件的列名
fieldnames=["排名","歌手","歌名","時(shí)長"]
#創(chuàng)建一個(gè)CSV文件寫入器
writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
#寫入CSV文件的列名
writer.writeheader()
#將鏈接數(shù)據(jù)寫入CSV文件
writer.writerows(csv_data)
上述代碼使用requests.get()函數(shù)發(fā)送GET請求獲取網(wǎng)頁HTML內(nèi)容,并
使用BeautifulSoup模塊解析HTML,通過CSS選擇定位器定位到歌曲排名、歌
手、歌名、時(shí)長等元素打包成一個(gè)迭代器,然后通過循環(huán)遍歷,將每個(gè)信息存
儲到data字典中。使用if__name==’__main__’:判斷當(dāng)前文件是否被直接執(zhí)
行。使用列表推導(dǎo)式構(gòu)造一個(gè)包含要爬取的頁面地址的列表,然后使用for循
環(huán)遍歷頁面地址列表,并調(diào)用get_info()函數(shù)獲取每個(gè)頁面的信息,最后使用
time.sleep()函數(shù)控制爬蟲的速度。通過csv模塊將列表中的數(shù)據(jù)保存到一個(gè)
csv文件中。最后使用csv模塊讀取保存的csv文件,并將數(shù)據(jù)輸出到控制
臺上。
4數(shù)據(jù)清洗與處理
獲得龐大的數(shù)據(jù)集之后需要對數(shù)據(jù)進(jìn)行預(yù)處理,也就是所謂的清洗和檢查,
確定爬取過來的數(shù)據(jù)是否存在無效值和確實(shí)值,要保證數(shù)據(jù)的一致性,這個(gè)對于
信息質(zhì)量的評估是一項(xiàng)很重要的任務(wù)。不僅如此,需要將數(shù)據(jù)進(jìn)行有理化和有序
化,這樣子能夠在數(shù)據(jù)調(diào)用共享過程中方便很多開發(fā)人員對數(shù)據(jù)信息的使用。
本次項(xiàng)目中需要將爬下來的數(shù)據(jù)和網(wǎng)頁原數(shù)據(jù)進(jìn)行比對,并且檢查是否出
現(xiàn)空值、錯(cuò)值,還有數(shù)據(jù)的位置是否正確。根據(jù)不同的需求要對數(shù)據(jù)進(jìn)行不同的
處理。
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
4.1數(shù)據(jù)清洗
數(shù)據(jù)清洗在數(shù)據(jù)分析過程中起著至關(guān)重要的作用。它有助于提高數(shù)據(jù)質(zhì)量、
去除噪聲和冗余信息、便于數(shù)據(jù)分析和建模。通過使用Python進(jìn)行數(shù)據(jù)清洗,
用戶可以更好地理解和使用數(shù)據(jù),從而做出更準(zhǔn)確和可靠的決策。數(shù)據(jù)清洗的
主要目的是確保數(shù)據(jù)的質(zhì)量和準(zhǔn)確性,通過預(yù)處理原始數(shù)據(jù)來識別和修正數(shù)據(jù)
集中的各種問題,如不準(zhǔn)確、不完整、重復(fù)、有誤或非法的記錄。
將CSV文件通過pandas導(dǎo)入Python中并輸出,如圖4-1所示:
圖4-1數(shù)據(jù)清洗準(zhǔn)備頁面
經(jīng)過比對和檢查,發(fā)現(xiàn)數(shù)據(jù)不存在缺失,錯(cuò)位還有空值,那么根據(jù)需求將有
效數(shù)據(jù)統(tǒng)一規(guī)劃去掉不要的行列數(shù)據(jù),防止數(shù)據(jù)冗余。因此只需保留需要的數(shù)據(jù),
然后整理為原網(wǎng)頁格式存入kugou_top.csv文件中,留存后續(xù)作為統(tǒng)計(jì)分析、可
視化使用。如圖4-2所示:
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-2數(shù)據(jù)清洗完成頁面
4.2數(shù)據(jù)儲存
數(shù)據(jù)儲存得方法有很多種,常見得可以直接用記事本格式儲存(txt),或者
直接用其他文件的形式儲存csv、excel、json等,但是以上方法保存的數(shù)據(jù)體
量普遍都比較小。如果需要儲存較大的數(shù)據(jù)信息就需要用到的數(shù)據(jù)庫,數(shù)據(jù)庫也
分為關(guān)系型和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫比較典型的有MySQL和Oracle等,
非關(guān)系型數(shù)據(jù)庫等以鍵值對形式儲存數(shù)據(jù)的代表有Mongodb、Redis等。本次用
到的是csv、MySQL。
CSV文件是純文本格式,易于理解和創(chuàng)建幾乎可以與所有主要的數(shù)據(jù)處理
工具和編程語言兼容。在編程中,CSV文件的讀取和寫入通常很簡單,Python
的csv模塊提供了處理CSV文件的便捷方式。但是CSV文件也有局限性,比如
不適合存儲大量數(shù)據(jù),不支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如嵌套數(shù)據(jù)或多個(gè)表之間的關(guān)
系)、以及缺少數(shù)據(jù)類型信息。對于小規(guī)模數(shù)據(jù),csv文件是一種不錯(cuò)的選擇,
可以利用Python將數(shù)據(jù)寫入csv中。代碼實(shí)現(xiàn)如下:
#文件存儲
withopen('kugou_top500.csv','w',newline="",encoding='utf-8')ascsvfile:
#定義CSV文件的列名
fieldnames=["排名","歌手","歌名","時(shí)長"]
#創(chuàng)建一個(gè)CSV文件寫入器
writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
#寫入CSV文件的列名
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
writer.writeheader()
#將鏈接數(shù)據(jù)寫入CSV文件
writer.writerows(csv_data)
而對于大規(guī)模數(shù)據(jù)和需要頻繁操作的應(yīng)用,則建議使用MySQL數(shù)據(jù)庫,
MySQL是一個(gè)成熟和廣泛使用的數(shù)據(jù)庫管理系統(tǒng),擁有穩(wěn)定和可靠的性能記錄。
通過Navicat連接MySQL數(shù)據(jù)庫,再將數(shù)據(jù)導(dǎo)入到MySQL數(shù)據(jù)庫中。如圖
4-3所示:
圖4-3數(shù)據(jù)存儲MySQL頁面
4.3編程實(shí)現(xiàn)
接下來需要將csv文件保存到MySQL數(shù)據(jù)庫當(dāng)中。先創(chuàng)建一個(gè)名為
"kugou"的數(shù)據(jù)庫,然后進(jìn)入該數(shù)據(jù)庫,創(chuàng)建一個(gè)名為"test"的數(shù)據(jù)表,該數(shù)據(jù)
表包含了3個(gè)字段:歌手、歌名和時(shí)長。接著將導(dǎo)入設(shè)置local_infile開
啟,再使用loaddata命令將一個(gè)名為"kugou_top500.csv"的本地文件中的數(shù)
據(jù)導(dǎo)入到test表中,數(shù)據(jù)以逗號分隔,每行以回車換行符結(jié)束,忽略第一行。
最后,使用select命令查詢test表中的前10行數(shù)據(jù),驗(yàn)證存入數(shù)據(jù)是否
正確。具體實(shí)現(xiàn)步驟如下:
創(chuàng)建數(shù)據(jù)庫,設(shè)置字符集為“utf8”。
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-4創(chuàng)建數(shù)據(jù)庫圖
創(chuàng)建數(shù)據(jù)表,設(shè)置4個(gè)字符型變量:排名、歌手、歌名、時(shí)長。
圖4-5創(chuàng)建數(shù)據(jù)表圖
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
在MySQL中,如果想要導(dǎo)入一個(gè)包含大量數(shù)據(jù)的文件到數(shù)據(jù)庫中,可以使
用LOADDATAINFILE命令,以便快速地將數(shù)據(jù)導(dǎo)入到指定的數(shù)據(jù)表中。但是,
默認(rèn)情況下,MySQL禁用了LOADDATAINFILE命令。為了能夠正常使用該命
令,需要先修改MySQL配置文件,開啟local_infile選項(xiàng)。
圖4-6導(dǎo)入設(shè)置local_infile開啟圖
接下來就要用loaddata函數(shù)導(dǎo)入本地kugou_top500.csv表格數(shù)據(jù)了,
如圖4-7所示,是一種常見的在MySQL數(shù)據(jù)庫中導(dǎo)入csv文件的方法,該函
數(shù)可以將csv文件的數(shù)據(jù)加載到MySQL表中。在使用loaddata函數(shù)導(dǎo)入數(shù)
據(jù)時(shí),需要指定csv文件的路徑、MySQL表的名稱以及數(shù)據(jù)列的順序和類型。
其中,'kugou_top500.csv'為要導(dǎo)入的數(shù)據(jù)文件路徑,test為要導(dǎo)入數(shù)據(jù)的目
標(biāo)數(shù)據(jù)表名,fieldsterminatedby','表示數(shù)據(jù)文件中的字段是用逗號分隔
的,linesterminatedby'\r\n'表示數(shù)據(jù)文件中的行是用換行符分隔的。
圖4-7導(dǎo)入數(shù)據(jù)圖
最后,驗(yàn)證存入數(shù)據(jù)是否正確,如圖4-8所示:
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-8驗(yàn)證數(shù)據(jù)圖
5數(shù)據(jù)統(tǒng)計(jì)與分析
5.1數(shù)據(jù)準(zhǔn)備
首先導(dǎo)入相關(guān)庫,再使用pymysql模塊輸入主機(jī)名、用戶名、密碼和數(shù)據(jù)
庫名等參數(shù)來建立MySQL數(shù)據(jù)庫連接。接下來,需要?jiǎng)?chuàng)建一個(gè)游標(biāo)對象
cursor,用于執(zhí)行SQL語句和獲取查詢結(jié)果。然后可以定義一個(gè)查詢語句,查
詢test表中的所有數(shù)據(jù)。
查詢完成后,使用cursor.execute()函數(shù)將查詢語句傳遞給MySQL數(shù)據(jù)
庫,并執(zhí)行查詢操作。再使用cursor.fetchall()獲取查詢結(jié)果,接著創(chuàng)建一
個(gè)新的csv文件,并將數(shù)據(jù)寫入到文件中。最后關(guān)閉cursor和mydb連接,
釋放資源,如圖5-1所示。
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖5-1數(shù)據(jù)展示頁面圖
5.2數(shù)據(jù)展示
5.2.1依據(jù)歌曲名進(jìn)行統(tǒng)計(jì)
讀取kugou_top500.csv文件后,使用Pandas庫將其轉(zhuǎn)換為DataFrame
對象。指定中文字體,然后讀取包含文本數(shù)據(jù)的DataFrame,將所有文本數(shù)據(jù)
連接成一個(gè)字符串,將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串,然后生成詞云圖。代碼實(shí)現(xiàn)如下:
importpandasaspd
fromwordcloudimportWordCloud
importmatplotlib.pyplotasplt
frommatplotlib.font_managerimportFontProperties
#指定中文字體
font=FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF")
#獲取字體文件路徑
font_path=font.get_file()
#讀取包含文本數(shù)據(jù)的DataFrame
df=pd.read_csv('kugou_top500.csv')#替換成你的數(shù)據(jù)文件
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
#將所有文本數(shù)據(jù)連接成一個(gè)字符串,將浮點(diǎn)數(shù)轉(zhuǎn)換為字符串
text=''.join(str(item)foritemindf['歌名']ifnotpd.isnull(item))
#生成詞云
wordcloud=WordCloud(width=800,height=400,background_color='white',
font_path=font_path).generate(text)
#繪制詞云圖
plt.figure(figsize=(30,10))
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis('off')
plt.show()
然后得到一張由歌曲名進(jìn)行統(tǒng)計(jì)后可視化的詞云圖,如圖5-2所示:
圖5-2歌曲名詞云圖
在圖5-2可以看出Live出現(xiàn)頻率最高,Live音樂,即現(xiàn)場版的音樂,Live
作為歌曲后綴出現(xiàn),通常表示現(xiàn)場版,出現(xiàn)頻率最高說明相對于錄音室版大多
數(shù)酷狗音樂聽眾用戶喜歡Live音樂。之所以受大多數(shù)聽眾喜愛是因?yàn)椋篖ive
音樂是在現(xiàn)場實(shí)時(shí)演奏或演唱的,因此它能夠給聽眾帶來最真實(shí)、最生動(dòng)的音
樂體驗(yàn)。聽眾可以感受到現(xiàn)場的氛圍,聽到未經(jīng)后期制作的原始聲音,感受到
音樂的力量和情感。由于Live音樂是在現(xiàn)場錄制的,因此它可能會包含一些獨(dú)
特的音效和現(xiàn)場氛圍的元素,如觀眾的歡呼聲、現(xiàn)場的環(huán)境音等。這些元素使
得Live音樂具有獨(dú)特的聽覺體驗(yàn),讓人仿佛置身于現(xiàn)場之中。綜上所述,Live
音樂以其真實(shí)性、生動(dòng)性、即興性、情感共鳴和曲目選擇的靈活性等特點(diǎn),為
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
聽眾帶來了獨(dú)特的音樂體驗(yàn)。
此外,Explicit、Love和Version出現(xiàn)頻率也較高。Explict在詞典上的
含義是“直言的、清晰的、毫不避諱的”,在歌名上大多作為后綴存在。這個(gè)
單詞的出現(xiàn)意味著這首歌有些“露骨”,即歌詞中含有限制級的粗口,表示這
首歌是未刪減版本。一些聽眾可能更喜歡原始、未經(jīng)刪減的歌曲版本,認(rèn)為這
樣更能體驗(yàn)到歌曲的真實(shí)情感和原始魅力。而歌名出現(xiàn)Love表明大多數(shù)聽眾喜
愛情歌,出現(xiàn)Version則表示該歌曲是某個(gè)原始歌曲不同的版本或改編版本,
這些版本可能在風(fēng)格、演奏方式、混音,歌詞或其他方面與原始歌曲有所不同。
可以為聽眾提供不同的聽覺體驗(yàn)。
5.2.2依據(jù)歌手進(jìn)行統(tǒng)計(jì)
讀取kugou_top500.csv文件后,使用Pandas庫將其轉(zhuǎn)換為DataFrame
對象。然后從DataFrame對象中提取“歌手”列的數(shù)據(jù),并傳遞給topTenSongs
函數(shù)。數(shù)據(jù)經(jīng)過統(tǒng)計(jì)和整理后,調(diào)用matplotlib庫生成柱狀圖,并在屏幕上
顯示。代碼顯示如下:
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
fromwordcloudimportWordCloud
#正常顯示中文
plt.rcParams['font.sans-serif']=['SimHei']
#正常顯示負(fù)號
plt.rcParams['axes.unicode_minus']=False
#上榜歌曲數(shù)量前十歌手
deftopTenSongs(data):
List=list(set(data))
dict={}
maxDict={}
foriindata:
if(iinList):
if(inotindict.keys()):
dict[i]=1
else:
dict[i]+=1
foriinrange(10):
max=0
value=''
foriindict.keys():
21
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
if(dict[i]>=max):
max=dict[i]
value=i
maxDict[value]=max
dict.pop(value)
print(maxDict)
x=list(maxDict.keys())
y=list(maxDict.values())
#柱子上的數(shù)字顯示
fora,binzip(x,y):
plt.text(a,b,'%d'%b,ha='center',va='bottom');
plt.bar(x,y)
plt.xticks(x,rotation=30)
plt.yticks(range(5,40,5))
plt.xlabel('歌手')
plt.ylabel('歌曲數(shù)量')
plt.title('上榜歌曲數(shù)量前十歌手')
plt.show()
if__name__=='__main__':
df=pd.read_csv("kugou_top500.csv",encoding='utf-8',names=['排名','歌手','歌名','時(shí)長
'])
data=pd.DataFrame(data=df,dtype=str)
topTenSongs(data['歌手'])
通過上述代碼,將在表格中歌手名稱的字段數(shù)據(jù)進(jìn)行匯總和處理然后統(tǒng)計(jì)
其出現(xiàn)的次數(shù),最后生成字典,再通過字典里的數(shù)據(jù)生成一張依據(jù)上榜歌曲數(shù)
量進(jìn)行統(tǒng)計(jì)后可視化的柱狀圖,如圖5-3所示。
22
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖5-3上榜歌曲數(shù)量前十歌手條形圖
從圖5-3中可以看出周杰倫以29首上榜最多,林俊杰以15首排在第
二,鄧紫棋以13首排第三。這三位歌手都是華語樂壇極具才華和創(chuàng)作實(shí)力的
音樂人。他們各自擁有獨(dú)特的音樂風(fēng)格和出色的創(chuàng)作才華,能夠創(chuàng)作出符合大
眾喜好的音樂作品。他們的音樂作品旋律動(dòng)聽、歌詞深刻,深受聽眾喜愛。周
杰倫、林俊杰、鄧紫棋的歌曲風(fēng)格各異,能夠滿足不同口味和年齡段的聽眾需
求。他們的音樂作品既有經(jīng)典老歌,也有新穎流行的歌曲,吸引了廣泛的受眾
基礎(chǔ)。這使得他們的歌曲在排行榜上持續(xù)保持高人氣和影響力。
由此可以看出,從前的樂壇老將比現(xiàn)在的年輕歌手更受聽眾喜愛。因?yàn)橐?/p>
為他們具備出色的音樂才華和創(chuàng)作實(shí)力。多年的音樂創(chuàng)作和表演經(jīng)驗(yàn)使得他們
的音樂作品更具深度和魅力,能夠滿足廣大聽眾的需求。他們作品經(jīng)過時(shí)間的
沉淀和考驗(yàn),逐漸形成了良好的口碑和影響力。他們的音樂作品不僅旋律優(yōu)美、
歌詞深刻,而且在音樂風(fēng)格、文化內(nèi)涵等方面都具有較高的品質(zhì)。在成熟的音
樂市場中,聽眾對于音樂作品的品質(zhì)要求更高,更注重音樂作品的內(nèi)涵和深度。
23
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5.2.3依據(jù)歌曲時(shí)長進(jìn)行統(tǒng)計(jì)
讀取kugou_top500.csv文件后,使用Pandas庫將其轉(zhuǎn)換為DataFrame
對象。然后從DataFrame對象中提取“時(shí)長”列的數(shù)據(jù),并傳遞給Bar函數(shù)。
數(shù)據(jù)經(jīng)過統(tǒng)計(jì)和整理后,調(diào)用matplotlib庫生成柱狀圖,并在屏幕上顯示。
代碼顯示如下:
importpandasaspd
importnumpyasnp
importmatplotlib.pyplotasplt
fromwordcloudimportWordCloud
#正常顯示中文
plt.rcParams['font.sans-serif']=['SimHei']
#正常顯示負(fù)號
plt.rcParams['axes.unicode_minus']=False
#歌曲時(shí)長區(qū)間分布
defBar(data):
List=[]
dict={}
foriinlist(set(data)):
List.append(i[0])
foriindata:
if(i[0]inList):
if(i[0]notindict.keys()):
dict[i[0]]=1
else:
dict[i[0]]+=1
x=[]
y=list(dict.values())
foriinsorted(list(dict.keys())):
if(int(i)==len(list(dict.keys()))):
x.append(i+'+')
else:
a=str(int(i)+1)
x.append(i+'-'+a)
#柱子上的數(shù)字顯示
fora,binzip(x,y):
plt.text(a,b,'%d'%b,ha='center',va='bottom',fontsize=7);
plt.bar(x,y)
plt.yticks(range(25,250,25))
plt.xlabel('分鐘')
plt.ylabel
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不良反應(yīng)培訓(xùn)試題及答案
- 高頻領(lǐng)導(dǎo)力管理能力面試題及答案
- 完整版高等教育學(xué)考試試題及答案解析
- 岳普湖縣輔警招聘警務(wù)輔助人員考試題庫真題試卷公安基礎(chǔ)知識及答案
- 行政執(zhí)法套卷題庫及答案
- 護(hù)理三基知識模擬習(xí)題(含參考答案)
- 呼吸系統(tǒng)疾病護(hù)理評估試題及答案
- 安全生產(chǎn)法律法規(guī)考試試題(含答案解析)
- 育兒師初級考試題及答案
- 醫(yī)藥成人考試題及答案
- 數(shù)字孿生方案
- 【低空經(jīng)濟(jì)】無人機(jī)AI巡檢系統(tǒng)設(shè)計(jì)方案
- 金融領(lǐng)域人工智能算法應(yīng)用倫理與安全評規(guī)范
- 機(jī)動(dòng)車駕校安全培訓(xùn)課件
- 2025年役前訓(xùn)練考試題庫及答案
- 2024VADOD臨床實(shí)踐指南:耳鳴的管理課件
- 2025年湖南省公務(wù)員錄用考試錄用考試《申論》標(biāo)準(zhǔn)試卷及答案
- 行政崗位面試問題庫及應(yīng)對策略
- 2025年中信金融業(yè)務(wù)面試題庫及答案
- 2025廣東潮州府城文化旅游投資集團(tuán)有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
- 城市軌道交通服務(wù)與管理崗位面試技巧
評論
0/150
提交評論