資料科學二三週實戰練習-你知道周杰倫最紅的歌是哪一首嗎?

前言
利用上兩週的操作,我們將在Kaggle下載一些資料集來進行實戰練習,以此篇為例我下載了「Spotify and Youtube」統計Spotify 藝人的前 10 首熱門歌曲以及他們在 YouTube 上的影片的統計數據。
你也可以試試看「2019年最流行的Youtube影片」
若想下載其他的,可在Dataset進行尋找

此外,建議可以搭配ChatGPT,完成自己想要的任務
資料匯入
在Kaggle下載好資料集後,使用Google Colab 連接雲端資料夾

使用pd.read_csv() 可以直接讀取csv檔,並轉換成Dataframe
不過在這個資料集因為含有很多國家的歌手,在文字編碼各不相同(我的猜測),所以我請ChatGPT做了額外的檔案處理
因為我想保留資料是utf-8編碼(避免中文亂碼),略過會發生錯誤的資料列
#載入pandas
import pandas as pd
#載入雲端硬碟csv檔, read_csv()
with open('/content/drive/MyDrive/0714研習/Spotify_Youtube.csv', 'r', encoding='utf-8', errors='ignore') as file:
df = pd.read_csv(file,on_bad_lines='skip')
df
資料欄位分析
確定有些什麼欄位,還有欄位的格式,方便我之後運算
df.info()
在Kaggle資料集也有對欄位的介紹,不過透過這可以看到,Views(Youtube的觀看數)的型態是Object,還有資料有26449筆,但Views只有25829筆
分析前處理
二三週還沒講到分析前的處理,但我偷跑讓資料更好分析,畢竟真實資料集通常會「髒髒的」
空資料刪除
我初步想法是做跟觀看數有關的,於是我先把沒有觀看的資料列刪除,使用dropna :
df.dropna(inplace=True)
df.info()
刪除完後可以看到資料變成24557筆
資料型態轉換
Views(Youtube的觀看數)的型態是Object,透過astype(float) 做轉換
df['Views'] = df['Views'].astype(float)
df['Views']
資料分析(EDA)
EDA 是 Exploratory Data Analysis(探索性資料分析)的縮寫。它是一種初步分析資料集的方法,旨在通過視覺化、統計摘要和資料轉換等技術手段來發現資料的結構、模式、異常值和潛在的關聯。
抓取想要的欄位
我先將我要的資料列出來分別是「藝人」、「歌名」、「專輯」、「Youtube觀看」、「Spotify串流次數」,並存在另一個表中,避免我的原本的資料還有需要使用
df_view = df[['Artist','Track','Album','Views','Stream']]
df_view
其中1.04e+09代表10的九次方也就是10.04億次收聽
流量排序
這也還沒講,可以使用GPT試看看
單純是因為我不知道篩選一首歌的流量,怎樣算是多?於是我把流量高到低進行排序
使用sort_values()進行排序而裡面的by代表要排序的欄位,ascending代表是否要由小到大
再使用head() 列出前100筆資料(預設為5筆)
df_view.sort_values(by='Views', ascending=False,inplace=True)
df_view.head(100)
可以看出此資料集Youtube最高觀看80億(應該是2022或2023的資料),Spotify串流有15億次收聽
有趣的是Ed Sheeran串流30幾億但Youtube只有59億
資料篩選
最後我篩選出高於十億收看的歌曲,共有***首呢?
#超過十億次觀看有幾首
df_view[df_view['Views']>10**9]
使用len() 看出列數,總共390首歌,這樣多嗎?
消費台灣
最後想到,那我們亞洲巨星周杰倫的歌在世界上如何呢?
df_view[df_view['Artist']=='Jay Chou']
這首七年前(以2024年來說)的告白氣球,資料集是2.4億次觀看(2024年為2.5億次觀看)
可以發現要達到10億是一個多了不起的數字啊
但同時可以想想,前幾年有個新聞,如果一首歌它有1億觀看,真實性又有多少?(我沒有偷臭)可能是個好的研究議題,下週見吧XD
版權聲明
文章標題:資料科學二三週實戰練習-你知道周杰倫最紅的歌是哪一首嗎?
文章作者:阿盧老師
文章連結:https://codinglu.tw/blog/which-is-Jay-Chou-famous-song
授權條款:本文採用 CC BY-NC 4.0 授權。轉載請標明出處。