数据分析入门:用Python和Numpy探索音乐流行趋势
一、引言
音乐是文化的重要组成部分,而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单,我们可以了解哪些歌曲或歌手正在受到大众的欢迎,甚至预测未来的流行趋势。Python作为一种强大的编程语言,结合其丰富的库,如Numpy,使得数据分析变得更加简单和高效。
Python与Numpy简介
Python是一种广泛使用的高级编程语言,以其清晰的语法和代码可读性而闻名。Numpy是一个开源的Python科学计算库,提供了强大的多维数组对象和相应的操作,是进行数据分析和科学计算的基础工具。
数据收集
在开始数据分析之前,我们需要收集相关的数据。音乐流行趋势的数据可以从多个来源获取,例如音乐流媒体服务的API、公开的音乐排行榜数据等。为了简化示例,我们将使用一个假设的音乐排行榜数据集。
数据获取
首先,我们需要从网易云音乐获取新歌榜的数据。这里我们使用Python的requests
库来发送HTTP请求,并使用beautifulsoup4
来解析返回的HTML页面。
import requests
from bs4 import BeautifulSoup# 代理服务器配置
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"# 构建代理字典
proxies = {'http': f'http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}','https': f'https://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}'
}def fetch_music_data(url):# 使用代理发送请求response = requests.get(url, proxies=proxies)soup = BeautifulSoup(response.text, 'html.parser')music_list = []for item in soup.find_all('li', class_='song-item'):song = {'title': item.find('span', class_='song-name').text.strip(),'artist': item.find('span', class_='singer-name').text.strip(),'rank': int(item.find('span', class_='index').text.strip())}music_list.append(song)return music_listurl = 'https://music.163.com/discover/rank/#/discover/toplist'
music_data = fetch_music_data(url)# 打印获取的数据
for song in music_data:print(f"Title: {song['title']}, Artist: {song['artist']}, Rank: {song['rank']}")
数据预处理
数据预处理是数据分析中的重要步骤,包括清洗数据、处理缺失值、数据类型转换等。以下是一个简单的数据预处理示例:
python
import numpy as np# 假设的数据集,包含歌曲名、排名和播放次数
data = np.array([["Song A", 1, 1000],["Song B", 2, 950],["Song C", 3, 900],# 更多数据...
])# 将排名转换为整数类型
data[:, 1] = data[:, 1].astype(int)
# 将播放次数转换为浮点数类型
data[:, 2] = data[:, 2].astype(float)
数据探索
在数据预处理之后,我们可以进行数据探索,以了解数据的基本特征和趋势。例如,我们可以计算平均播放次数,或者找出排名最高的歌曲。
import requests
from bs4 import BeautifulSoupdef fetch_music_data(url):response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')music_list = []for item in soup.find_all('li', class_='song-item'):song = {'title': item.find('span', class_='song-name').text.strip(),'artist': item.find('span', class_='singer-name').text.strip(),'rank': int(item.find('span', class_='index').text.strip())}music_list.append(song)return music_listurl = 'https://music.163.com/discover/rank/#/discover/toplist'
music_data = fetch_music_data(url)
数据可视化
数据可视化是理解数据和传达分析结果的重要手段。我们可以使用matplotlib库来创建图表。
python
import matplotlib.pyplot as plt# 绘制排名与播放次数的关系图
plt.figure(figsize=(10, 6))
plt.scatter(data[:, 1], data[:, 2], color='blue')
plt.title('Song Ranking vs Plays')
plt.xlabel('Ranking')
plt.ylabel('Plays')
plt.grid(True)
plt.show()
趋势分析
趋势分析可以帮助我们了解音乐流行趋势随时间的变化。假设我们有一段时间内的音乐数据,我们可以使用以下方法来分析趋势:
python
# 假设有一段时间序列的数据
time_series_data = np.array([["2024-01", "Song A", 1000],["2024-02", "Song A", 1100],# 更多时间序列数据...
])# 提取时间序列并排序
time_series_data = time_series_data[np.argsort(time_series_data[:, 0])]# 计算每月的播放次数变化
plays_change = time_series_data[:, 2] - time_series_data[:, 2][::-1]# 绘制时间序列图
plt.figure(figsize=(12, 6))
plt.plot(time_series_data[:, 0], plays_change, marker='o', linestyle='-')
plt.title('Plays Change Over Time')
plt.xlabel('Time')
plt.ylabel('Change in Plays')
plt.grid(True)
plt.show()
结论
通过上述步骤,我们使用Python和Numpy对音乐流行趋势进行了基本的数据分析。从数据预处理到数据探索,再到数据可视化和趋势分析,我们不仅了解了如何操作数据,还学会了如何通过图表来直观地展示分析结果。
相关文章:
数据分析入门:用Python和Numpy探索音乐流行趋势
一、引言 音乐是文化的重要组成部分,而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单,我们可以了解哪些歌曲或歌手正在受到大众的欢迎,甚至预测未来的流行趋势。Python作为一种强大的编程语言,结合其丰…...
数仓工具—Hive语法之替换函数和示例
Hive 替换函数和示例 默认情况下,并没有可用的 Hive 替换函数。如果在处理字符串时需要替换特定值,例如垃圾值,字符串操作函数替换是非常需要的。在本文中,我们将检查 Hive 替换函数 的替代方法,以便在需要时使用。 如前所述,Apache Hive 不提供替换函数的支持。但是,…...
[SUCTF 2019]EasySQL1
这是一个简单的SQL注入题,但是因为我的SQL基础约等于0,所以做起来很难。 首先试试引号是否被过滤 可以看到单引号、双引号都被过滤了,试试其他的盲注都不行,基本上可以确定不能用这种方法。 在测试的过程中发现,输入…...
elasticsearch, kibana, 6.8.18 版本下的创建索引,指定timestamp,java CRUD,maven版本等
ELK 这一套的版本更迭很快, 而且es常有不兼容的东西出现, 经常是搜一篇文章,看似能用,拿到我这边就不能用了。 很是烦恼。 我这边的ELK版本目前是 6.8.18,这次的操作记录一下。 (涉密内容略有删改…...
无人机侦察:二维机扫雷达探测设备技术详解
二维机扫雷达探测设备采用机械扫描方式,通过天线在水平方向和垂直方向上的转动,实现对目标空域的全方位扫描。雷达发射机发射电磁波信号,遇到目标后产生反射,反射信号被雷达接收机接收并处理,进而得到目标的位置、速度…...
未来互联网的新篇章:深度解析Web3技术
随着技术的飞速发展,Web3作为新一代互联网技术范式,正在重新定义我们对互联网的认知和使用方式。本文将深入探讨Web3技术的核心概念、关键特征以及其在未来互联网发展中的潜力和影响,为读者打开Web3时代的大门。 Web3技术的核心概念和特征 1…...
vst 算法R语言手工实现 | Seurat4 筛选高变基因的算法
1. vst算法描述 (1)为什么需要矫正 image source: https://ouyanglab.com/singlecell/basic.html In this panel, we observe that there is a very strong positive relationship between a gene’s average expression and its observed variance. I…...
阿里通义千问大模型Qwen2-72B-Instruct通用能力登顶国内第一!
前言: 中国互联网协会副秘书长裴玮近日在2024中国互联网大会上发布《中国互联网发展报告(2024)》。《报告》指出, 在人工智能领域,2023年我国人工智能产业应用进程持续推进,核心产业规模达到5784亿元。 截至2024年3月ÿ…...
CH04_依赖项属性
第4章:依赖项属性 本章目标 理解依赖项属性理解属性验证 依赖项属性 属性与事件是.NET抽象模型的核心部分。WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制…...
CentOS 7开启SSH连接
1. 安装openssh-server 1.1 检查是否安装openssh-server服务 yum list installed | grep openssh-server如果有显示内容,则已安装跳过安装步骤,否则进行第2步 1.2 安装openssh-server yum install openssh-server2. 开启SSH 22监听端口 2.1 打开ssh…...
代理伺服器分類詳解
代理伺服器的主要分類 代理伺服器可以根據不同的標準進行分類。以下是幾種常見的分類方式: 按協議分類按匿名性分類按使用場景分類 1. 按協議分類 根據支持的協議類型,代理伺服器可以分為以下幾類: HTTP代理:專門用於處理HTT…...
计数,桶与基数排序
目录 一. 计数排序 概念 步骤思路如下 实现代码如下 时间复杂度与空间复杂度 1. 时间复杂度 2. 空间复杂度 计数排序的特点 二. 桶排序 概念 步骤思路如下 实现代码如下 时间复杂度与空间复杂度 1. 时间复杂度 2. 空间复杂度 桶排序的特点 三. 基数排序 概念 步…...
unity渲染人物模型透明度问题
问题1:有独立的手和衣服的模型,但最终只渲染出来半透明衣服 问题2:透明度贴图是正确的但显示却不正确 这上面两个模型的问题都是因为人物模型是一个完整的,为啥有些地方可以正常显示,有些地方透明度却有问题。 其中…...
CH03_布局
第3章:布局 本章目标 理解布局的原则理解布局的过程理解布局的容器掌握各类布局容器的运用 理解 WPF 中的布局 WPF 布局原则 WPF 窗口只能包含单个元素。为在WPF 窗口中放置多个元素并创建更贴近实用的用户男面,需要在窗口上放置一个容器&#x…...
【Oracle】Oracle中的merge into
目录 解释使用场景语法示例案例一案例二 MERGE INTO的优缺点优点:缺点: 注意事项附:Oracle中的MERGE INTO实现的效果,如果改为用MySQL应该怎么实现注意 解释 在Oracle数据库中,MERGE INTO是一种用于对表进行合并&…...
【论文阅读笔记】In Search of an Understandable Consensus Algorithm (Extended Version)
1 介绍 分布式一致性共识算法指的是在分布式系统中,使得所有节点对同一份数据的认知能够达成共识的算法。且算法允许所有节点像一个整体一样工作,即使其中一些节点出现故障也能够继续工作。之前的大部分一致性算法实现都是基于Paxos,但Paxos…...
CentOS 7 网络配置
如想了解请查看 虚拟机安装CentOS7 第一步:查看虚拟机网络编辑器、查看NAT设置 (子网ID,网关IP) 第二步:配置VMnet8 IP与DNS 注意事项:子网掩码与默认网关与 第一步 保持一致 第三步:网络配置…...
2024 React 和 Vue 的生态工具
react Vue...
AI学习指南机器学习篇-t-SNE模型应用与Python实践
AI学习指南机器学习篇-t-SNE模型应用与Python实践 在机器学习领域,数据的可视化是非常重要的,因为它可以帮助我们更好地理解数据的结构和特征。而t-SNE(t-distributed Stochastic Neighbor Embedding)是一种非常强大的降维和可视…...
小试牛刀-Telebot区块链游戏机器人
目录 1.编写目的 2.实现功能 2.1 Wallet功能 2.2 游戏功能 2.3 提出功能 2.4 辅助功能 3.功能实现详解 3.1 wallet功能 3.2 游戏功能 3.3 提出功能 3.4 辅助功能 4.测试视频 Welcome to Code Blocks blog 本篇文章主要介绍了 [Telebot区块链游戏机器人] ❤博主…...
使用github actions构建多平台electron应用
1. 创建electron项目 使用pnpm创建项目 pnpm create quick-start/electron 2. 修改electron-builder.yml文件 修改mac的target mac:target:- target: dmgarch: universal 3. 添加workflow 创建 .github/workflows/main.yml 文件 name: Build/release Electron appon:work…...
java通过pdf-box插件完成对pdf文件中图片/文字的替换
需要引入的Maven依赖: <!-- pdf替换图片 --><dependency><groupId>e-iceblue</groupId><artifactId>spire.pdf.free</artifactId><version>5.1.0</version></dependency> java代码: public AjaxResult replacepd…...
鸿蒙 next 5.0 版本页面跳转传参 接受参数 ,,接受的时候 要先定义接受参数的类型, 代码可以直接CV使用 [教程]
1, 先看效果 2, 先准备好两个页面 index 页面 传递参数 import router from ohos.routerEntry Component struct Index {Statelist: string[] [星期一, 星期二,星期三, 星期四,星期五]StateactiveIndex: number 0build() {Row() {Column({ space: 10 }) {ForEach(this.list,…...
【electron6】浏览器实时播放PCM数据
pcm介绍:PCM(Puls Code Modulation)全称脉码调制录音,PCM录音就是将声音的模拟信号表示成0,1标识的数字信号,未经任何编码和压缩处理,所以可以认为PCM是未经压缩的音频原始格式。PCM格式文件中不包含头部信…...
嵌入式C/C++、FreeRTOS、STM32F407VGT6和TCP:智能家居安防系统的全流程介绍(代码示例)
1. 项目概述 随着物联网技术的快速发展,智能家居安防系统越来越受到人们的重视。本文介绍了一种基于STM32单片机的嵌入式安防中控系统的设计与实现方案。该系统集成了多种传感器,实现了实时监控、报警和远程控制等功能,为用户提供了一个安全、可靠的家居安防解决方案。 1.1 系…...
【Django】django自带后台管理系统样式错乱,uwsgi启动css格式消失的问题
正常情况: ERROR:(css、js文件加载失败) 问题:CSS加载的样式没有了,原因:使用了django自带的admin,在使用 python manage.py runserver启动 的时候,可以加载到admin的文…...
解决npm install(‘proxy‘ config is set properly. See: ‘npm help config‘)失败问题
摘要 重装电脑系统后,使用npm install初始化项目依赖失败了,错误提示:‘proxy’ config is set properly…,具体的错误提示如下图所示: 解决方案 经过报错信息查询解决办法,最终找到了两个比较好的方案&a…...
汽车及零部件研发项目管理系统:一汽东机工选择奥博思 PowerProject 提升研发项目管理效率
在汽车行业中,汽车零部件的研发和生产是一个关键的环节。随着汽车市场的不断扩大和消费者需求的不断增加,汽车零部件项目管理的重要性日益凸显。通过有效的项目管理方法及利用先进的数字项目管理系统,可以大幅提高项目的成功率和顺利度&#…...
Keil开发IDE
Keil开发IDE 简述Keil C51Keil ARMMDK DFP安装 简述 Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公…...
数据结构与算法05堆|建堆|Top-k问题
一、堆 1、堆的介绍 堆(heap)是一种满足特定的条件的完全二叉树,主要可以分为大根堆和小根堆。 大根堆(max heap):任意节点的值大于等于其子节点的值。小根堆(min heap)࿱…...
开展农业信息网站建设工作总结/营销策略分析
if (process.env.NODE_ENV "development"){// 开发环境 } if(process.env.NODE_ENV "production"){// 线上环境 }...
南宁网站建设智能优化/域名免费注册0元注册
一.需求 前端需要它想要的数据格式: 原有的数据格式: 二.定制化: 1.可以嵌套序列化pol_type,lit_des,area_detail,但结构如下: class ChrDetailSerializer(serializers.ModelSerializer):"""…...
上海建设网站找哪家/爱站网关键词工具
题库来源:安全生产模拟考试一点通公众号小程序 N1叉车司机考试总结考前必练!安全生产模拟考试一点通每个月更新N1叉车司机模拟考试题库题目及答案!多做几遍,其实通过N1叉车司机复审模拟考试很简单。 1、【多选题】汽油的主要成分…...
网站开发知识体系/seo推广专员招聘
踩着椭圆的轨迹,绕着我的心在转,这个时候发觉得,在三万六千公里的高度仰望星空和地面上是一样的。星星在闪,我在转圈,迷失的迭荡,惆怅的弧度。 牛顿的万有引力也计可以描述我和你的关系,开普勒三…...
东莞华商网络/aso优化的主要内容为
随着三维激光扫描技术的发展,目前可以采集到海量的点云数据。 点云数据中本身仅仅包含多个点数据,对于较小规模的点云数据,只需要依次使用面或者点等方式将其全部渲染出来。但是面对较大数据量的点云,就需要考虑许多随之而来的问题: 1)内存限制:以基于 V8 引擎为例,32…...
网站开发工程师培训班/免费seo视频教程
在vc下调试activex控件.出现了First-chance exception in xxx.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C Exception.异常. 实际上在vc下一般利用TSTCON32.EXE调试控件.目前我的程序底层封装成dll.留接口给ocx调用.这里在你按F5调式ocx的时候,一般会选择调…...