最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

樂隊(duì)的夏天大結(jié)局!用Python分析投票數(shù)據(jù),選出真正的樂隊(duì)TOP 5

2019-08-31 10:37 作者:愛數(shù)據(jù)分析社區(qū)  | 我要投稿

在盛大party后,《樂隊(duì)的夏天》終于順利收官。這個(gè)燃爆了整個(gè)夏天的綜藝是否是今年最火的綜藝節(jié)目雖然不得而知,但是不可否認(rèn),將樂隊(duì)和搖滾又重新帶到了公眾面前。

至少對于我,很感謝有這么一個(gè)節(jié)目,可以讓我接觸到不同類型的音樂,認(rèn)識這么多優(yōu)秀的樂隊(duì),知道堅(jiān)持做自己喜歡的事是一件多么幸福的事。

在昨天的終結(jié)篇中,馬東根據(jù)現(xiàn)場的投票,順利頒發(fā)出了殺出重圍的5只最高票樂隊(duì)。

當(dāng)然,每個(gè)人心中一定都有一只自己覺得最強(qiáng)的樂隊(duì),我也一樣。所以,我決定爬取所有場次參賽歌曲的投票數(shù)據(jù),用python進(jìn)行一次分析。然后參考數(shù)據(jù)分析的結(jié)果,給出我心目中,或許更加公允的另外一份Hot5名單。

當(dāng)然,我也希望這份分析結(jié)果能夠解答我自己對于樂隊(duì)的夏天的一些疑問,比如,痛仰樂隊(duì)的我愿意為何表現(xiàn)不佳?一直被專業(yè)樂迷和其他樂隊(duì)奉為偶像的海龜先生,為什么最終止步5強(qiáng)?

還有一些有趣的小結(jié)論,一起看看吧!

第一步:數(shù)據(jù)采集

數(shù)據(jù)分析數(shù)據(jù)分析,沒有數(shù)據(jù)就沒有分析。

網(wǎng)絡(luò)上沒有公開的詳細(xì)得票、排名數(shù)據(jù),只好自己整理了。首先購買愛奇藝會(huì)員,不然很長時(shí)間都消耗在廣告上了。然后用2倍速播放(這么聽歌還挺帶感的),然后看到這一幕,按住鎖屏和音量鍵+,咔嚓,數(shù)據(jù)收集到了!

最后手機(jī)相冊就變成現(xiàn)在這樣??

最后再填到一個(gè)Excel表里面,數(shù)據(jù)就有啦!

它大概長這個(gè)樣子??

一共有6個(gè)sheet,對應(yīng)6場比賽,字段分別是:[場數(shù), 出場順序, 樂隊(duì), 歌曲, 超級樂迷得分, 專業(yè)樂迷得分, 大眾樂迷得分, 總得分, 排名, 是否晉級下一輪]

第二步:讀取數(shù)據(jù)

在讀取數(shù)據(jù)之前,先導(dǎo)入分析的工具包




importpandas aspd importnumpy asnp importmatplotlib.pyplot asplt

為了顯得有一點(diǎn)點(diǎn)審美,我用取色器取了樂隊(duì)的夏天主KV上面的顏色,便于后面可視化來使用。



# 配置樂隊(duì)的夏天主題色 purple = (0.22,0.09,0.59) # 紫色yellow = (0.99,0.89,0.27) # 黃色green = (0.36,0.94,0.55) # 綠色blue = (0.06,0.24,0.78) # 藍(lán)色red = (0.98,0.31,0.36) # 紅色

環(huán)境設(shè)置完了,第一步是導(dǎo)入數(shù)據(jù)









# 讀取數(shù)據(jù) data1 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第一場') data2 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第二場兩兩PK賽') data3 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第三場累計(jì)積分賽') data4 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第四場復(fù)活賽') data5 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第五場9進(jìn)7') data6 = pd.read_excel('/.../樂隊(duì)的夏天.xlsx','第六場總決賽')

觀察一下數(shù)據(jù)吧。



# 觀察數(shù)據(jù)data1.infodata1.head

以第一場的數(shù)據(jù)為例為例,可以看到字段和數(shù)據(jù)的行數(shù),其中得分有(31-27=4)行數(shù)據(jù)為空,進(jìn)入第三步。

第三步:數(shù)據(jù)清洗

竟然有空數(shù)據(jù),先看看是怎么回事。




