2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

评论

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

【活动】30 秒上云体验,一键体验 RocketMQ 六大生产环境

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

分布式系统中的数据复制

越长大越悲伤

分布式 数据复制

从零开始实现Go搜索引擎(一)

geange

搜索引擎 lucene #数据库 FST #go

时序数据库 TDengine 与金山云两大产品完成兼容互认证

爱倒腾的程序员

数据库

实施Scrum敏捷开发必选的敏捷工具

顿顿顿

Scrum 敏捷开发 项目管理工具 Scrum Master 敏捷开发管理工具

解决直播间源码音视频不同步问题的有效方式——山东布谷科技创作

山东布谷科技

软件开发 实时音视频 源码搭建 直播源码 直播间

JavaScript 的优雅编程技巧:Singleton Pattern

沉浸式趣谈

JavaScript 设计模式 单例模式

云拨测全面升级丨单次拨测低至 0.001 元

阿里巴巴云原生

阿里云 云原生 可观测

Java 踩坑 2|Feign Client 访问到 Consul 脏节点/故障节点

itschenxiang

Java Consul springboot

演讲实录:以 AI 变革组织运营与管理

Kyligence

数据分析 数智化 企业级OLAP

数字化转型与架构-规划篇|承上启下的能力热力图

数字随行

数字化转型

Mediabox:年度最佳音视频开发工具

阿里云CloudImagine

云计算 阿里云 音视频 视频云

GreatSQL通过错误日志信息判断数据库实例是如何关闭的

GreatSQL

数据库 greatsql

区块链游戏六月月报: 市场分析,机遇与挑战

Footprint Analytics

区块链游戏 NFT gamefi

Prompt Learning,In-content Learning区别| 社区征文

汀丶人工智能

人工智能 prompt learning 年中技术盘点 指示学习 instruction learning

前端不死:新兴技术与前端未来展望 | 社区征文

维李设论

大前端 前端工程师 年中技术盘点 前端趋势 前端未来

代码随想录 Day21 - 二叉树(七)

jjn0703

B站&华为云 | 融合虚实宇宙,开启云上视听的黄金时代

白洞计划

AI B站

机器学习之PyTorch和Scikit-Learn第3章 使用Scikit-Learn的机器学习分类器之旅Part 2

Alan

人工智能 机器学习 PyTorch scikit-learn

如何处理需求池?管理需求池的内容

Bonaparte

产品 产品设计 产品思维 产品需求

人工智能革命|是疯狂炒作还是大势所趋?

SEAL安全

B2C #人工智能 ChatGPT 企业号 7 月 PK 榜 趋势解读

一文读懂Hhybrid App开发模式

没有用户名丶

大语言模型的预训练[5]:语境学习、上下文学习In-Context Learning设计以及ICL底层机制等原理详解| 社区征文

汀丶人工智能

人工智能 自然语言处理 nlp 年中技术盘点 ICL

大模型的出现及我的思考 | 社区征文

于仔学技术

人工智能 大模型 社区征文 AIGC 年中技术盘点

快照隔离级别原理 | StoneDB 技术分享 #1

StoneDB

MySQL 数据库 HTAP StoneDB

LCD拼接屏、LED显示屏和OLED显示屏的主要区别

Dylan

LCD1602液晶显示屏 LED显示屏 led显示屏厂家 OLED

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