一小时销量破百万,Python告诉你周杰伦的《Mojito》到底有多火!
▼
更多精彩推薦,請關注我們
▼
作者:Mika
數據:真達??
后期:澤龍
【導語】:今天我們來聊聊周杰倫的新歌《Mojito》,Python技術部分請看第三部分。公眾號后臺,回復關鍵字“周杰倫”獲取完整數據。
Show me data,用數據說話
今天我們聊一聊 周杰倫《Mojito》
點擊下方視頻,先睹為快:
6月12日0:00,周杰倫的最新單曲《Mojito》正式上線。
?
對周杰倫歌迷來說,這一天簡直就是過年了。因為距離周杰倫上一次發歌,已經過去了半年時間;而他的上一張專輯《周杰倫的床邊故事》,已經是4年前的事情了。
這首以一種傳統的古巴雞尾酒命名的《Mojito》,前奏就充滿濃濃的古巴風情和拉丁節奏,整首歌都寫出在遇見愛情時令人神往的浪漫情調。尤其是令人驚艷的rap部分,不僅讓人感嘆我的青春回來了!
?
《Mojito》一經上線也是火爆全網,300多萬人提前預約,一小時內銷量破100萬,這也直接導致 QQ 音樂崩潰。
今天我們就用數據來全方位解讀一下,周杰倫的新歌《Mojito》。
?
豆瓣數據
1
首先我們分析整理了《Mojito》的豆瓣音樂數據,目前這首歌在豆瓣共有2萬3千余人進行評價,分數為6.9分。
數據來源:豆瓣音樂短評
?https://music.douban.com/subject/35093585/comments/
?
?數據量:498條
雖然比起周董早年音樂的分數有一定差距,但是對比起近兩年發布的《我是如此相信》《說好不哭》在豆瓣的6.3分和5.9分,這首mojito還是不錯的。
?
再具體看到評分數據可以發現,給出3星的人最多,占比39.02%。其次是4星,21.84%。給出5星的占比16.49%。
?
我們進一步把給出1-2分的歸類為負向評分,把4-5分的歸為正向評分。
分別對比負向的正向的詞云,我們可以看到:
在負向評價中,提到最多的就是"失望"、"難聽"、"編曲"。正向評價中,大多數人都表示"好聽"、"有夏天"的感覺、"喜歡"。有意思的是,無論正向負向評價都提到了充滿異域風情的《Mojito》很容易讓人聯想到當年周董的那首《迷迭香》。
?
微博數據
2
?接下來我們分析了周杰倫中文網在微博發布的mojito mv的評論數據。
微博:周杰倫中文網JayCn發布的《Mojito》MV
?
https://weibo.com/1165631310/J6cxJ67HC?filter=hot&root_comment_id=0&type=comment
?
數據集大小(去重之后):
?
評論數據:9976條
粉絲數據:9107條
分析發現,評論用戶性別方面,女生占了絕大多數,占比78.82%。
而用戶年齡方面,也是妥妥的90后的天下,占比高達74.91%。
微博評論中大家都在說些什么呢?
可以看到大多數人都表示"好聽"、"喜歡"、"很有夏天"的感覺。讓人"單曲循環",特別"上頭"。同時經典的周氏rap,也是整首歌的靈魂,一聽就太有那味兒了!
?
教你用Python爬取QQ音樂評論數據
3
?
最后我們看到qq音樂的數據:
QQ音樂評論信息。
https://y.qq.com/n/yqq/album/0009C3rp3Kfwg0.html
?
數據量:20245
我們先看到結論
首先在實時評論走勢圖上可以看到,在歌發布的12日0時,評論人數最高,之后慢慢回落。
評論中也讓人感嘆"好聽"、"青春回來了"。讓歌迷們紛紛下單支持,畢竟上線一小時突破一百萬張,讓QQ 音樂軟件一度崩潰,周董的影響力還是不容小覷的。
下面我們看到具體的步驟
我們使用Python分別獲取了QQ音樂評論、豆瓣短評和微博相關的評論數據,進行了數據分析。此處我們展示QQ音樂評論分析部分。按照業務分析流程進行:
數據獲取
數據處理
數據可視化
01 數據獲取
首先打開QQ音樂,搜索Mojito。翻到評論區后,使用谷歌瀏覽器的檢查功能,切換到Network部分,點擊翻頁進行網絡抓包,很容易發現發現評論區的內容是被封裝在json中的,如下圖所示:
切換到headers處,找到請求URL地址,我們對請求地址進行精簡和測試,得到評論數據請求的URL地址:
https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?biztype=2&topid=12924001&cmd=8pagenum=0&pagesize=25
其中參數pagenum代表頁數,通過遍歷即可獲取所有數據,代碼如下:
#?導入包 import?pandas?as?pd import?time import?requests import?json from?fake_useragent?import?UserAgentdef?get_qq_comment(page_num):#?存儲數據df_all?=?pd.DataFrame()for?i?in?range(page_num):#?打印進度print('我正在獲取第{}頁的信息'.format(i))#?獲取URLurl?=?'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?biztype=2&topid=12924001&cmd=8pagenum={}&pagesize=25'.format(i)#?添加headersheaders?=?{'user-agent':?UserAgent().random}#?發起請求try:r?=?requests.get(url,?headers=headers)except?Exception?as?e:print(e)continue#?解析網頁json_data?=?json.loads(r.text)#?獲取數據comment_list?=?json_data['comment']['commentlist']#?昵稱nick_name?=?[i.get('nick')?for?i?in?comment_list]#?評論內容content?=?[i.get('rootcommentcontent')?for?i?in?comment_list]#?評論時間comment_time?=?[i.get('time')?for?i?in?comment_list]#?點贊數praise_num?=?[i.get('praisenum')?for?i?in?comment_list]#?存儲數據df?=?pd.DataFrame({'nick_name':?nick_name,'content':?content,'comment_time':?comment_time,'praise_num':?praise_num})#?追加數據df_all?=?df_all.append(df,?ignore_index=True)#?休眠一秒time.sleep(1)return?df_all#?運行函數 df?=?get_qq_comment(page_num=912)?通過上述程序,共獲取到截止6.13日22217條評論信息,數據集如下所示:
df.head()02 數據讀入和數據處理
讀入數據集,并對獲取的數據集進行清洗。
#?導入所需包 import?jieba import?stylecloud from?pyecharts.charts?import?Pie,?Bar,?Map,?Line,?WordCloud,?Page from?pyecharts?import?options?as?opts from?pyecharts.globals?import?SymbolType,?WarningType WarningType.ShowWarning?=?False#?讀入數據 df?=?pd.read_excel('../data/QQ音樂評論數據6.13.xlsx')#?查看重復值和空值 print(df.duplicated().sum()) print(df.isnull().sum())?#?轉換函數 def?transform_time(time_second):time_array?=?time.localtime(time_second)otherStyleTime?=?time.strftime('%Y-%m-%d?%H:%M:%S',?time_array)?return?otherStyleTime#?時間數據處理 df['comment_time']?=?df['comment_time'].apply(lambda?x:?transform_time(x))#?content初步處理 pattern?=?re.compile(r'\[em\](.*?)\[/em\]') df['content']?=?df.content.str.replace(pattern,?'') df.head()?03 數據可視化分析
Mojito評論時間走勢圖
#?日期數量 comment_num?=?df.comment_time.str.split(':').str[0].value_counts().sort_index() comment_num[:5]? 2020-06-12?00????12673 2020-06-12?01?????1185 2020-06-12?02??????364 2020-06-12?03??????146 2020-06-12?04???????80 Name:?comment_time,?dtype:?int64#?產生數據 x_line1?=?[i.replace('2020-','')?for?i?in?comment_num.index.to_list()]? y_line1?=?comment_num.values.tolist()#?繪制面積圖 line1?=?Line(init_opts=opts.InitOpts(width='1350px',?height='750px')) line1.add_xaxis(x_line1) line1.add_yaxis('',?y_line1,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max',?name='最大值'),opts.MarkPointItem(type_='min',?name='最小值')]))? line1.set_global_opts(title_opts=opts.TitleOpts('Mojito評論人數走勢圖'),?xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='30')),visualmap_opts=opts.VisualMapOpts(max_=12673))? line1.set_series_opts(label_opts=opts.LabelOpts(is_show=False),?linestyle_opts=opts.LineStyleOpts(width=3)) line1.render()?QQ音樂評論詞云圖
def?get_cut_words(content_series):#?讀入停用詞表stop_words?=?[]?with?open(r"stop_words.txt",?'r',?encoding='utf-8')?as?f:lines?=?f.readlines()for?line?in?lines:stop_words.append(line.strip())#?添加關鍵詞my_words?=?['周杰倫',?'一首歌',?'好好聽',?'方文山',?'30多歲']????for?i?in?my_words:jieba.add_word(i)?#?????自定義停用詞my_stop_words?=?['歌有',?'真的',?'這首',?'一首',?'一點',?'反正',?'一段',?'一句',?'首歌',?'啊啊啊',?'哈哈哈',?'轉發',?'微博',?'那段',?'他會']???stop_words.extend(my_stop_words)???????????????#?分詞word_num?=?jieba.lcut(content_series.str.cat(sep='。'),?cut_all=False)#?條件篩選word_num_selected?=?[i?for?i?in?word_num?if?i?not?in?stop_words?and?len(i)>=2]return?word_num_selectedtext1?=?get_cut_words(content_series=df.content) text1[:5]? ['致敬',?'久石',?'人生',?'旋轉',?'木馬']#?繪制詞云圖 stylecloud.gen_stylecloud(text='?'.join(text1),?max_words=1000,collocations=False,font_path=r'?C:\Windows\Fonts\msyh.ttc',icon_name='fas?fa-music',size=624,output_name='./詞云圖/QQ音樂評論詞云圖.png')本文出品:CDA數據分析師(ID: cdacdacda)
?
近期開班情況
2020年6月28日
總結
以上是生活随笔為你收集整理的一小时销量破百万,Python告诉你周杰伦的《Mojito》到底有多火!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一种电源突然掉电的检测方式
- 下一篇: 遇到maven私服下载过慢或者卡死的情况