# 可以看到有四只樂隊(duì)是沒有得分和排名的,把他們列出來

data1[data1['總得分'].isnull]

所以其實(shí)是有31只樂隊(duì)表演的,但這四只樂隊(duì)因?yàn)楸患舻袅耍詻]有具體成績的數(shù)據(jù),怎么辦呢,只好把你們刪了。


data1= data1.dropna(axis = 0)

此外第六場的總票數(shù)還沒有給出,也有一部分空值,但不影響分析這樣就完成了,因?yàn)閿?shù)據(jù)是自己手動(dòng)錄入的,所以其它沒什么問題了,可以開始分析了。

第四步:數(shù)據(jù)分析

整體的分析思路遵循從整體到局部的順序,分為樂隊(duì)和歌曲兩個(gè)部分,再細(xì)分超級樂迷,專業(yè)樂迷和大眾樂迷三個(gè)角度。同時(shí)會(huì)展示樂隊(duì)在每期比賽的排名升降情況。

另外由于每場比賽的總票數(shù)不同,不同評委票數(shù)比例不同,為了使得不同場次之間的得票數(shù)據(jù)具備可比性,需要用到兩種數(shù)據(jù)標(biāo)準(zhǔn)化的方法,分別是:

  • Z_score 標(biāo)準(zhǔn)分

  • 0-1 normalization 歸一分

Z_score標(biāo)準(zhǔn)分的計(jì)算方法是用“(該樂隊(duì)當(dāng)場得分-當(dāng)場所有樂隊(duì)得分的平均數(shù))/ 當(dāng)場所有樂隊(duì)得分的標(biāo)準(zhǔn)差”計(jì)算得到:






# 標(biāo)準(zhǔn)分函數(shù)定義def z_score_normalize(series): mean = series.mean std_dv = series.std returnseries.apply(lambda x:(x - mean) / std_dv) # 用循環(huán)的方式批量對每場比賽的得分做處理competition = [data1,data2,data3,data4,data5,data6]forperiod incompetition: period['超級樂迷得分_標(biāo)準(zhǔn)分'] = z_score_normalize(period['超級樂迷得分']) period['專業(yè)樂迷得分_標(biāo)準(zhǔn)分'] = z_score_normalize(period['專業(yè)樂迷得分']) period['大眾樂迷得分_標(biāo)準(zhǔn)分'] = z_score_normalize(period['大眾樂迷得分']) period['總得分_標(biāo)準(zhǔn)分'] = z_score_normalize(period['總得分'])

0-1 normalization 歸一分的計(jì)算方法是用“樂隊(duì)得票數(shù)/總票數(shù)”計(jì)算得到,也等于常說的得票率:







# 定義歸一化的函數(shù)def normalize(series,x_max):returnseries.apply(lambda x: x/x_max)# 對不同總分不同類別的得分應(yīng)用歸一化函數(shù)fordatain[data1,data2,data5,data6]: data['超級樂迷_歸一分'] = normalize(data['超級樂迷得分'],50)data3['超級樂迷_歸一分'] = normalize(data3['超級樂迷得分'],60)data4['超級樂迷_歸一分'] = normalize(data4['超級樂迷得分'],40)fordatain[data1,data2,data3,data4,data5,data6]: data['專業(yè)樂迷_歸一分'] = normalize(data['專業(yè)樂迷得分'],40) fordatain[data1,data2]: data['大眾樂迷_歸一分'] = normalize(data['大眾樂迷得分'],100)fordatain[data3,data4,data5,data6]: data['大眾樂迷_歸一分'] = normalize(data['大眾樂迷得分'],360)

做完上面兩步,再把每場的數(shù)據(jù)拼成一個(gè)表,大功告成。(此處省略拼接代碼)


total_score

PART I :這些寶藏樂隊(duì)你不應(yīng)該錯(cuò)過!

首先我們分析樂隊(duì),通過27只樂隊(duì)在目前5場比賽中所表演的曲目的總得分的標(biāo)準(zhǔn)分的平均分,來衡量樂隊(duì)的整體表現(xiàn)。

這個(gè)數(shù)據(jù)首先反映樂隊(duì)的歌在該場比賽中的表現(xiàn),其次結(jié)合多場比賽歌曲的表現(xiàn),體現(xiàn)樂隊(duì)的整體成績。




