百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Kaggle 全球听众最多的50首歌曲

toyiye 2024-06-21 12:31 10 浏览 0 评论

@Author:By Runsen

Spotify是全球听众最多的50首歌曲

数据集摘要:Spotify在2019年收听的前50首歌曲

链接:https://www.kaggle.com/leonardopena/top50spotify2019

Spotify: (Spotify:声田 是一个正版流媒体音乐服务平台,2008年10月在瑞典首都斯德哥尔摩正式上线。Spotify提供免费和付费两种服务,免费用户在使用Spotify的服务时将被插播一定的广告,付费用户则没有广告,且拥有更好的音质。

2017年12月8日,Spotify与腾讯公司及腾讯旗下的腾讯音乐娱乐集团联合宣布股权投资,加强这两家全球最受欢迎的数字音乐平台的关系。 2018年4月3日,Spotify登录纽交所,成为首家“直接上市”的公司 [。2018年8月8日,华纳音乐集团宣布,集团已经出售了此前所持流媒体音乐服务提供商Spotify的全部股份。 2018年12月,世界品牌实验室发布《2018世界品牌500强》榜单,Spotify排名第378。 2019年10月,Interbrand发布的全球品牌百强榜排名92 。

名称 Graduate Admission 特征简介 **Track.name:**曲目的名称
**艺术家姓名:**艺术家姓名
曲目类型
每分钟的节奏
**能量:**一首歌的能量-值越高,能量越大。歌曲
**舞蹈性:**舞蹈性越高,就越容易跟着这首歌跳舞。
**响度:**dB值越高,歌曲越响。
**活性:**活性值越高,歌曲越有可能是现场录制的。
**价格:**价值越高,歌曲的积极情绪就越强。
**长度:**歌曲的持续时间。
**音质:**值越高,歌曲的音质越好。
**言语:**价值越高,歌曲包含的口语词越多。
**流行:**歌曲价值越高越受欢迎。 记录数 50 分析目标 分析Spotify在2019年收听的前50首歌曲 分析思路及方法 最有活力的歌是什么?
哪首歌最具舞蹈性?
哪首歌更响亮?
哪首歌最活泼?
哪首歌最长?
哪首歌最流行?

一、简介

该数据集包括23486行和10个特征变量。每行对应一个客户评论,并包含以下变量:

  • Track.name:曲目的名称
  • 艺术家姓名:艺术家姓名
  • 曲目类型
  • 每分钟的节奏
  • 能量:一首歌的能量-值越高,能量越大。歌曲
  • 舞蹈性:舞蹈性越高,就越容易跟着这首歌跳舞。
  • 响度:dB值越高,歌曲越响。
  • 活性:活性值越高,歌曲越有可能是现场录制的。
  • 价格:价值越高,歌曲的积极情绪就越强。
  • 长度:歌曲的持续时间。
  • 音质:值越高,歌曲的音质越好。
  • 言语:价值越高,歌曲包含的口语词越多。
  • 流行:歌曲价值越高越受欢迎。

中文名称 英文名称 曲目的名称 Track.name 艺术家姓名 Artist.Name 曲目类型 Genre 每分钟的节奏 Beats.Per.Minute 能量 Energy 舞蹈性 Danceability 响度 Loudness..dB.. 活性值 Liveness 价格 Valence. 长度 Length. 音质 Acousticness.. 口语词 Speechiness. 流行 Popularity

二、数据读取

1、数据处理环境

pandas:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

Matplotlib:Matplotlib就是Python绘图库中的佼佼者,它包含了大量的工具,你可以使用这些工具创建各种图形(包括散点图、折线图、直方图、饼图、雷达图等),Python科学计算社区也经常使用它来完成数据可视化的工作。

Seaborn:Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

2、数据读取方法

pandas库支持csv和excel的操作;使用的是pd.read_csv的函数

导入numpy,seaborn``matplotlib和pandas读取Womens Clothing E-Commerce Reviews.csv

参数:index_col=0——第一列为index值

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
df= pd.read_csv('top50.csv', encoding='cp1252')
df.rename(columns={'Track.Name':'track_name','Artist.Name':'artist_name','Beats.Per.Minute':'beats_per_minute','Loudness..dB..':'Loudness(dB)','Valence.':'Valence','Length.':'Length', 'Acousticness..':'Acousticness','Speechiness.':'Speechiness'},inplace=True)
查看df.head

查看df.info

从df.info可以看出并没有缺失数据,50个数据都具有完整性

查看df.describe().T

数据中的Length,Per.Minute,Valencestd标准差都比较大,说明数据分布不均匀

三、 数据分析

1、最有活力的歌是什么?

只需要简单通过np.max()方法来去除Energy最大的歌曲

df[df.Energy == np.max(df.Energy)]

我们可以从图片看出:最有活力的歌是Never Really Over,作者是凯蒂·佩里(Katy Perry),美国流行女歌手、

2、哪首歌最具舞蹈性?

df[df.Danceability == np.max(df.Danceability)]

我们可以从图片看出:最具舞蹈性是Talk,作者是Khalid

3、哪首歌更响亮?

df[df['Loudness(dB)'] == np.max(df['Loudness(dB)'])]

我们可以从图片看出:最具响亮,dB值最高的是Otro Trago - Remix和One Thing Right

4、哪首歌最活泼?

df[df['Liveness'] == np.max(df['Liveness'])]

我们可以从图片看出:最活泼是One Thing Right

5、哪首歌最长?

df[df['Length'] == np.max(df['Length'])]

我们可以从图片看出:最长是No Me Conoce - Remix

6、哪首歌最流行?

df[df['Popularity'] == np.max(df['Popularity'])]

我们可以从图片看出:最流行的是bad guy

四、图表绘制

1、艺术家姓名的词云图

from matplotlib import pyplot as plt
from wordcloud import WordCloud, STOPWORDS
string=str(df.artist_name)
wordcloud = WordCloud(stopwords=STOPWORDS,
                      background_color='white',
                      width=1000,
                      height=1000).generate(string)
plt.figure(figsize=(10,8))
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis("off")
plt.show()

2、曲目类型的词云图

from matplotlib import pyplot as plt
from wordcloud import WordCloud, STOPWORDS
string=str(df.Genre)
wordcloud = WordCloud(stopwords=STOPWORDS,
                      background_color='white',
                      width=1000,
                      height=1000).generate(string)
plt.figure(figsize=(10,8))
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis("off")
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gpXW14lr-1582528988980)(./image/12.png)]

