酷狗音乐网站排行榜数据采集与分析_第1页
酷狗音乐网站排行榜数据采集与分析_第2页
酷狗音乐网站排行榜数据采集与分析_第3页
酷狗音乐网站排行榜数据采集与分析_第4页
酷狗音乐网站排行榜数据采集与分析_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1引言...............................................................................................................................1

1.1项目背景.............................................................................................................1

1.2开发环境与工具................................................................................................2

1.2.1Python简介............................................................................................2

1.2.2Pycharm简介..........................................................................................2

1.2.3MySQL简介..............................................................................................3

2需求分析.......................................................................................................................4

2.1可行性需求分析................................................................................................4

2.2采集目标功能分析............................................................................................4

2.3关键技术分析....................................................................................................5

2.3.1网络爬虫技术.........................................................................................5

2.3.2文件存取技术.........................................................................................6

2.3.3可视化技术.............................................................................................6

3数据采集.......................................................................................................................8

3.1采集页面分析....................................................................................................8

3.2字段分析..........................................................................................................10

3.3编程实现..........................................................................................................10

4数据清洗与处理.........................................................................................................12

4.1数据清洗..........................................................................................................13

4.2数据储存..........................................................................................................14

4.3编程实现..........................................................................................................15

5数据统计与分析.........................................................................................................18

5.1数据准备..........................................................................................................18

5.2数据展示..........................................................................................................19

5.2.1依据歌曲名进行统计...........................................................................19

5.2.2依据歌手进行统计...............................................................................21

5.2.3依据歌曲时长进行统计.........................................................................24

I

湖南商务职业技术学院毕业设计

5.3综述...................................................................................................................26

6小结.............................................................................................................................26

参考资料.........................................................................................................................27

II

湖南商务职业技术学院毕业设计

酷狗音乐网站排行榜数据采集与分析

1引言

音乐是一种跨越文化和地域的艺术形式,它能够触动人的心灵,引发人们

的共鸣。随着互联网的普及,音乐平台如酷狗音乐等逐渐成为人们获取音乐的

主要途径。酷狗音乐作为国内知名的音乐平台之一,其排行榜反映了广大用户

的音乐喜好和趋势。对于音乐人、音乐公司以及音乐爱好者都具有很高的参考

价值。然而,由于酷狗音乐排行榜数据庞大且更新频繁,人工分析存在很大的

局限性。因此,如何高效、准确地获取和分析酷狗音乐排行榜数据,成为了亟

待解决的问题。对这些数据的采集和分析,有助于深入理解音乐市场的动态,

预测未来的流行趋势,以及了解用户的行为模式和喜好。此外,这些数据也可

以为音乐产业的决策者提供有力的数据支持,帮助他们制定更有效的策略。

通过对酷狗音乐网站排行榜数据的采集和分析,可以了解当前音乐市场的

流行趋势、用户喜好以及潜在的音乐消费行为。这不仅有助于音乐平台的运营

管理,为音乐创作和推广提供参考,同时也可以为音乐产业的研究提供数据支

持。因此,对酷狗音乐网站排行榜数据的采集和分析具有重要的意义。

1.1项目背景

在数字化时代,音乐产业经历了巨大的变革。互联网和移动设备的普及使

得音乐的传播和消费方式发生了根本性的变化。数字音乐平台如酷狗音乐成为

了连接音乐创作者和听众的重要桥梁。酷狗音乐作为中国领先的数字音乐服务

平台之一,拥有庞大的用户基础和丰富的音乐资源,其排行榜数据更是成为了

衡量音乐流行趋势和听众偏好的重要指标。

音乐排行榜不仅反映了当前流行音乐的走向,还为音乐制作公司、艺人、

广告商等提供了重要的市场情报。通过分析排行榜数据,可以洞察听众的喜好

变化,预测音乐市场的趋势,从而指导音乐制作、推广和营销策略。然而,酷

狗音乐排行榜的数据量庞大且实时更新,手工收集和分析数据不仅效率低下,

而且难以捕捉数据的动态变化。

因此,利用现代计算机技术和数据分析方法来自动化地采集和分析酷狗音

乐排行榜数据,对于音乐产业的专业人士和爱好者来说具有重要的实际意义。

Python作为一种功能强大、易于学习的编程语言,其在数据采集、处理和分析