# 按照樂隊(duì)這個(gè)標(biāo)簽分類計(jì)算,計(jì)算方式是平均值,計(jì)算字段是總得分_標(biāo)準(zhǔn)分,然后按照總得分_標(biāo)準(zhǔn)分排列total_score_mean= total_score.groupby(['樂隊(duì)'])[['總得分_標(biāo)準(zhǔn)分']].mean.sort_values( by = '總得分_標(biāo)準(zhǔn)分',ascending = False)total_score_mean

貼一部分成績出來

然后把這個(gè)結(jié)果可視化看看。








# 對樂隊(duì)總得分_標(biāo)準(zhǔn)分做可視化y = np.arange(len(total_score_mean.index))x = np.array(list(total_score_mean['總得分_標(biāo)準(zhǔn)分']))fig,ax = plt.subplots(figsize = (12,12))total_score_mean.plot.barh(ax=ax,alpha=0.7,title='27只樂隊(duì)場均表現(xiàn)',color = 'g')fora,b in zip(x,y):plt.text(a, b, '%.2f'% a, ha='center', va= 'center',fontsize=12)ax.grid(False)

新褲子排名第一,這也是在意料之中,“生命因你而火熱”,“花火”這幾首歌在朋友圈都爆了,其他的像刺猬、九連真人、盤尼西林、旅行團(tuán)、Click#15都表現(xiàn)很穩(wěn)定,在目前的晉級名單中。但有兩支樂隊(duì)比較奇怪,一個(gè)是一度被淘汰的痛仰樂隊(duì),竟然排在第二,另一個(gè)是一直在線,還把痛仰PK掉的面孔,排名甚至不在前10。



# 把痛仰的成績拉出來看一下total_score[total_score['樂隊(duì)'] == '痛仰樂隊(duì)']

“再見杰克”和“西湖”都在當(dāng)輪比賽中取得非常突出的表現(xiàn),但“我愿意”真的可惜了。


total_score[total_score['樂隊(duì)'] == '面孔樂隊(duì)']

較于其他只表演了一場但排名中等的隊(duì)伍,面孔因被“張三的歌”墊底,一舉拖垮,也因此慘遭淘汰。

接下來我想研究,在超級樂迷、專業(yè)樂迷和大眾樂迷各自眼里,哪些樂隊(duì)是他們喜歡的,他們共同喜歡的,和差異很大的樂隊(duì)分別是哪些?



# 代碼邏輯和前面選總得分作為計(jì)算字段的邏輯一樣,只不過這次選取單個(gè)群體得分作為指標(biāo)super_score_mean = total_score.groupby(['樂隊(duì)'])[['超級樂迷得分_標(biāo)準(zhǔn)分']].mean.sort_values( by= '超級樂迷得分_標(biāo)準(zhǔn)分')pro_score_mean = total_score.groupby(['樂隊(duì)'])[['專業(yè)樂迷得分_標(biāo)準(zhǔn)分']].mean.sort_values( by= '專業(yè)樂迷得分_標(biāo)準(zhǔn)分')public_score_mean = total_score.groupby(['樂隊(duì)'])[['大眾樂迷得分_標(biāo)準(zhǔn)分']].mean.sort_values( by= '大眾樂迷得分_標(biāo)準(zhǔn)分')

對前5的樂隊(duì)進(jìn)行數(shù)據(jù)可視化。



fig,ax = plt.subplots(1,3,figsize = (16,6))super_score_mean.tail(5).plot.barh(ax=ax[0],color = '#dc2624',alpha=0.7,title='超級樂迷心中TOP5',grid=False)pro_score_mean.tail(5).plot.barh(ax=ax[1],color = '#2b4750',alpha=0.7,title='專業(yè)樂迷心中TOP5',grid=False)public_score_mean.tail(5).plot.barh(ax=ax[2],color = '#649E7D',alpha=0.7,title='大眾樂迷心中TOP5',grid=False)

同時(shí)在三個(gè)群體中位列心目前五的樂隊(duì)是:“新褲子”

下面一起來讀繞口令:

在超級樂迷心中前五,但不在專業(yè)樂迷心中的前五樂隊(duì)是:

{'海龜先生', '盤尼西林', '痛仰樂隊(duì)'}

在超級樂迷心中前五,但不在大眾樂迷心中的前五樂隊(duì)是:

