写点什么

用机器学习分析流行音乐(一):数据收集和清理

  • 2020-08-10
  • 本文字数:1494 字

    阅读完需:约 5 分钟

用机器学习分析流行音乐(一):数据收集和清理

本文是该系列的第一部分,我将在本文中讲述如何收集流行音乐的数据并清理。 目前,全部代码已经放到了GitHub上


多年来,韩国流行音乐成为一种全球性现象,其流行程度让我感到惊讶。 所以,我决定用机器学习来分析韩国流行音乐,探索有趣的见解。 本文,我将阐述数据科学周期中的数据收集和数据清理阶段。

数据收集

为了找到数据集,我不得不在谷歌上进行了搜索,我发现了一个 Excel 文档,内含针对社交媒体和韩国流行音乐的调查,我觉得很有意思。数据集包含来自世界各地的 240 名韩国流行音乐歌迷,共有 22 个调查问题。


数据集链接:Ranman,Saanjana(2020):KPOP DATA.xlsx. figshare. Dataset.

数据清理

数据清理是重要的一步,因为需要为 EDA 和模型构建提供最干净的数据。如果放进去的是垃圾,那么从模型中得到的也是垃圾。


数据集可能有前导空格和尾随空格。因此,我决定使用函数来删除第一列的“Timestamp”,因为没有用处。


# function to remove the leading and trailing whtte space in the data frame def trim(dataset): # using .strip() to remove the leading and the trailing white spaces in each cell trim = lambda x: x.strip() if type(x) is str else x   return dataset.applymap(trim) 
复制代码


由于列名太长,我决定给它们提供代码名称,以简单地表示列名。



重命名列


接下来,检查数据集是否有空值。



检查空值


有三个列具有空值。首先,让我们检查只有一个空值的列。


我发现 life_chgmoney_src 中的空值是“ n/a ”,因此,我简单地将它们替换为字符串“ none ”。


对于 daily_MV_hr 列,我决定用平均值替换空值。处理空值有多种方法(删除行、分配唯一类或者运行回归模型来预测缺失值等),但我认为用平均值替换它们是最佳选择。


我取了 1 和 4 的平均值,也就是 2.5 小时,去掉了“hours”(小时)这个词。我注意到有些类别在范围内,所以为了简单起见,我取了这些范围的平均值,创建了一个特殊函数来处理这个问题。


# function to find the mean when some have ranges and others don't def split_mean(x): # split before and after the hyphen (-) split_num = x.split("-") if len(split_num) == 2:   return (float(split_num[0])+float(split_num[1]))/2   # those who aren't in the range   else:     return float(x) # apply the split_mean function to the "daily MV hours" column daily_mv = daily_mv.apply(lambda x: split_mean(x)) 
复制代码


该函数用来在一些有范围而另一些没有范围的情况下查找平均值。



清理 daily_MV_hr 列前后对比


我意识到这个数据集有点混乱。所以我重复了类似的步骤来清理每一列。


  • yr_listened ” 列




清理 yes_listened 列的过程


我将展示每个列的清理前后图片。


  • daily_usic_hr ” 列




DAILY_MUSIC_hr 清理前后




yr_merch_spent 清理前后


  • age



age 清理前后


  • fav-grp



原始列值



创建单独的列,以查找每个人喜欢的组数



BTS 与其他(多个)的单独列


  • nes_medium



原始列值



简化的列值


  • pursuit



原始列值



简化的列值


  • time_cons_yn



原始列值



简化的列值


  • life_chg



原始列值



简化的列值


  • pos_eff



原始列值



简化的列值


  • money_src



原始列



简化的列值


  • crazy_ev



原始列值



简化的列值


  • country



原始列值



简化的列值


至此,数据清理完成,我将清理过的数据帧保存为 CSV 文件,以供本教程的下一部分使用。



将清理后的数据帧保存到 CSV


在第二部分中,我将讨论本教程的探索性数据分析部分。


作者介绍


Jaemin Lee,专攻数据分析与数据科学,数据科学应届毕业生。


原文链接:


https://towardsdatascience.com/analyzing-k-pop-using-machine-learning-part-1-data-collection-cleaning-4b407baf7bce


2020-08-10 11:362536

评论

发布
暂无评论
发现更多内容

七牛云点播实时转码上线,边转边播,又快又省

七牛云

转码

加密项目的生死轮回:11亿美元融资的35个“死亡”VC项目剖析

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

揭秘抖音视频列表数据接口:获取数据的新利器

tbapi

抖音API 抖音视频数据接口 抖音视频列表接口 抖音视频列表数据采集 抖音视频API接口

Zilliz向你发来邀请:请加入Stack Overflow吧!入股不亏!

Zilliz

人工智能 Zilliz 向量数据库 大语言模型

RocksDB 二级缓存

天翼云开发者社区

RocksDB

2024 年五大最佳构建内部工具的开源项目

NocoBase

低代码 开源项目 无代码平台

如何优雅的应对线上故障?

老张

监控告警 线上故障 应急响应 问题复盘

B站安全开发流程落地实践

我再BUG界嘎嘎乱杀

网络安全 安全 哔哩哔哩 网安 安全开发流程

低代码实践:题型物料化设计(二)

XIAOJUSURVEY

开源 低代码 组件化 问卷模型

华为大咖说 | 数字化解码:如何用日常语言讲明白数字世界?

云计算 华为云

无缝融入,即刻智能[1]:MaxKB知识库问答系统,零编码嵌入第三方业务系统,定制专属智能方案,用户满意度飙升

汀丶人工智能

agent 智能问答 rag

Keepalived基本原理

天翼云开发者社区

Linux keepalive

ZOS对象存储跨域资源访问的实现和使用

天翼云开发者社区

对象存储 跨域

观测云全面兼容 Prometheus 生态

观测云

低代码实践:题型物料场景化设计

XIAOJUSURVEY

开源 低代码 搭建平台 场景化思维 组件化架构

Google 推出 Gemma 2 2B 端侧模型;Github 新服务帮助开发者选择 AI 模型 丨 RTE 开发者日报

声网

低代码实践:题型物料化设计(一)

XIAOJUSURVEY

开源 低代码 组件化 问卷

最全数据资产目录模板汇总,有必要了解一下!(附下载)

极盾科技

数据安全

华为云DTSE助力易印云化架构升级,推动印刷包装行业智能化进程

华为云开发者联盟

人工智能 物联网 华为云 waf 企业号 8 月 PK 榜

用机器学习分析流行音乐(一):数据收集和清理_架构_Jaemin Lee_InfoQ精选文章