1

湖南商务职业技术学院毕业设计

方面的应用日益广泛。Python丰富的库和框架,如requests、BeautifulSoup、

Scrapy、Pandas、NumPy、Matplotlib等,为进行网络数据采集和分析提供了

便利。

本次毕业设计旨在基于Python语言,结合网络爬虫技术和数据分析方法,

实现对酷狗音乐排行榜数据的自动化采集和分析,以期为音乐产业提供有价值

的数据支持和决策参考。通过本次毕业设计的实施,不仅可以提升数据采集的

效率,还可以深入挖掘数据背后的信息和趋势,为音乐市场的洞察和发展提供

科学依据。

1.2开发环境与工具

1.2.1Python简介

Python是一种高级的、动态类型的编程语言,它被设计为易于阅读和编写。

Python的语法简洁明了,使得它易于学习并适合快速开发。Python具有广泛的

应用领域,包括Web开发、数据科学、人工智能、机器学习、网络爬虫、系统

自动化、游戏开发等。

Python是一种解释型语言,它支持多种编程范式,包括面向对象编程和过

程式编程。Python的动态类型特性意味着你不需要预先声明变量的类型。Python

具有强大的标准库和丰富的第三方库,这些库可以帮助你轻松地完成各种任务。

Python的强大之处在于它的社区。Python有一个活跃的开发者社区,它为

Python的使用者提供了大量的资源和支持。你可以在Python的社区中寻找帮

助、分享经验和学习新的技术。

总的来说,Python是一种强大、灵活和易于使用的编程语言,它可以帮助

你实现各种项目和目标。无论你是初学者还是经验丰富的开发者,Python都值

得你学习和使用。

1.2.2Pycharm简介

PyCharm是一种Python的集成开发环境(IDE),专门设计用于帮助开发

者在使用Python语言开发时提高效率。PyCharm带有一整套的工具,包括调试、

语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制

等。

PyCharm有两种版本:专业版和社区版。专业版适用于公司进行专业互联

网开发,需要付费购买激活码才能使用,功能全面。社区版提供给开发者免费

2

湖南商务职业技术学院毕业设计

使用,功能虽然不够全面,但能够满足日常开发需要。

此外,PyCharm还提供了一些高级功能,以支持Django框架下的专业Web

开发。

总的来说,PyCharm是一个强大的IDE,它可以帮助Python开发者更高效

地编写代码,简化开发过程,并支持多种专业开发需求。

1.2.3MySQL简介

MySQL是一个流行的关系型数据库管理系统(RDBMS),使用SQL(结构化

查询语言)作为其主要的数据库查询语言。它由瑞典MySQLAB公司开发,目前

由甲骨文公司(OracleCorporation)负责开发和维护。

MySQL是一个多用户数据库,允许并发地处理多个用户和事务。它提供了

一种安全且可靠的方式来存储、检索、更新和删除数据,使得应用程序可以轻

松地与数据库进行交互。

下面是使用MySQL对爬取到的酷狗音乐网站数据进行管理的基本流程:

(1)安装和配置MySQL数据库:首先,需要在你的计算机上安装MySQL数

据库,并配置好数据库服务器。可以从MySQL官方网站上下载安装包,并按照

安装向导进行安装。

(2)创建数据库和表:在MySQL中,需要创建一个数据库来存储酷狗音乐

网的数据。然后,在该数据库中创建表来定义数据的结构和关系。可以使用MySQL

提供的命令行工具或图形化界面工具来创建数据库和表。

(3)将数据导入MySQL数据库:一旦创建了数据库和表,需要将爬取到的

酷狗音乐网数据导入到MySQL数据库中。可以使用MySQL提供的导入功能或编

程语言中的数据库连接库来实现数据的导入。确保数据正确地插入到相应的表

中。

(4)查询和管理数据:一旦数据被导入到MySQL数据库中,可以使用SQL

查询语言来检索、更新和管理数据。可以编写SELECT语句来查询数据,使用

UPDATE语句来更新数据,以及使用DELETE语句来删除数据。

(5)数据备份和恢复:为了确保数据的安全性,应该定期备份MySQL数据

库。可以使用MySQL提供的备份工具或第三方备份软件来进行备份。在需要恢

复数据时,可以使用备份文件来还原数据库。

