当前位置: 首页 > news >正文

数据分析入门:用Python和Numpy探索音乐流行趋势

00321.png

一、引言

音乐是文化的重要组成部分,而音乐流行趋势则反映了社会文化的变迁和人们审美的变化。通过分析音乐榜单,我们可以了解哪些歌曲或歌手正在受到大众的欢迎,甚至预测未来的流行趋势。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,这次的操作记录一下。 (涉密内容略有删改&#xf…...

无人机侦察:二维机扫雷达探测设备技术详解

二维机扫雷达探测设备采用机械扫描方式,通过天线在水平方向和垂直方向上的转动,实现对目标空域的全方位扫描。雷达发射机发射电磁波信号,遇到目标后产生反射,反射信号被雷达接收机接收并处理,进而得到目标的位置、速度…...

未来互联网的新篇章:深度解析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月&#xff…...

CH04_依赖项属性

第4章:依赖项属性 本章目标 理解依赖项属性理解属性验证 依赖项属性 ​ 属性与事件是.NET抽象模型的核心部分。WPF使用了更高级的依赖项属性(Dependency Property)功能来替换原来.NET的属性,实现了更高效率的保存机制&#xf…...

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区块链游戏机器人] ❤博主…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...