50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

  • 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:362525

评论

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

七牛云 Miku 快直播,陪你一起看球!

七牛云

什么是生产报工系统、有哪些优势

万界星空科技

绩效管理 mes 万界星空科技 报工系统 生产报工管理

黑产当前,如何识别异常图片?

七牛云

AR | 我们从技术说起

AR玩家

AR Rokid Vision pro 炬目AR 炬目科技

基于Vue+thinkPhP6前后端分离的多客陪玩管理系统100%原生源码/技术培训/运维协助/开发文档齐全/官方终身授权/全球搭建部署/支持二次开发

DUOKE七七

深度解析:利用1688 API获取商品详情的全面指南

Noah

心大陆AI大模型入选IDC“中国生成式AI市场图谱”

心大陆多智能体

人工智能 AI 大模型 心理健康 数字心理

JDK8升级JDK11最全实践干货来了

京东科技开发者

JDK11升级JDK17最全实践干货来了

京东科技开发者

软件测试学习笔记丨JUnit5执行顺序

测试人

软件测试

Databend 开源周报第 150 期

Databend

如何选择适合您需求的 CDN 服务商

极客天地

软件测试学习笔记丨JUnit5重复测试

测试人

软件测试

解读MySQL 8.0数据字典的初始化与启动

不在线第一只蜗牛

MySQL 数据字典

制造业包括哪些?需要堡垒机吗?

行云管家

网络安全 信息安全 堡垒机 制造业

惊艳!老司机熬夜总结的Python高性能编程,高效、稳定、快速!

我再BUG界嘎嘎乱杀

Python 后端 高性能 开发语言

自动化技术如何影响企业数据分析的发展

智达方通

数据分析 自动化 财务管理 财务规划

万界星空科技MES系统中的仓库管理功能

万界星空科技

mes 万界星空科技 出入库管理 扫码出入库 仓库管理

阿里云弹性容器实例(ECI):无服务器容器解决方案深度解析

极客天地

python中对于wordcloud词云生成报错提示的解决

我再BUG界嘎嘎乱杀

Python wordcloud 词云

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