总的来说,MySQL是一个强大、可靠且灵活的关系型数据库管理系统,广

泛应用于各种领域和应用程序中。

3

湖南商务职业技术学院毕业设计

2需求分析

2.1可行性需求分析

1、技术可行性

酷狗音乐网站排行榜数据是公开可访问的,可以通过爬虫技术来轻松获取

数据。Python是一个强大的编程语言,广泛用于网络爬虫和数据分析。利用

Python,可以使用各种库(如requests、BeautifulSoup、Scrapy等)来爬取

网页数据。酷狗音乐网站的结构、数据格式和传输方式会影响到数据解析的难

度。如果数据是结构化的,可以使用BeautifulSoup或lxml等库来解析。如果

数据是JSON格式的,可以使用Python内置的json库来解析。爬取到的数据需

要存储起来以便后续分析。Python提供了多种方式来存储数据,如CSV、Excel、

数据库等。选择合适的存储方式取决于具体需求和数据规模。

综上所述,Python爬取酷狗音乐网站排行榜在技术上是可行的。

2、需求可行性

酷狗音乐作为中国人使用较多的音乐播放器之一,通过分析排行榜数据,

可以了解当前流行什么样的音乐,哪些歌手或歌曲最受欢迎。这为音乐产业的

市场趋势分析、音乐制作和发行提供了重要的参考信息。排行榜数据反映了用

户的听歌习惯和喜好。通过分析这些数据,可以深入了解用户的音乐偏好,从

而更好地满足用户需求,优化推荐算法,提升用户体验。

Python拥有大量的库和工具,专门用于数据处理和分析,如Pandas、NumPy、

Matplotlib、Seaborn等,这些库提供了高效的数据结构、统计分析和可视化

功能。Python的数据可视化库如Matplotlib和Seaborn可以创建高质量的图

表和图形,帮助更好地理解和展示数据分析的结果。

综上所述,Python因其强大的数据处理能力、易用性和成本效益而成为分

析酷狗音乐网站排行榜数据的首选语言。

2.2采集目标功能分析

本次毕业设计的数据集来源于酷狗音乐网官网,通过Python技术爬取酷

狗音乐网排行榜的歌曲信息。经数据清洗后共留有500条记录,爬取完成后重

复检查数据的准确性,确定爬取出来的数据无误,并且属于酷狗音乐网酷狗排

行榜歌曲信息。

4

湖南商务职业技术学院毕业设计

分析酷狗音乐网站网页信息,明确本次毕业设计需要爬取的参数有酷狗音

乐排行榜列表数据,包括歌曲名称、歌手等数据,在对原始数据进行预处理后,

再对其数据进行多个维度的分析。例如,按歌曲名称进行统计,绘制词云图再

对比哪些词出现的频率较高。通过对歌手进行排名,统计各个歌手在排行榜上

的歌曲数量,再进行排名等。并提供数据可视化功能,将各项统计数据以图表

等形式展示,方便用户进行数据分析和比较。

2.3关键技术分析

2.3.1网络爬虫技术

网络爬虫技术,又称网页爬取技术,是指使用自动化程序模拟人类浏览网

页的行为,从互联网上获取信息并提取有价值数据的过程。网络爬虫是搜索引

擎、数据分析、网络监测等领域的重要组成部分。

本次毕业设计将详细介绍网络爬虫技术,包括它的基本原理、爬虫的分类、

爬虫的基本流程、爬虫的应用以及爬虫的局限性。

(1)基本原理:

网络爬虫通过发送HTTP请求访问网页,接收服务器返回的HTML、XML或

JSON等格式的响应数据。解析这些数据,提取出有价值的信息,如文本内容、

图片链接、视频地址等。获取网页中的链接,制定策略继续访问其他网页,实

现数据的规模化采集。

(2)爬虫的分类:

通用爬虫:如搜索引擎爬虫,广泛地爬取网页,用于构建搜索引擎的索引

库。

聚焦爬虫:针对特定主题或网站进行深度爬取,获取详细和深入的信息。

增量式爬虫:只爬取网站更新或新增的部分,提高爬取效率。

(3)爬虫的基本流程:

选择目标:确定要爬取的网站和目标数据。

发送请求:使用HTTP客户端向目标网页发送请求,获取网页内容。

解析数据:对获取的网页内容进行解析,提取有用信息。