pop,dance流行歌曲占了很大的比重

3、最流行的曲目名称词云图

from matplotlib import pyplot as plt
from wordcloud import WordCloud, STOPWORDS
string=str(df.track_name)
wordcloud = WordCloud(stopwords=STOPWORDS,
                      background_color='white',
                      width=1000,
                      height=1000).generate(string)
plt.figure(figsize=(10,8))
plt.imshow(wordcloud,interpolation='bilinear')
plt.axis("off")
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rg1ldyTB-1582528988981)(./image/13.png)]

4、绘制数据分布趋势折线图

import matplotlib
from matplotlib import pyplot as plt
matplotlib.style.use('ggplot')
df.plot(figsize=(20,10)) 

5、绘制数据分布密度分布图

df.plot(kind='density',figsize=(20,10))

6、绘制不同类型歌曲的总和柱状图

plt.figure(figsize=(20,10))
sns.countplot(df['Genre'])
plt.show()

7、绘制不同歌手的歌的数量总和柱状图

singers = df["artist_name"].value_counts()
plt.figure(figsize=(20,10))
singers.plot.bar()
plt.xlabel("Singers")
plt.ylabel("# of Songs")
plt.title("The # of songs each singer has")
plt.show()

8、绘制不同的歌手受欢迎柱状图

singer_popularity = (
    df.groupby("artist_name")["Popularity"].sum().sort_values(ascending=False)
)
plt.figure(figsize=(20,10))
singer_popularity.plot.bar()
plt.xlabel("Singers")
plt.ylabel("Total popularity")
plt.title("Total popularity each singer has")
plt.show()

9、绘制不同类型歌曲受欢迎程度的柱状图

genre_popularity = (
    df.groupby("Genre")["Popularity"].sum().sort_values(ascending=False)
)
plt.figure(figsize=(20,10))
genre_popularity.plot.bar()
plt.xlabel("Genres")
plt.ylabel("Total popularity")
plt.title("Total popularity each genre has")
plt.show()

10、绘制跳舞能力和受欢迎关系的散点图

plt.figure(figsize=(20,10))
plt.scatter("Danceability", "Popularity", data=df.sort_values(by=["Danceability"]))
plt.title("The relationship between danceability and popularity")
plt.xlabel("Danceability")
plt.ylabel("Popularity")
plt.show()

11、绘制响度和流行度关系分布散点图

plt.figure(figsize=(20,10))
plt.scatter(
    "Loudness(dB)", "Popularity", data=df.sort_values(by=["Loudness(dB)"])
)
plt.title("The relationship between dB and popularity")
plt.xlabel("Loudness(dB)")
plt.ylabel("Popularity")
plt.show()

12、绘制活泼和受欢迎关系分布散点图

plt.figure(figsize=(20,10))
plt.scatter("Liveness", "Popularity", data=df.sort_values(by=["Liveness"]))
plt.title("The relationship between liveness and popularity")
plt.xlabel("Liveness")
plt.ylabel("Popularity")
plt.show()

五、模型建立

该模型属于预测模型,**流行: **Popularity作为y的label

其他数据作为x变量,预测出歌曲是否流行,流行度如何

1、清理数据

删除无用Unnamed: 0数据

df.drop(columns=['Unnamed: 0'],inplace=True)

将Genre进行One-HOT编码,因为Genre是字符串,无法进行处理

