用機器學習分析流行音樂(一):數據收集和清理

本文是本教程的第一部分,我將在本文中講述如何收集流行音樂的數據並清理。 目前,全部代碼已經放到了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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章