存储数据:将提取的数据存储到本地文件、数据库或其他存储系统。

(4)爬虫的应用:

爬虫技术的应用非常广泛,随着互联网的不断发展和数据量的爆炸性增长,

爬虫技术在各个领域的需求也在不断增加。如:搜索引擎:搜索引擎如百度、谷

5

湖南商务职业技术学院毕业设计

歌、必应等使用爬虫技术来索引互联网上的网页,以便用户能够通过搜索查询

到相关信息。电子商务:价格比较网站使用爬虫技术抓取不同电商平台上的商

品价格和详情,帮助用户做出购买决策。市场研究:企业使用爬虫技术收集竞

争对手的信息,如产品介绍、价格策略、用户评价等,以优化自身的市场定位。

(5)爬虫的局限性:

爬虫技术虽然强大,但也存在一些局限性,主要包括:

反爬虫策略:许多网站为了保护自己的数据和服务,会采取反爬虫措施,

如IP封禁、动态页面加载、验证码、限制User-Agent等,这些都可能限制爬

虫的正常工作。

隐私和安全问题:爬虫抓取的数据可能包含用户的隐私信息,如果没有采

取适当的措施保护这些信息,可能会引发隐私和安全问题。

因此,在使用爬虫技术时,需要充分考虑这些局限性,并采取相应的措施

来避免或解决这些问题。

2.3.2文件存取技术

Python中的文件处理技术是指利用Python语言进行文件的读写、管理和

操作。它可以帮助开发者更加有效地处理文件,提高工作效率。Python中文件

存取技术主要包括文件的打开、读取、写入和关闭等基本操作。

2.3.3可视化技术

可视化技术是指将数据或信息转换为图形、图像或其他可视化形式的技术,

以便更容易理解和分析。在计算机科学和信息技术领域,可视化技术广泛应用

于数据分析、科学计算、设计、工程、教育等多个方面。

(1)可视化技术的定义

可视化技术是一种将数据、信息或知识转化为可视化形式(如图形、图像、

动画等)的方法和工具,以便更容易被人类感知、理解和交流。这种技术的目

的是通过视觉表示来增强信息的传递效率,使得复杂或抽象的概念更直观、更

易于分析和管理。

(2)可视化技术的作用

可视化技术可以将复杂的数据和信息转化为图表、图形、地图等形式,使

人们更容易理解和分析。可视化技术可以用图形和图表来表达复杂的信息和数

据,使得沟通更加清晰和有效。更快地获取和理解数据,从而更快速地做出决

策。这对于商业、金融、医疗等领域来说非常重要,因为这些领域需要快速、

6

湖南商务职业技术学院毕业设计

准确地做出决策。

(3)可视化技术的分类

可视化技术可以按照不同的标准进行分类。以下是一些常见的分类方式:

(1)按照呈现方式分类:数字图像(照片、视频)、信息图表(柱状图、

饼图)、空间(三维图形、虚拟现实技术)。

(2)按照处理对象及目的分类:科学计算可视化、数据可视化、信息可视

化、知识可视化。

可视化技术的流程可以概括为以下几个步骤:

(1)需求分析:明确可视化的目标、受众、数据来源以及需要呈现的关键

信息。

(2)数据收集与预处理:从各种来源收集大数据,并对数据进行清洗、整

合和格式化,以确保数据质量和一致性。

(3)数据探索与分析:通过统计分析和数据挖掘技术,探索数据中的模式、

趋势和关联,确定哪些信息对于可视化是关键的。

(4)选择合适的可视化工具:根据需求和技能水平,选择适合的可视化工

具或平台。

(5)设计可视化方案:根据分析结果和受众需求,设计可视化的布局、色

彩、交互方式等。

(6)实现可视化:使用所选工具,将数据和设计转化为具体的可视化图表、

图形或动画。

(7)测试与优化:对可视化结果进行测试,确保信息呈现准确、清晰。根

据反馈和需求进行必要的优化和调整。

(8)发布与分享:将可视化结果发布到适当的平台或工具上,与团队成员、

利益相关者或公众分享,以促进数据驱动的决策和沟通。

(9)持续监控与更新:随着数据的更新和变化,持续监控可视化的效果,

并根据需要进行更新和维护。

