狠狠色综合网久久久久久下一篇_88888888欧美视频在线观看_国产精品爱啪在线观看_亚洲人成网站在线播放2020_小12萝裸体无码视频AV下页

當(dāng)前位置:首頁(yè) > 行業(yè)資訊 >  > 正文
分析了波周杰倫,還做了數(shù)據(jù)可視化!
來(lái)源:數(shù)據(jù)不吹牛  時(shí)間:2023-04-11 20:06:16
字號(hào):

本案例中的歌詞數(shù)據(jù)來(lái)自中文歌詞數(shù)據(jù)庫(kù)。

前排提示:文末送可視化好書~


(資料圖片)

這個(gè)數(shù)據(jù)庫(kù)提供了華語(yǔ)歌手的歌曲及歌詞信息,數(shù)據(jù)以 JSON 格式存儲(chǔ)。

為了盡量完整地呈現(xiàn)從原始數(shù)據(jù)到可視化的過(guò)程,接下來(lái)我們會(huì)先簡(jiǎn)單講解數(shù)據(jù)的預(yù)處理過(guò)程,即如何將 JSON 數(shù)據(jù)轉(zhuǎn)化為Excel 格式,以及如何對(duì)周杰倫的歌曲進(jìn)行分詞。

若你希望跳過(guò)數(shù)據(jù)預(yù)處理的過(guò)程,也可以在《數(shù)據(jù)可視化設(shè)計(jì)指南:從數(shù)據(jù)到新知》一書的下載文件中,直接使用分好詞的 Excel 文件進(jìn)行可視化練習(xí)。

數(shù)據(jù)預(yù)處理指的是將原始數(shù)據(jù)處理成我們希望的格式,并提取出我們需要的信息。

在本案例中,我們需要先從數(shù)據(jù)庫(kù)中篩選出演唱者為周杰倫的歌曲,然后獲得這些歌曲的歌詞,并將它們存儲(chǔ)到純文本文檔(.txt 格式)中。以下提供兩種方法。

第一種方法,先把 JSON 文件轉(zhuǎn)換為 Excel 可以打開(kāi)的 .csv 文件或 .xlsx 文件格式。這可以借助一些在線的轉(zhuǎn)換工具完成(如 JSON to CSV Converter)。一般而言,只需將文件拖入這些工具,選擇好轉(zhuǎn)換格式類型,即可轉(zhuǎn)換完成。接著,我們便可以在 Excel 中打開(kāi)該數(shù)據(jù),然后單擊“數(shù)據(jù)→篩選”命令,選擇歌手為“周杰倫”的歌曲。之后,選中它們的歌詞,并將其粘貼到純文本文檔中。

第二種方法,通過(guò) Python 進(jìn)行數(shù)據(jù)預(yù)處理。代碼如下。

首先,需要引入 JSON 庫(kù)(未安裝者通過(guò) pip install json 安裝)。

import json

然后,讀取我們下載的 JSON 文件,存儲(chǔ)在名為 data 的變量中。

with open(‘ lyrics.json’ , ‘ r’ ) as f:data = json.load(f)

接著,遍歷 data 中的每一項(xiàng),找出“歌手”=“周杰倫”的數(shù)據(jù)項(xiàng),存到data_zjl 中。

data_zjl = [item for item in data if item[‘ singer’ ]==’ 周杰倫’ ]print(len(data_zjl))

建立一個(gè)空列表 zjl_lyrics,用于存儲(chǔ)歌詞。遍歷 data_zjl 中的每一首歌,將它們的歌詞存到 zjl_lyrics 中。

Zjl_lyrics = []for song in data_zjl:zjl_lyrics = zjl_lyrics + song[‘ lyric’ ]

最后將 zjl_lyrics 寫入一個(gè)新的 .txt 文件。

with open(“ zjl_lyrics.txt” , “ w” ) as outfifile:outfifile.write(“ 
” .join(zjl_lyrics))

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

圖1

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

import jiebaimport jieba.analyseimport pandas as pdfrom collections import Counter

事先準(zhǔn)備好一個(gè)中文的停用詞表(.txt 文件,里面包含一些常見(jiàn)的、需要過(guò)濾的中文標(biāo)點(diǎn)和虛詞,可在網(wǎng)上下載),代碼如下。

with open(‘ chinese_stop_words.txt’ ) as f:stopwords = [line.strip() for line in f.readlines()]

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

fifile = open(“ zjl_lyrics.txt” ).read()words = jieba.lcut(fifile, cut_all=False, use_paddle=True)words = [w for w in words if w not in stopwords]words = [w.strip() for w in words]words = [w for w in words if w != ‘ ’ ]words_fifilter = [w for w in words if len(w) > 1]df = pd.DataFrame.from_dict(Counter(words_fifilter), orient=’ index’ ).reset_index()df = df.rename(columns={‘ index’ :’ words’ , 0:’ count’ })df.to_excel(“ 周杰倫分詞結(jié)果 .xlsx” )

由此,我們便獲得了分詞后的單詞及詞頻(見(jiàn)表1)。使用這個(gè)文檔,我們就可以開(kāi)始制作可視化了。

表1

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

from wordcloud import WordCloud# 注 :這里需要引入一個(gè)中文字體,否則會(huì)亂碼wc = WordCloud(font_path = ‘ Alibaba-PuHuiTi-Regular.ttf’ ,background_color=” white” ,max_words = 2000)wc.generate(‘ ‘ .join(words_fifilter))import matplotlib.pyplot as pltplt.imshow(wc)plt.fifigure(fifigsize=(12,10), dpi = 300)plt.axis(“ off” )plt.show()

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

圖2

