用Python分析周杰倫歌曲并進行數(shù)據(jù)可視化
大家好,今天我們用python分析下周杰倫歌曲。為了盡量完整地呈現(xiàn)從原始數(shù)據(jù)到可視化的過程,接下來我們會先簡單講解數(shù)據(jù)的預(yù)處理過程,即如何將 JSON 數(shù)據(jù)轉(zhuǎn)化為Excel 格式,以及如何對周杰倫的歌曲進行分詞。
本案例中的歌詞數(shù)據(jù)來自中文歌詞數(shù)據(jù)庫,這個數(shù)據(jù)庫提供了華語歌手的歌曲及歌詞信息,數(shù)據(jù)以 JSON 格式存儲。
數(shù)據(jù)預(yù)處理指的是將原始數(shù)據(jù)處理成我們希望的格式,并提取出我們需要的信息。
在本案例中,我們需要先從數(shù)據(jù)庫中篩選出演唱者為周杰倫的歌曲,然后獲得這些歌曲的歌詞,并將它們存儲到純文本文檔(.txt 格式)中,以下提供兩種方法。
第一種方法,先把 JSON 文件轉(zhuǎn)換為 Excel 可以打開的 .csv 文件或 .xlsx 文件格式。這可以借助一些在線的轉(zhuǎn)換工具完成(如 JSON to CSV Converter)。一般而言,只需將文件拖入這些工具,選擇好轉(zhuǎn)換格式類型,即可轉(zhuǎn)換完成。接著,我們便可以在 Excel 中打開該數(shù)據(jù),然后單擊“數(shù)據(jù)→篩選”命令,選擇歌手為“周杰倫”的歌曲。之后,選中它們的歌詞,并將其粘貼到純文本文檔中。
第二種方法,通過 Python 進行數(shù)據(jù)預(yù)處理。首先,需要引入 JSON 庫(未安裝者通過 pip install json 安裝)。
import json
然后,讀取我們下載的 JSON 文件,存儲在名為 data 的變量中。

通過這幾行代碼,我們就獲得了周杰倫所有歌曲的歌詞數(shù)據(jù)(見圖1)。以這個 .txt 文件為基礎(chǔ),我們便可以進行詞頻統(tǒng)計了。

以下附上一種在 Python 中分詞的方法。首先引入 jieba 庫(安裝 :pip install jieba)、pandas 庫(安裝 :pip install pandas)、用于頻次統(tǒng)計的 Counter 庫,以及表單工具,代碼如下:

事先準備好一個中文的停用詞表(.txt 文件,里面包含一些常見的、需要過濾的中文標點和虛詞,可在網(wǎng)上下載),代碼如下:

打開歌詞文件,利用 jieba 庫進行分詞。分詞之后,刪除停用詞、去除無用的符號等。用 Counter 庫對清洗干凈的詞語進行頻次統(tǒng)計。然后將統(tǒng)計結(jié)果用 pandas庫轉(zhuǎn)換為數(shù)據(jù)表單,存儲為 Excel 文件,代碼如下:

由此,如下表所示,我們便獲得了分詞后的單詞及詞頻。使用這個文檔,我們就可以開始制作可視化了。

?由于是文本類數(shù)據(jù),我們首先想到的可視化形式可能是文字云。如果你使用 Python,則可以直接基于剛才的分析結(jié)果,調(diào)用wordcloud庫繪制文字云,代碼如下:

繪制結(jié)果如圖所示:

?不過,在代碼工具內(nèi)繪制文字云,進行定制化設(shè)計相對比較復(fù)雜。因此,也可以借助一些在線工具幫助我們實現(xiàn)更好的可視化效果。下面,我們以微詞云為例進行演示。
進入微詞云界面后,首先單擊“導入單詞”,進行數(shù)據(jù)導入。選擇“從 Excel 中導入關(guān)鍵詞”,然后上傳我們剛才得到的包含單詞和詞頻的 Excel 文檔(需要注意的是,微詞云目前對上傳的 Excel 文件格式有一定要求,比如,列名必須叫“單詞”和“詞頻”才能識別,詳見其頁面指引),即可生成文字云。

可以看到,微詞云的頁面上還有另外兩種導入數(shù)據(jù)的選項。其中,“簡單導入”支持用戶輸入用逗號隔開的單詞?!胺衷~篩詞后導入”則支持用戶粘貼長文本,然后由系統(tǒng)自動進行分詞和詞性判別。換句話說,如果你有一個文檔文件,也可以直接粘貼進微詞云進行分詞。
接下來我們用周杰倫的歌詞文檔來嘗試一下。選擇“分詞篩詞后導入”,然后將之前的 .txt 格式的文檔粘貼進微詞云。之后,單擊“開始分詞”,軟件就會自動把詞語切割出來,并按詞性歸類,結(jié)果如下圖所示。

可以看到,所有的詞語被按照動詞、名詞、形容詞、人名等歸類。詞語后面的括號標注了詞頻。同時,微詞云還自動幫我們把高頻的詞匯勾選出來。我們也可以根據(jù)個人需求,在這個界面中進一步編輯,例如只顯示名詞、只顯示動詞等,然后單擊“確定使用所選單詞”按鈕,即可生成詞云。
之后,我們可以在“配置”欄中編輯詞云的顯示方式。其中,“計算模式”指的是字體的大小是否嚴格與詞頻匹配,因此我們選擇“嚴格比例”。另外,我們還可以更改文字的顏色,以及文字云中單詞的數(shù)量等。在本案例中,我們把單詞數(shù)量調(diào)整到 200。調(diào)整完畢后,單擊右上角的“下載到本地”按鈕即可。

當然,雖然詞云在視覺上比較有趣,但在展示數(shù)據(jù)上卻不一定清晰。因此,我們也可以使用其他的圖表來進行可視化。比如,可以用圓面積來展示最高頻的詞匯。
以上,我們講解了使用 Python 分詞和使用在線工具分詞的兩種方法,大家可以根據(jù)本案例進行學習。
用Python分析周杰倫歌曲并進行數(shù)據(jù)可視化的評論 (共 條)