这个流程强调了从需求分析到数据收集、处理、分析、可视化和分享的全

过程,确保大数据能够有效地转化为有价值的信息,并通过可视化方式呈现给

用户。在可视化中,特别需要注意数据的预处理和性能优化步骤,因为大数据

的处理和可视化可能会对计算资源和性能提出更高的要求。此外,由于大数据

的动态性和变化性,可视化解决方案需要能够适应数据的实时更新和变化。

7

湖南商务职业技术学院毕业设计

3数据采集

3.1采集页面分析

首先通过浏览器搜索酷狗音乐的官方网页,然后找到然后在榜单中找到酷

狗TOP500榜单,如图3-1所示,其中URL为:

/yy/rank/home/1-8888.html?from=rank。浏览发现网

页并无翻页按钮,一个页面只显示22首歌,但观察url可以尝试把1-8888中

的1替换成2,再进行浏览,恰好返回的是第二页的信息。如图3-2所示,经

过多次尝试,发现更换不同的数字,即跳转不同的页面,因此只需要更改hone/

后面的数字即可,由于每页只显示22条信息,所以抓取前500总共需要23个

页面。

图3-1数据网址页面

8

湖南商务职业技术学院毕业设计

图3-2网址页面第二页

按F12调出开发者工具,刷新页面,如图3-3。

图3-3开发者工具

利用全局搜索工具定位所需数据位置,点击开发者工具上面的Headers字

段,发现这个是一个GET请求,使用request库中的get函数即可爬取数据。

9

湖南商务职业技术学院毕业设计

3.2字段分析

首先来到酷狗音乐网页面按F12调出开发者工具,然后点击元素选择器按

钮再点击所需要的数据就会定位到所需要的数据在网页中的位置,如图3-4所

示。可以使用request方法中的get函数来获取网页中的数据,最原始的数据格

式是呈现html网页格式的,所以需要清洗数据然后依次写入到csv格式的文件

当中。

图3-4分析数据类型页面图

3.3编程实现

使用import导入所需库,Requests库用于请求网页获取网页数据,

BeautifulSoup库用于解析网页数据,time库的sleep()方法可以让程序暂停。

代码实现如下:

importrequests

frombs4importBeautifulSoup

importtime

importcsv

如果导入的库标红可能有几种原因:

(1)没有安装或没有正确安装需要导入的库,需使用pip工具正确的安装

所需要导入的库。

(2)库的名字没有拼写正确,安装库时需要仔细检查拼写是否正确。

(3)环境配置问题。

通过浏览器的开发者工具,复制请求头,用于伪装为浏览器,模拟浏览器

10

湖南商务职业技术学院毕业设计

发送请求,防止被网站封禁,便于爬虫的稳定性。代码实现如下:

headers={

'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,

likeGecko)Chrome/56.0.2924.87Safari/537.36'

}

以上完成后,就可以编写代码爬取酷狗音乐网站排行榜了,代码实现如下:

#导入相应库

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=[]

#定义获取信息函数

defget_info(url):

#通过请求头和url链接,得到整体网页页面信息

wb_data=requests.get(url,headers=headers)

#对返回的结果进行解析

soup=BeautifulSoup(wb_data.text,'lxml')

#找到具体的相同的数据的内容位置和内容

ranks=soup.select('span.pc_temp_num')

titles=soup.select('.pc_temp_songname')

times=soup.select('.pc_temp_time')

#获取具体的文字内容

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],

'时长':times.get_text().strip().replace('\n','').replace('\t','').replace('\r','')

}

csv_data.append(data)

print(data)

if__name__=='__main__':

11

湖南商务职业技术学院毕业设计

urls=['/yy/rank/home/{}-8888.html'.format(str(i))foriinrange(1,

24)]

#构造要爬取的页面地址列表

forurlinurls:

get_info(url)

time.sleep(1)

#将链接保存到CSV文件

withopen('kugou_top500.csv','w',newline="",encoding='utf-8')ascsvfile:

#定义CSV文件的列名

fieldnames=["排名","歌手","歌名","时长"]

#创建一个CSV文件写入器

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

#写入CSV文件的列名

writer.writeheader()

#将链接数据写入CSV文件

writer.writerows(csv_data)

上述代码使用requests.get()函数发送GET请求获取网页HTML内容,并