不過(guò),在代碼工具內(nèi)繪制文字云,進(jìn)行定制化設(shè)計(jì)相對(duì)比較復(fù)雜。因此,也可以借助一些在線工具幫助我們實(shí)現(xiàn)更好的可視化效果。

目前,許多中文的工具都可以專門用來(lái)制作文字云,如微詞云、易詞云、圖悅等(相關(guān)總結(jié)可參考知乎專欄的一篇文章《詞頻統(tǒng)計(jì)工具哪家強(qiáng),對(duì)比 8 款工具得出了結(jié)果》)。下面,我們以微詞云為例進(jìn)行演示。

進(jìn)入微詞云界面后,首先單擊“導(dǎo)入單詞”,進(jìn)行數(shù)據(jù)導(dǎo)入。選擇“從 Excel 中導(dǎo)入關(guān)鍵詞”,然后上傳我們剛才得到的包含單詞和詞頻的 Excel 文檔(需要注意的是,微詞云目前對(duì)上傳的 Excel 文件格式有一定要求,比如,列名必須叫“單詞”和“詞頻”才能識(shí)別,詳見(jiàn)其頁(yè)面指引),即可生成文字云(見(jiàn)圖3)。

圖3

可以看到,微詞云的頁(yè)面上還有另外兩種導(dǎo)入數(shù)據(jù)的選項(xiàng)。其中,“簡(jiǎn)單導(dǎo)入”支持用戶輸入用逗號(hào)隔開(kāi)的單詞?!胺衷~篩詞后導(dǎo)入”則支持用戶粘貼長(zhǎng)文本,然后由系統(tǒng)自動(dòng)進(jìn)行分詞和詞性判別。換句話說(shuō),如果你有一個(gè)文檔文件,也可以直接粘貼進(jìn)微詞云進(jìn)行分詞。

接下來(lái)我們用周杰倫的歌詞文檔來(lái)嘗試一下。選擇“分詞篩詞后導(dǎo)入”,然后將圖1 的 .txt 格式的文檔粘貼進(jìn)微詞云。之后,單擊“開(kāi)始分詞”,軟件就會(huì)自動(dòng)把詞語(yǔ)切割出來(lái),并按詞性歸類,結(jié)果如圖4所示。

圖4

可以看到,所有的詞語(yǔ)被按照動(dòng)詞、名詞、形容詞、人名等歸類。詞語(yǔ)后面的括號(hào)標(biāo)注了詞頻。同時(shí),微詞云還自動(dòng)幫我們把高頻的詞匯勾選出來(lái)。我們也可以根據(jù)個(gè)人需求,在這個(gè)界面中進(jìn)一步編輯,例如只顯示名詞、只顯示動(dòng)詞等,然后單擊“確定使用所選單詞”按鈕,即可生成詞云。

之后,我們可以在“配置”欄中編輯詞云的顯示方式。其中,“計(jì)算模式”指的是字體的大小是否嚴(yán)格與詞頻匹配,因此我們選擇“嚴(yán)格比例”。另外,我們還可以更改文字的顏色,以及文字云中單詞的數(shù)量等。在本案例中,我們把單詞數(shù)量調(diào)整到 200(見(jiàn)圖5)。調(diào)整完畢后,單擊右上角的“下載到本地”按鈕即可。

圖5

在左側(cè)編輯區(qū)的“形狀”中,可以替換詞云的蒙版。其中既有內(nèi)置的一些矢量形狀, 也可以上傳自己的圖片(見(jiàn)圖6,筆者上傳了一張周杰倫的素材圖片)。

圖6

當(dāng)然,雖然詞云在視覺(jué)上比較有趣,但在展示數(shù)據(jù)上卻不一定清晰。因此,我們也可以使用其他的圖表來(lái)進(jìn)行可視化。比如,可以用圓面積來(lái)展示最高頻的詞匯。

圖7 是使用 AI 工具繪制的。首先,我們?cè)凇皥D表工具”中選擇“餅圖”,按豎直方向?qū)?shù)據(jù)粘貼進(jìn)去,單擊“確定”按鈕,即可生成對(duì)應(yīng)面積的一系列圓形。

圖7

然后,選中所有圓形,取消分組,即可對(duì)它們進(jìn)行單獨(dú)編輯。之后,我們分別為它們加上文字,并調(diào)整顏色、背景等,即可得到一幅圓面積圖。

以上,我們講解了使用 Python 分詞和使用在線工具分詞的兩種方法。

需要提醒的是,不同的分詞途徑,分詞的結(jié)果可能不同(尤其是在語(yǔ)句比較復(fù)雜、生僻的情況下)。

因此,對(duì)分詞質(zhì)量比較看重的讀者有必要對(duì)比不同方法分詞的效果,選擇最優(yōu)的方案。

本文節(jié)選自《數(shù)據(jù)可視化設(shè)計(jì)指南:從數(shù)據(jù)到新知(全彩)》一書,歡迎閱讀本書了解更多精彩內(nèi)容。

限時(shí)五折優(yōu)惠,快快點(diǎn)擊搶購(gòu)吧!

最后的最后,這么好的書,給大家爭(zhēng)取了3本作為福利,本文三連(點(diǎn)贊、在看或者轉(zhuǎn)發(fā)任意都可)后,留言點(diǎn)贊排名前3各送1本,開(kāi)獎(jiǎng)時(shí)間截至4月12日22:00,祝大家好運(yùn)(為了給更多朋友機(jī)會(huì),4月已經(jīng)中過(guò)的同學(xué)暫時(shí)處于冷卻期)點(diǎn)擊閱讀原文,查看本書詳情!

標(biāo)簽: