作者 | 黃偉呢
來源 | 數據分析與統計學之美
6月12日凌晨0點,周杰倫最新單曲《Mojito》正式上線,僅上線1小時銷售量就超過百萬張,預計今天這首單曲的銷量仍然會繼續攀升。這次新歌的歌名叫做《Mojito》,翻譯成中文是莫吉託,一種巴西雞尾酒,怪不得觀看這首歌MV的時候,感受到一股很濃烈的異域風情呢。import requests
詞雲圖的製作
import json
import chardet
import re
from pprint import pprint
# 1.根據bvid請求得到cid
def get_cid():
url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1PK4y1b7dt&jsonp=jsonp'
res = requests.get(url).text
json_dict = json.loads(res)
#pprint(json_dict)
return json_dict["data"][0]["cid"]
# 2.根據cid請求彈幕,解析彈幕得到最終的數據
"""
注意:嗶哩嗶哩的網頁現在已經換了,那個list.so接口已經找不到,但是我們現在記住這個接口就行了。
"""
def get_data(cid):
final_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=" + str(cid)
final_res = requests.get(final_url)
final_res.encoding = chardet.detect(final_res.content)['encoding']
final_res = final_res.text
pattern = re.compile('<d.*?>(.*?)</d>')
data = pattern.findall(final_res)
#pprint(final_res)
return data
# 3.保存彈幕列表
def save_to_file(data):
with open("dan_mu.txt", mode="w", encoding="utf-8") as f:
for i in data:
f.write(i)
f.write("\n")
cid = get_cid()
data = get_data(cid)
save_to_file(data)# 1 導入相關庫
從詞雲圖可以看到,整個彈幕屏幕都是表達了粉絲對於《Mojito》這首歌的熱愛,可能有些詞語顯得有些莫名其妙,像震動、手機等詞語,但是看過MV的人都知道確實都是讚美之詞。首先,啊啊啊這個感嘆詞出現的次數是最多的,難道大家是剛剛聽到這首歌,驚喜之情無法用言語來表達?只好借用這樣的感嘆詞來表達自己內心的激動?這可不是我的風格,我要是喜歡就會用直白的話表達出來。其次,手機、震動這樣的詞出現的也很多。我剛剛看到這樣的詞語時候,我很莫名其妙。一首新歌MV和手機震動有啥關係呢?這原來是一個梗,恕我當時也沒怎麼關注,含義就是:周杰倫新歌銷量太好,網友調侃便說杰倫手機一直在震動。如果你也不知道這是一個什麼梗,提供一個網址給大家了解一下。https://www.ixiumei.com/a/20190917/364084.shtml我們還可以注意到,有一個詞的頻率出現次數也是很高的,那就是爺青回。哈哈,剛剛看到這個詞語的人肯定是很懵逼的,這是什麼意思呢?其實就是爺的青春回來了的意思。不得不說周杰倫的歌確實影響了我們這一代人,新歌一發布,不少人感嘆:杰倫,回不去了嗎?雖然我們的年紀在慢慢長大,但是我們卻始終習慣停留在青春的狀態。當然像愛、好聽、粉、億遍這樣的詞語大家也都知道是什麼意思,我也就不詳細說明了,總的來說從整個詞雲圖來看,基本上是0差評。《Mojito》整首歌給我的感覺就是節奏歡快,周杰倫雖然成了無數人的青春,不少人也是感嘆青春回不去了嗎?但是在這個炎炎夏日聆聽這首歡快的歌曲,也是及其不錯的。
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread
import warnings
warnings.filterwarnings("ignore")
# 2 讀取文本文件,並使用lcut()方法進行分詞
with open("dan_mu.txt",encoding="utf-8") as f:
txt = f.read()
txt = txt.split()
data_cut = [jieba.lcut(x) for x in txt]
data_cut
# 3 讀取停用詞
with open(r"G:\6Tipdm\wordcloud\data\stoplist.txt",encoding="utf-8") as f:
stop = f.read()
stop = stop.split()
stop = [" ","道","說道","說"] + stop
# 4 去掉停用詞之後的最終詞
s_data_cut = pd.Series(data_cut)
all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])
# 5 詞頻統計
all_words = []
for i in all_words_after:
all_words.extend(i)
word_count = pd.Series(all_words).value_counts()
# 6 詞雲圖的繪製
# 1)讀取背景圖片
back_picture = imread(r"G:\6Tipdm\wordcloud\jay1.jpg")
# 2)設置詞雲參數
wc = WordCloud(font_path="G:\\6Tipdm\\wordcloud\\simhei.ttf",
background_color="white",
max_words=2000,
mask=back_picture,
max_font_size=200,
random_state=42
)
wc2 = wc.fit_words(word_count)
# 3)繪製詞雲圖
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")更多精彩推薦
☞那些被大數據時代拋棄的人
☞反轉!物聯網火爆,開發者卻太難了!
☞TypeScript 熱度超 C 與 Python、Go 開發收入高、運維吃香,調查了 65000 名開發者有這些發現!
☞一篇與眾不同的 String、StringBuilder 和 StringBuffer 詳解
☞利用 AssemblyAI 在 PyTorch 中建立端到端的語音識別模型
☞贈書 | 供應鏈金融模式有哪些?區塊鏈在供應鏈金融中如何應用?