使用BeautifulSoup模块解析HTML,通过CSS选择定位器定位到歌曲排名、歌

手、歌名、时长等元素打包成一个迭代器,然后通过循环遍历,将每个信息存

储到data字典中。使用if__name==’__main__’:判断当前文件是否被直接执

行。使用列表推导式构造一个包含要爬取的页面地址的列表,然后使用for循

环遍历页面地址列表,并调用get_info()函数获取每个页面的信息,最后使用

time.sleep()函数控制爬虫的速度。通过csv模块将列表中的数据保存到一个

csv文件中。最后使用csv模块读取保存的csv文件,并将数据输出到控制

台上。

4数据清洗与处理

获得庞大的数据集之后需要对数据进行预处理,也就是所谓的清洗和检查,

确定爬取过来的数据是否存在无效值和确实值,要保证数据的一致性,这个对于

信息质量的评估是一项很重要的任务。不仅如此,需要将数据进行有理化和有序

化,这样子能够在数据调用共享过程中方便很多开发人员对数据信息的使用。

本次项目中需要将爬下来的数据和网页原数据进行比对,并且检查是否出

现空值、错值,还有数据的位置是否正确。根据不同的需求要对数据进行不同的

处理。

12

湖南商务职业技术学院毕业设计

4.1数据清洗

数据清洗在数据分析过程中起着至关重要的作用。它有助于提高数据质量、

去除噪声和冗余信息、便于数据分析和建模。通过使用Python进行数据清洗,

用户可以更好地理解和使用数据,从而做出更准确和可靠的决策。数据清洗的

主要目的是确保数据的质量和准确性,通过预处理原始数据来识别和修正数据

集中的各种问题,如不准确、不完整、重复、有误或非法的记录。

将CSV文件通过pandas导入Python中并输出,如图4-1所示:

图4-1数据清洗准备页面

经过比对和检查,发现数据不存在缺失,错位还有空值,那么根据需求将有

效数据统一规划去掉不要的行列数据,防止数据冗余。因此只需保留需要的数据,

然后整理为原网页格式存入kugou_top.csv文件中,留存后续作为统计分析、可

视化使用。如图4-2所示:

13

湖南商务职业技术学院毕业设计

图4-2数据清洗完成页面

4.2数据储存

数据储存得方法有很多种,常见得可以直接用记事本格式储存(txt),或者

直接用其他文件的形式储存csv、excel、json等,但是以上方法保存的数据体

量普遍都比较小。如果需要储存较大的数据信息就需要用到的数据库,数据库也

分为关系型和非关系型数据库。关系型数据库比较典型的有MySQL和Oracle等,

非关系型数据库等以键值对形式储存数据的代表有Mongodb、Redis等。本次用

到的是csv、MySQL。

CSV文件是纯文本格式,易于理解和创建几乎可以与所有主要的数据处理

工具和编程语言兼容。在编程中,CSV文件的读取和写入通常很简单,Python

的csv模块提供了处理CSV文件的便捷方式。但是CSV文件也有局限性,比如

不适合存储大量数据,不支持复杂的数据结构(如嵌套数据或多个表之间的关

系)、以及缺少数据类型信息。对于小规模数据,csv文件是一种不错的选择,

可以利用Python将数据写入csv中。代码实现如下:

#文件存储

withopen('kugou_top500.csv','w',newline="",encoding='utf-8')ascsvfile:

#定义CSV文件的列名

fieldnames=["排名","歌手","歌名","时长"]

#创建一个CSV文件写入器

writer=csv.DictWriter(csvfile,fieldnames=fieldnames)

#写入CSV文件的列名

14

湖南商务职业技术学院毕业设计

writer.writeheader()

#将链接数据写入CSV文件

writer.writerows(csv_data)

而对于大规模数据和需要频繁操作的应用,则建议使用MySQL数据库,

MySQL是一个成熟和广泛使用的数据库管理系统,拥有稳定和可靠的性能记录。

通过Navicat连接MySQL数据库,再将数据导入到MySQL数据库中。如图

4-3所示:

图4-3数据存储MySQL页面

4.3编程实现

接下来需要将csv文件保存到MySQL数据库当中。先创建一个名为

"kugou"的数据库,然后进入该数据库,创建一个名为"test"的数据表,该数据

表包含了3个字段:歌手、歌名和时长。接着将导入设置local_infile开