from sklearn.preprocessing import LabelEncoder
label = LabelEncoder()
df.Genre = label.fit_transform(df.Genre)

2、建立X,Y

X = df[['Genre', 'beats_per_minute', 'Energy', 'Danceability',
       'Loudness(dB)', 'Liveness', 'Valence', 'Length', 'Acousticness',
       'Speechiness']]

y = df.Popularity

3、划分数据集和缩放数据

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=42)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

4、线性模型

线性模型是一类统计模型的总称,制作方法是用一定的流程将各个环节连接起来

导入sklearn.linear_model中的LinearRegression

模型评估:在常用的回归评估指标包括:

  • r2_score
  • explained_variance_score

这里使用的是r2_score

R2 决定系数(拟合优度)

模型越好:r2→1

模型越差:r2→0

from sklearn.linear_model import LinearRegression
# Creating the object
regressor = LinearRegression()
# Fit the model. 
regressor.fit(X_train, y_train)
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
# Predicting the test results. 
y_pred = regressor.predict(X_test)
# Checking the predictions. 
y_pred

from sklearn.metrics import r2_score
print("r_square score: ", r2_score(y_test,y_pred))

相关推荐

如何用 coco 数据集训练 Detectron2 模型?

随着最新的Pythorc1.3版本的发布,下一代完全重写了它以前的目标检测框架,新的目标检测框架被称为Detectron2。本教程将通过使用自定义coco数据集训练实例分割模型,帮助你开始使...

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

本文档以构建一个Java软件项目并部署到阿里云容器服务的Kubernetes集群为例说明如何使用Bamboo在阿里云Kubernetes服务上运行RemoteAgents并在agents上...

Open3D-ML点云语义分割实验【RandLA-Net】

作为点云Open3D-ML实验的一部分,我撰写了文章解释如何使用Tensorflow和PyTorch支持安装此库。为了测试安装,我解释了如何运行一个简单的Python脚本来可视化名为...

清理系统不用第三方工具(系统自带清理软件效果好不?)

清理优化系统一定要借助于优化工具吗?其实,手动优化系统也没有那么神秘,掌握了方法和技巧,系统清理也是一件简单和随心的事。一方面要为每一个可能产生累赘的文件找到清理的方法,另一方面要寻找能够提高工作效率...

【信创】联想开先终端开机不显示grub界面的修改方法

原文链接:【信创】联想开先终端开机不显示grub界面的修改方法...

如意玲珑成熟度再提升,三大发行版支持教程来啦!

前期,我们已分别发布如意玲珑在deepinV23与UOSV20、openEuler24.03发行版的操作指南,本文,我们将为大家详细介绍Ubuntu24.04、Debian12、op...

118种常见的多媒体文件格式(英文简写)

MP4[?mpi?f??]-MPEG-4Part14(MPEG-4第14部分)AVI[e?vi??a?]-AudioVideoInterleave(音视频交错)MOV[m...

密码丢了急上火?码住7种console密码紧急恢复方式!

身为攻城狮的你,...

CSGO丨CS2的cfg指令代码分享(csgo自己的cfg在哪里?config文件位置在哪?)

?...

使用open SSL生成局域网IP地址证书

某些特殊情况下,用户内网访问多可文档管理系统时需要启用SSL传输加密功能,但只有IP,没有域名和证书。这种情况下多可提供了一种免费可行的方式,通过openSSL生成免费证书。此方法生成证书浏览器会提示...

Python中加载配置文件(python怎么加载程序包)

我们在做开发的时候经常要使用配置文件,那么配置文件的加载就需要我们提前考虑,再不使用任何框架的情况下,我们通常会有两种解决办法:完整加载将所有配置信息一次性写入单一配置文件.部分加载将常用配置信息写...

python开发项目,不得不了解的.cfg配置文件

安装软件时,经常会见到后缀为.cfg、.ini的文件,一般我们不用管,只要不删就行。因为这些是程序安装、运行时需要用到的配置文件。但对开发者来说,这种文件是怎么回事就必须搞清了。本文从.cfg文件的创...

瑞芯微RK3568鸿蒙开发板OpenHarmony系统修改cfg文件权限方法

本文适用OpenHarmony开源鸿蒙系统,本次使用的是开源鸿蒙主板,搭载瑞芯微RK3568芯片。深圳触觉智能专注研发生产OpenHarmony开源鸿蒙硬件,包括核心板、开发板、嵌入式主板,工控整机等...

Python9:图像风格迁移-使用阿里的接口

先不多说,直接上结果图。#!/usr/bin/envpython#coding=utf-8importosfromaliyunsdkcore.clientimportAcsClient...

Python带你打造个性化的图片文字识别

我们的目标:从CSV文件读取用户的文件信息,并将文件名称修改为姓名格式的中文名称,进行规范资料整理,从而实现快速对多个文件进行重命名。最终效果:将原来无规律的文件名重命名为以姓名为名称的文件。技术点:...

取消回复欢迎 发表评论:

请填写验证码