硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

评论

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

三天研读《中兴电路设计规范》精华总结

不脱发的程序猿

28天写作 电路设计 3月日更 中兴 中兴电路设计规范

BOE(京东方)首度披露“千亿级西南战略” 全面布局物联生态

爱极客侠

Redis 如何应对并发访问

escray

redis 学习 极客时间 3月日更 Redis 核心技术与实战

APP 防重放实现

草原狼

安全 API 防重放

AI 事件驱动场景 Serverless 实践

Serverless Devs

Kubernetes 云原生 #Serverless

搭建 Mac 系统下的 C++开发环境

Jack—Li

加码技术破圈创新,蚂蚁金融科技助力各行各业转型升级

Lily

CountDownLatch:别浪,等人齐再团!

王磊

Java 多线程

Python OpenCV 之像素的加减法,取经之旅第 15 天

梦想橡皮擦

3月日更

面向复杂度架构设计的思考

Simon

架构实战营

爱奇艺大数据生态的实时化建设

Apache Flink

flink 实时计算

JVM 诊断之 jstat 工具使用

hepingfly【gzh:和平本记】

Java JVM jvm调优 jstat

Rust从0到1-基础概念-控制流

rust 控制流

已拿到6个Offer!主动分享成功秘籍:阿里巴巴Java面试参考指南(2021最新版)

比伯

Java 架构 面试 程序人生 技术宅

kylin基本概念和原理

潮湿了我押韵的心情

BI大数据分析系统开发,助力企业数字化转型

13828808769

区块链 区块链+ #区块链#

浅论指针(三)

Integer

c 指针

NA(Nirvana) Chain主打应用而生NA公链NAC公链

区块链第一资讯

SpringCloud技术专题-Hystrix以及FeginClient异常

码界西柚

SpringCloud Fegin

C++中结构体的定义

Jack—Li

CSP-J/S必备知识——文件输入输出

Jack—Li

如何处理分析Flink作业反压的问题?

华为云开发者联盟

实时计算 DWS Flink作业 反压 Sink

centos7docker安装

happlyfox

Docker 学习 3月日更

带你全面认识CMMI V2.0(四)——管理 赋能

IPD产品研发管理

项目管理 CMMI

源码分析:Redisson分布式锁过程分析

程序员架构进阶

redis 源码分析 分布式锁 28天写作 3月日更

订单和产品的多对多表关系在crudapi系统零代码实现

crudapi

API crud crudapi 一对多 多对一

有趣!一行代码居然无法获取请求的完整URL

Gopher指北

HTTP Go 语言

腾讯游戏实时计算应用平台建设实践

Apache Flink

flink

从两个模型带你了解DAOS 分布式异步对象存储

华为云开发者联盟

开源 对象存储 存储 分布式异步对象存储 NVM

用 Go + WebSocket 快速实现一个 chat 服务

万俊峰Kevin

websocket go-zero Go 语言

区块链推动知识产权数字化,区块链在知识产权中的价值体现

13828808769

区块链+ #区块链#

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