启,再使用loaddata命令将一个名为"kugou_top500.csv"的本地文件中的数

据导入到test表中,数据以逗号分隔,每行以回车换行符结束,忽略第一行。

最后,使用select命令查询test表中的前10行数据,验证存入数据是否

正确。具体实现步骤如下:

创建数据库,设置字符集为“utf8”。

15

湖南商务职业技术学院毕业设计

图4-4创建数据库图

创建数据表,设置4个字符型变量:排名、歌手、歌名、时长。

图4-5创建数据表图

16

湖南商务职业技术学院毕业设计

在MySQL中,如果想要导入一个包含大量数据的文件到数据库中,可以使

用LOADDATAINFILE命令,以便快速地将数据导入到指定的数据表中。但是,

默认情况下,MySQL禁用了LOADDATAINFILE命令。为了能够正常使用该命

令,需要先修改MySQL配置文件,开启local_infile选项。

图4-6导入设置local_infile开启图

接下来就要用loaddata函数导入本地kugou_top500.csv表格数据了,

如图4-7所示,是一种常见的在MySQL数据库中导入csv文件的方法,该函

数可以将csv文件的数据加载到MySQL表中。在使用loaddata函数导入数

据时,需要指定csv文件的路径、MySQL表的名称以及数据列的顺序和类型。

其中,'kugou_top500.csv'为要导入的数据文件路径,test为要导入数据的目

标数据表名,fieldsterminatedby','表示数据文件中的字段是用逗号分隔

的,linesterminatedby'\r\n'表示数据文件中的行是用换行符分隔的。

图4-7导入数据图

最后,验证存入数据是否正确,如图4-8所示:

17

湖南商务职业技术学院毕业设计

图4-8验证数据图

5数据统计与分析

5.1数据准备

首先导入相关库,再使用pymysql模块输入主机名、用户名、密码和数据

库名等参数来建立MySQL数据库连接。接下来,需要创建一个游标对象

cursor,用于执行SQL语句和获取查询结果。然后可以定义一个查询语句,查

询test表中的所有数据。

查询完成后,使用cursor.execute()函数将查询语句传递给MySQL数据

库,并执行查询操作。再使用cursor.fetchall()获取查询结果,接着创建一

个新的csv文件,并将数据写入到文件中。最后关闭cursor和mydb连接,

释放资源,如图5-1所示。

18

湖南商务职业技术学院毕业设计

图5-1数据展示页面图

5.2数据展示

5.2.1依据歌曲名进行统计

读取kugou_top500.csv文件后,使用Pandas库将其转换为DataFrame

对象。指定中文字体,然后读取包含文本数据的DataFrame,将所有文本数据

连接成一个字符串,将浮点数转换为字符串,然后生成词云图。代码实现如下:

importpandasaspd

fromwordcloudimportWordCloud

importmatplotlib.pyplotasplt

frommatplotlib.font_managerimportFontProperties

#指定中文字体

font=FontProperties(fname="C:/Windows/Fonts/STFANGSO.TTF")

#获取字体文件路径

font_path=font.get_file()

#读取包含文本数据的DataFrame

df=pd.read_csv('kugou_top500.csv')#替换成你的数据文件

19

湖南商务职业技术学院毕业设计

#将所有文本数据连接成一个字符串,将浮点数转换为字符串

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()

然后得到一张由歌曲名进行统计后可视化的词云图,如图5-2所示:

图5-2歌曲名词云图

在图5-2可以看出Live出现频率最高,Live音乐,即现场版的音乐,Live

作为歌曲后缀出现,通常表示现场版,出现频率最高说明相对于录音室版大多

数酷狗音乐听众用户喜欢Live音乐。之所以受大多数听众喜爱是因为:Live

音乐是在现场实时演奏或演唱的,因此它能够给听众带来最真实、最生动的音

乐体验。听众可以感受到现场的氛围,听到未经后期制作的原始声音,感受到

音乐的力量和情感。由于Live音乐是在现场录制的,因此它可能会包含一些独

特的音效和现场氛围的元素,如观众的欢呼声、现场的环境音等。这些元素使

得Live音乐具有独特的听觉体验,让人仿佛置身于现场之中。综上所述,Live

音乐以其真实性、生动性、即兴性、情感共鸣和曲目选择的灵活性等特点,为

