《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

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

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

评论

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

十六、深入Python字符串

刘润森

Python

马化腾的区块链理想

CECBC

区块链 马化腾

给新入职工程师的10条建议

supernova

管理 职场 工作方式

第11周作业

Vincent

极客时间 极客大学

第11周总结

Vincent

极客时间 极客大学

每天都要写吗?

Nydia

架构师训练营第四周学习总结

Gosling

极客大学架构师训练营

Linux的信号

菜鸟小sailor 🐕

c++

第四课系统架构课后作业

Geek_michael

极客大学架构师训练营

Week 3学习总结

balsamspear

极客大学架构师训练营

一次用户故事地图之旅

Bruce Talk

敏捷开发 用户故事 Product Owner 用户故事地图

十五、深入Python输入和输出

刘润森

Python

三步法解析Express源码

执鸢者

面试 大前端 Node Express

典型的大型互联网应用方案

garlic

极客大学架构师训练营

用Python绘制地理图

计算机与AI

Python 绘图

架构师训练营第四周课后作业

Gosling

极客大学架构师训练营

区块链要如何解决供应链金融痛点?

CECBC

区块链 金融

第四周总结

Geek_ac4080

迭代开发中的微服务拆分

码猿外

架构 微服务 架构演进

架构师训练营第四周作业

吴传禹

极客大学架构师训练营

如何设计大型互联网系统架构

天天向上

极客大学架构师训练营

甲方日常 32

句子

随笔杂谈

大型互联网系统常用的技术方案

天天向上

极客大学架构师训练营

自学编程,看书还是视频?

沉默王二

程序员 读书 自学编程 视频

架构师训练营第四周学习总结

吴传禹

极客大学架构师训练营

大区块链的必然性

CECBC

区块链技术

架构师训练营第四周作业

我是谁

极客大学架构师训练营

Week 3命题作业

balsamspear

极客大学架构师训练营

手把手教你分析Mysql死锁问题

捡田螺的小男孩

MySQL 死锁

职场求生攻略答疑篇之 4 —— 社会有多真实,人心就有多虚伪

臧萌

职场 职场成长

Flink时间服务和计时器-6-5

小知识点

scala 大数据 flink

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