最近能夠追的綜藝真是太多了,特別是女團選秀節目。以前咱們剛聊過《青春有你2》,如今隔壁鵝廠的《創造營2020》又火熱開播了。除了數不清的漂亮小姐姐,導師團除了黃子韜、鹿晗,最新一期中吳亦凡更是做爲特約教練登場,「歸國三子」一會兒就引爆了話題度。html
0一、《創造營2020》到底好看嗎?chrome
那麼《創造營2020》到底好看嗎?先讓咱們看到豆瓣,目前已經有25129人打分,分數爲6.6分。json
對比起隔壁的《青你2》5.2分,創造營還略勝一籌,不過剛更新3期,還能夠在觀望一下。api
整體評分分佈瀏覽器
具體看到整體評分分佈,其中11.8%的人給了5星,19.6%的人給了4星,其中打1星的最多佔到39.8%。app
其中給出1分2分算評分較差的,4分5分算比較好的推薦分數。咱們分佈看到這兩部分評分的詞雲圖。echarts
在評分較低的觀衆看來,主要的吐槽點有關於"賽制"、"導師"、"剪輯"方面。直接表達"很差看"、"勸退"、"吊打"的評論也有很多。ide
在給出分數較高,推薦的觀衆看來,《創造營2020》的亮點在於"選手小姐姐"、"導師陣容"、"話題"。鵝廠的"財大氣粗"、"燃燒的經費"也使人印象深入。其次也有認爲比《青你2》要更好看的。函數
0二、教你用Python分析101位選手小姐姐post
以前看到 菜鳥學Python 寫了一篇「我用Python分析了《青春有你2》109位漂亮小姐姐,真香!」此次C君也受到了點啓發,打算也用Python來盤一盤《創造營2020》的小姐姐們。
下面讓咱們來經過Python爲你們介紹一下這101位美麗的小姐姐吧。
一、數據獲取
這次咱們主要獲取瞭如下部分的數據:
下面看到具體步驟和部分關鍵代碼:
獲取騰訊撐腰榜數據
咱們獲取數據的頁面地址以下:
https://m.v.qq.com/activity/h..._index/index.html?ovscroll=0&autoplay=1&actityId=107015
這是一個動態js加載的網站,使用chrome瀏覽器簡單的抓包分析,獲得真實的數據傳輸接口,經過修改其中的pageSize參數便可獲得全部的數據。
代碼以下:
# 導入庫 import pandas as pd import requests import json def get_tx_actors(): """ 功能:獲取創造營2020撐腰榜數據。 """ # 獲取URL url = 'https://zbaccess.video.qq.com..._t=1589598410618&_=1589598410619' # 添加headers headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } # 發起請求 response = requests.get(url, headers=headers) # 解析數據 json_data = json.loads(response.text) # 提取選手信息 player_infos = json_data['data']['itemList'] # 提取詳細信息 names = [i['itemInfo'].get('name') for i in player_infos] rank_num = [i['rankInfo'].get('rank') for i in player_infos] images = [i['itemInfo']['mapData'].get('poster_pic') for i in player_infos] # 保存信息 df = pd.DataFrame({ 'names': names, 'rank_num': rank_num, 'images': images }) return df
經過以上程序,獲取到101位選手的姓名、排名和照片信息,並將選手的照片保存到本地。獲取數據以下所示:
df1.head()
獲取維基百科數據
此處使用selenium獲取,須要電腦能夠登陸外網,代碼較爲簡單,暫時省略。
這裏主要獲取了選手的籍貫、年齡、身高、所在經濟公司信息,以下所示:
df2.head()
調用百度AI接口獲取顏值數據
百度AI人臉詳細的識別文檔地址以下:
https://ai.baidu.com/ai-doc/F...
首先須要在官網申請我的的token信息,而後下面的程序中,get_face_score函數首先構造請求URL,而後構造請求的params表單數據,包括base64編碼的圖片信息,圖片類型和想要獲取的人臉信息。經過POST方法獲取返回的json數據,返回的json數據裏就包含着咱們須要的顏值得分和年齡估計等信息,具體代碼以下:
def get_file_content(file_path): """ 功能:使用base64轉換路徑編碼 """ with open(file_path, 'rb') as fp: content = base64.b64encode(fp.read()) return content.decode('utf-8') def get_face_score(file_path): """ 功能:調用api,實現一個百度的顏值分析器 """ # 調用函數,獲取image_code image_code = get_file_content(file_path=file_path) # 請求base_url request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect" # 表單數據 params = { 'image':'{}'.format(image_code), 'image_type': 'BASE64', 'face_field': 'age,gender,beauty' } # 調用函數,獲取token my_access_token = "官網獲取的我的的token信息" # 獲取access_token access_token = my_access_token # 構建請求URL request_url = request_url + "?access_token=" + access_token # 請求頭 headers = {'content-type': 'json'} # 發起請求 response = requests.post(request_url, data=params, headers=headers) if response: print(response.json()) age = response.json()['result']['face_list'][0]['age'] gender = response.json()['result']['face_list'][0]['gender']['type'] gender_prob = response.json()['result']['face_list'][0]['gender']['probability'] beauty = response.json()['result']['face_list'][0]['beauty'] all_results = [age, gender, gender_prob, beauty] return all_results
經過以上程序,獲取到101位選手經過百度AI預測的年齡、性別、性別預測機率、顏值等信息。
df3.head()
二、數據預處理
此處咱們主要對以上獲取的數據集進行整理和清洗,清洗後的數據以下所示:
df.head()
三、數據可視化
獲取和整理數據以後,接下來咱們使用數據可視化庫pyecharts進行如下的數據可視化分析。
選手的年齡分佈
首先在年齡上,選手最小年齡是18歲,最大年齡是25歲。咱們對年齡進行了分箱,具體分析發現20-22歲的選手最多,佔比達到35.87%。其次是22-24歲,佔比29.35%,緊隨其後是18-20歲,佔比28.26%。最後是24-26歲,僅佔比6.52%。看來想要出道真的須要趁早啊!
代碼以下:
# 分箱 age_bins = [18,20,22,24,26] age_labels = ['18-20', '20-22', '22-24', '24-26'] age_cut = pd.cut(df.age, bins=age_bins, labels=age_labels) age_cut = age_cut.value_counts() # 產生數據對 data_pair = [list(z) for z in zip(age_cut.index.tolist(), age_cut.values.tolist())] # 繪製餅圖 # {a}(系列名稱),{b}(數據項名稱),{c}(數值), {d}(百分比) pie1 = Pie(init_opts=opts.InitOpts(width='1350px', height='750px')) pie1.add('', data_pair=data_pair, radius=['35%', '60%']) pie1.set_global_opts(title_opts=opts.TitleOpts(title='選手年齡分佈'), legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%')) pie1.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")) pie1.render()
選手的真實年齡和百度AI預測對比
咱們將百度AI預測的年齡和真實年齡進行了對比,能夠看出模型預測的方差較小,由計算可知平均預測的絕對偏差在1.67歲,預測結果仍是比較準確的。
代碼以下:
# 產生數據 x1_line2 = df.names.values.tolist() y1_line2 = df.age.values.tolist() y2_line2 = df.pred_age.values.tolist() # 繪製折線圖 line2 = Line(init_opts=opts.InitOpts(width='1350px', height='750px')) line2.add_xaxis(x1_line2) line2.add_yaxis('真實年齡', y1_line2) line2.add_yaxis('預測年齡', y2_line2) line2.set_global_opts(title_opts=opts.TitleOpts('選手的真實年齡和百度AI預測對比'), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='30')), yaxis_opts=opts.AxisOpts(min_=15, max_=30), ) line2.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) line2.render()
選手的身高分佈
經過上圖能夠看出,選手的身高基本符合正態分佈。身高方面小姐姐們都在160以上,最高的是175cm,使人意外的是身高167cm的最多,共有34名。看來女團對身高的要求還挺高的。
選手籍貫分佈
那麼小姐姐們都來自哪些地區呢?
這裏咱們只是關注了國內的狀況,馬來西亞和俄羅斯等其餘國家,並不在咱們的統計範圍內。通過分析整理能夠發現,來自四川的人數是最多的,看來四川當之無愧是個盛產美女之地,而後是廣東和湖南。
代碼以下:
city_num = df.region.value_counts() # 數據對 data_pair2 = [list(z) for z in zip(city_num.index.tolist(), city_num.values.tolist())] # 繪製地圖 map1 = Map(init_opts=opts.InitOpts(width='1350px', height='750px')) map1.add('', data_pair2, maptype='china') map1.set_global_opts(title_opts=opts.TitleOpts(title='選手的籍貫分佈'), visualmap_opts=opts.VisualMapOpts(max_=9)) map1.render()
選手所在經濟公司分佈
同時再看到選手的經濟公司。能夠看到,其中絲芭傳媒推出的選手人數位居第一,最多共有7人,絲芭傳媒是中國大型女子偶像團體SNH48的運營公司,值得注意的是它在青春有你2中選送的選手數量也是最多的。
代碼以下:
company_num = df.company.value_counts(ascending=False) # 柱形圖 bar1 = Bar(init_opts=opts.InitOpts(width='1350px', height='750px')) bar1.add_xaxis(company_num.index.tolist()) bar1.add_yaxis('', company_num.values.tolist()) bar1.set_global_opts(title_opts=opts.TitleOpts(title='選手所在經濟公司分佈'), visualmap_opts=opts.VisualMapOpts(max_=7), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='60')), ) bar1.render()
選手的顏值分佈
最後再看到你們最最關係的顏值問題啦,此次咱們還調用百度智能雲的AI人臉識別接口,輸入選手照片,獲取選手顏值等信息。
經過AI接口,能夠看到由百度AI預測的顏值最低爲57分,最高爲89分,咱們對顏值進行了分箱操做,其中55-60對應低,60-70對應中,70-80對應較高,80以上對應高。能夠計算,較高和高佔比76%,小姐姐們的顏值都是很是高的。
其中百度AI預測顏值最高的小姐姐是誰呢?她就是崔文美秀,很靈動清秀的一位小姐姐呢。
誰是你心中《創造營2020》中的顏值擔當呢?咱們也製做成了視頻版,有興趣的朋友能夠關注咱們發佈的視頻哦!