20

湖南商务职业技术学院毕业设计

听众带来了独特的音乐体验。

此外,Explicit、Love和Version出现频率也较高。Explict在词典上的

含义是“直言的、清晰的、毫不避讳的”,在歌名上大多作为后缀存在。这个

单词的出现意味着这首歌有些“露骨”,即歌词中含有限制级的粗口,表示这

首歌是未删减版本。一些听众可能更喜欢原始、未经删减的歌曲版本,认为这

样更能体验到歌曲的真实情感和原始魅力。而歌名出现Love表明大多数听众喜

爱情歌,出现Version则表示该歌曲是某个原始歌曲不同的版本或改编版本,

这些版本可能在风格、演奏方式、混音,歌词或其他方面与原始歌曲有所不同。

可以为听众提供不同的听觉体验。

5.2.2依据歌手进行统计

读取kugou_top500.csv文件后,使用Pandas库将其转换为DataFrame

对象。然后从DataFrame对象中提取“歌手”列的数据,并传递给topTenSongs

函数。数据经过统计和整理后,调用matplotlib库生成柱状图,并在屏幕上

显示。代码显示如下:

importpandasaspd

importnumpyasnp

importmatplotlib.pyplotasplt

fromwordcloudimportWordCloud

#正常显示中文

plt.rcParams['font.sans-serif']=['SimHei']

#正常显示负号

plt.rcParams['axes.unicode_minus']=False

#上榜歌曲数量前十歌手

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

湖南商务职业技术学院毕业设计

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())

#柱子上的数字显示

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('歌曲数量')

plt.title('上榜歌曲数量前十歌手')

plt.show()

if__name__=='__main__':

df=pd.read_csv("kugou_top500.csv",encoding='utf-8',names=['排名','歌手','歌名','时长

'])

data=pd.DataFrame(data=df,dtype=str)

topTenSongs(data['歌手'])

通过上述代码,将在表格中歌手名称的字段数据进行汇总和处理然后统计

其出现的次数,最后生成字典,再通过字典里的数据生成一张依据上榜歌曲数

量进行统计后可视化的柱状图,如图5-3所示。

22

湖南商务职业技术学院毕业设计

图5-3上榜歌曲数量前十歌手条形图

从图5-3中可以看出周杰伦以29首上榜最多,林俊杰以15首排在第

二,邓紫棋以13首排第三。这三位歌手都是华语乐坛极具才华和创作实力的

音乐人。他们各自拥有独特的音乐风格和出色的创作才华,能够创作出符合大

众喜好的音乐作品。他们的音乐作品旋律动听、歌词深刻,深受听众喜爱。周

杰伦、林俊杰、邓紫棋的歌曲风格各异,能够满足不同口味和年龄段的听众需

求。他们的音乐作品既有经典老歌,也有新颖流行的歌曲,吸引了广泛的受众

基础。这使得他们的歌曲在排行榜上持续保持高人气和影响力。

由此可以看出,从前的乐坛老将比现在的年轻歌手更受听众喜爱。因为因

为他们具备出色的音乐才华和创作实力。多年的音乐创作和表演经验使得他们

的音乐作品更具深度和魅力,能够满足广大听众的需求。他们作品经过时间的

沉淀和考验,逐渐形成了良好的口碑和影响力。他们的音乐作品不仅旋律优美、

歌词深刻,而且在音乐风格、文化内涵等方面都具有较高的品质。在成熟的音

乐市场中,听众对于音乐作品的品质要求更高,更注重音乐作品的内涵和深度。

23

湖南商务职业技术学院毕业设计

5.2.3依据歌曲时长进行统计

读取kugou_top500.csv文件后,使用Pandas库将其转换为DataFrame

对象。然后从DataFrame对象中提取“时长”列的数据,并传递给Bar函数。

数据经过统计和整理后,调用matplotlib库生成柱状图,并在屏幕上显示。

代码显示如下:

importpandasaspd

importnumpyasnp

importmatplotlib.pyplotasplt

fromwordcloudimportWordCloud

#正常显示中文

plt.rcParams['font.sans-serif']=['SimHei']

#正常显示负号

plt.rcParams['axes.unicode_minus']=False

#歌曲时长区间分布

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)

#柱子上的数字显示

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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论