{'Click#15', '海龜先生', '盤尼西林'}

在專業(yè)樂迷心中前五,但不在超級樂迷心中的前五樂隊(duì)是:

{'Mr.WooHoo', 'Mr.Miss', '九連真人'}

在專業(yè)樂迷心中前五,但不在大眾樂迷心中的前五樂隊(duì)是:

{'Mr.WooHoo', 'Mr.Miss', 'Click#15'}

在大眾樂迷心中前五,但不在超級樂迷心中的前五樂隊(duì)是:

{'九連真人', '葡萄不憤怒', '刺猬'}

在大眾樂迷心中前五,但不在專業(yè)樂迷心中的前五樂隊(duì)是:

{'刺猬', '葡萄不憤怒', '痛仰樂隊(duì)'}

PART II :樂隊(duì)的排名就像人生,它會(huì)起起落落落落落

接下來對比較熟悉的9只樂隊(duì)的每期排名做可視化,直觀地展現(xiàn)他們在每期表現(xiàn)的升降。

新褲子的發(fā)揮是較為穩(wěn)定的,除了第三場上和Cindy合作的音樂形式較為新穎,讓觀眾一時(shí)難以接受之外,在各個(gè)場次都獲得非??壳暗某煽儭M瑯臃€(wěn)定的還有九連真人,一直穩(wěn)穩(wěn)的在中間,此外第二場改編李宗盛大哥的凡人歌,現(xiàn)場炸裂,表現(xiàn)超出期待。

表現(xiàn)越來越好的有兩只樂隊(duì):刺猬Click#15

刺猬可謂是低開高走,復(fù)活賽中憑借白日夢藍(lán)穩(wěn)穩(wěn)防守住黑撒樂隊(duì)的挑戰(zhàn),女神賽中和斯斯與帆的合作更是獲得了全場最佳。Click#15雖然在第二場和面孔的PK賽中被淘汰,但又殺了回來,而且第五場演繹beyond的碑面派對,首次贏得第一名。

另外面孔樂隊(duì)的處境一直比較尷尬,看他們的音樂對這一代人確實(shí)存在一些隔閡。

最后還有我很喜歡的樂隊(duì),海龜先生。第一場比賽在31只樂隊(duì)中位列第一,后面他們做了許多創(chuàng)意,還有想通過音樂表達(dá)自己的想法,可惜沒有被buy in.

對樂隊(duì)的分析暫時(shí)告一段落,接下來看看歌曲。

PART III :如果你只有十首歌的時(shí)間,我建議你聽這些歌

通過前面提到的歸一化計(jì)算,可以得到一下數(shù)據(jù)

首先對數(shù)據(jù)整體有一個(gè)把握




# 看看數(shù)據(jù)整體的描述total_nor_score.describe# 運(yùn)用箱型圖可以看到各組給分的分布,其中藍(lán)線是平均分,圓圈是最小值fig,ax= plt.subplots(1,1,figsize = (8,4))total_nor_score.boxplot(ax = ax,grid=False)




top10_songs = total_nor_score.sort_values(by = '總得分_歸一分').tail(10)top10_songs.plot.barh(x='歌曲',y='總得分_歸一分',color=purple)print('截止第六期,最受歡迎的10首歌分別是:n',list(top10_songs['歌曲']))

截止第六期,最受歡迎的10首歌分別是:

  • 夏日終曲

  • 凡人歌

  • How come u leave me like this

  • 生命因你而火熱

  • 椑面派對

  • 西湖

  • 花火

  • Bye Bye

  • 公路之歌

  • 沒有理想的人不傷心

下面看看在每組評委心目中前10的歌曲:




total_nor_score.sort_values(by= '超級樂迷_歸一分').tail(10).plot.barh(x='歌曲',y='超級樂迷_歸一分',color=red)total_nor_score.sort_values(by= '專業(yè)樂迷_歸一分').tail(10).plot.barh(x='歌曲',y='專業(yè)樂迷_歸一分',color=yellow)total_nor_score.sort_values(by= '大眾樂迷_歸一分').tail(10).plot.barh(x='歌曲',y='大眾樂迷_歸一分',color=green)

整體回顧完了,最后單獨(dú)分析兩個(gè)問題。第一個(gè)是為什么“我愿意”這首歌表現(xiàn)不好呢?


total_nor_score[total_nor_score['歌曲'] == '我愿意']

可以看到雖然在節(jié)目中,矛頭似乎指向了專業(yè)樂迷,但實(shí)際上,專業(yè)樂迷給票的比例比大眾樂迷是要高的,真正不喜歡的是大眾樂迷,只給出了一半的票數(shù)。


第二個(gè)問題是,誰在不喜歡海龜先生?


  • total_nor_score_t= pd.merge(total_nor_score, total_score[['樂隊(duì)','歌曲']], on='歌曲')total_nor_score_t[total_nor_score_t['樂隊(duì)']== '海龜先生']

“咿呀呀”這首歌拖累了海龜?shù)恼w平均分,而在這首歌中,專業(yè)樂迷給票的比例是最低的。

看看每組分別對海龜先生的作品給出的平均分:


total_nor_score_t[total_nor_score_t['樂隊(duì)'] == '海龜先生'].mean超級樂迷_歸一分 0.836000 ? ?
  • 專業(yè)樂迷_歸一分 0.690000

  • 大眾樂迷_歸一分 0.779444

  • 總得分_歸一分 0.778734

可以看到是專業(yè)樂迷,所以李紅旗啊,如果專業(yè)樂迷們說什么喜歡你們,你們千萬不要相信。

PART IV:不要情感,拒絕同情票,我只想告訴你真相

最后,我說出我心目中真正的Hot5,感謝你堅(jiān)持看到這里!


第六期也就是決賽的這一期,臨時(shí)增加了一輪投票環(huán)節(jié),在歌手演出結(jié)束后,一人一票,投出你喜歡的樂隊(duì)。兩輪票數(shù)相加得到總票數(shù),前五名的留下。

最終成績?nèi)缦拢?/span>


data6.iloc[:,:-9]

新的規(guī)則帶來很大的爭議,有人會(huì)給出“同情票”,使得真正的排名不能體現(xiàn)樂隊(duì)的實(shí)力。

因此,我心目中的Hot5應(yīng)該是結(jié)合每場每首歌的成績,不考慮作品以外單獨(dú)的投票的干擾來評判。因此選用前面提到的標(biāo)準(zhǔn)分的方法來計(jì)算最后決賽夜的7只樂隊(duì)全部六場成績,得到最終的排名。







# 選中7只隊(duì)伍final_7 = ['新褲子','痛仰樂隊(duì)','九連真人','Click#15','刺猬','盤尼西林','旅行團(tuán)樂隊(duì)']# 分別計(jì)算標(biāo)準(zhǔn)分final_7_total_score = total_score_mean.loc[final_7,].sort_values(by='總得分_標(biāo)準(zhǔn)分')# 可視化fig,ax = plt.subplots(1,1,figsize = (10,20))final_7_total_score.plot.barh(ax=ax,color = yellow,alpha=0.7,title='我心中Hot5',grid=False)

?


從這個(gè)結(jié)果來看,其實(shí)盤尼西林是排在最后一位的,但因?yàn)樵黾恿送镀倍粨屏嘶貋?。賽制的改變,使得結(jié)果有人歡喜有人愁。

但不管結(jié)局,排名,還是很高興,這個(gè)夏天遇見這么多好聽的音樂,同時(shí)也用數(shù)據(jù)更好的察覺一些真相。

想學(xué)習(xí)數(shù)據(jù)分析的小伙伴 添加微信:lovedata19 備注「B站」即可

作者:林曉勝


想學(xué)習(xí)數(shù)據(jù)分析的小伙伴 添加微信:lovedata19 備注「B站」即可



樂隊(duì)的夏天大結(jié)局!用Python分析投票數(shù)據(jù),選出真正的樂隊(duì)TOP 5的評論 (共 條)

分享到微博請遵守國家法律
辽源市| 泗阳县| 陵水| 侯马市| 平果县| 宜章县| 永清县| 佛坪县| 杭锦后旗| 利辛县| 海丰县| 佳木斯市| 成都市| 清徐县| 武胜县| 长垣县| 双流县| 襄垣县| 塔城市| 唐山市| 逊克县| 澜沧| 惠州市| 呼图壁县| 临洮县| 珲春市| 黄浦区| 宁津县| 固阳县| 加查县| 酒泉市| 永兴县| 碌曲县| 浦东新区| 灵川县| 丰城市| 东城区| 德州市| 南宁市| 重庆市| 台东县|