最近要追的综艺特别多,尤其是女团选秀节目。之前刚聊完《青春有你2》,现在隔壁鹅厂的《创造营2020》又开播了。除了无数美女小姐姐,导师团中除了黄子韬和鹿晗之外,最新一期的吴亦凡更是作为特约教练亮相。01.《创造营2020》漂亮吗?那么《创造营2020》漂亮吗?让我们先看看豆瓣。目前已有25129人评价,评分6.6。比起隔壁的《青你2》5.2分,创造营略胜一筹,不过刚更新3期,大家可以拭目以待。总分分布详见总分分布。其中,11.8%的人给5星,19.6%的人给4星,39.8%的人给1星。其中,1分和2分被认为是差分,4分和5分被认为是好的推荐分。我们看到这两个部分分布的词云。从收视率较低的观众来看,主要吐槽的是“赛制”、“导师”、“剪辑”。也有不少评论直接表示“不好看”、“劝退”、“挂”。从给出较高评分和推荐的观众来看,《创造营2020》的亮点是“选手小姐”、“导师阵容”、“话题”。鹅厂的“有钱”和“烧钱”也让人印象深刻。其次,也有人觉得比《青你2》好看。02.教你用Python分析101位小姐姐。看到一个菜鸟学Python,写了一篇《我用Python分析《青春有你2》109位美女小姐姐,太甜了!》C君这次也受到启发,打算用Python做一盘《创造营2020》小姐姐们。让我们通过Python向您介绍这101位美丽的小姐姐。数据获取数据预处理:数据合并和字段提取数据可视化分析1.数据获取本次我们主要获取了以下部分数据:从腾讯官方支持网站获取玩家姓名和照片信息从维基百科来源地信息,年龄、身高、所在经济公司调用百度智能云AI人脸识别接口,输入球员照片,获取球员外貌等信息。具体步骤和部分关键代码如下:获取腾讯支持列表数据。我们获取数据的页面地址如下:https://m.v.qq.com/activity/h..._index/index.html?ovscroll=0&autoplay=1&activityId=107015这是加载动态js的网站.使用chrome浏览器简单抓包分析得到真实的数据传输接口。您可以通过修改pageSize参数来获取所有数据。代码如下:#importlibraryimportpandasaspdimportrequestsimportjsondefget_tx_actors():"""功能:获取创造营2020支持列表数据。"""#获取URLurl='https://zbaccess.video.qq.com..._t=1589598410618&_=1589598410619'#添加headersheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/81.0.4044.138Safari/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')foriinplayer_infos]rank_num=[i['rankInfo'].get('rank')foriinplayer_infos]images=[i['itemInfo']['mapData'].get('poster_pic')foriinplayer_infos]#保存信息df=pd.DataFrame({'names':names,'rank_num':rank_num,'images':images})returndf通过以上程序,获取101名选手的姓名、排名和照片信息,并将选手的照片保存到本地。得到的数据如下图所示:df1.head()这里使用selen获取维基百科数据ium获取,需要电脑登录外网,代码比较简单,暂时省略。这里主要获取玩家的籍贯、年龄、身高、经济公司信息,如下:df2.head()调用百度AI接口获取面值数据。百度AI人脸识别详细文档地址如下:https://ai.baidu.com/ai-doc/F...首先需要在官网申请个人token信息,然后在下面程序中,get_face_score函数首先构造请求URL,然后构造请求的params表单数据,包括base64编码的图片信息、图片类型和你要获取的人脸信息。通过POST方法获取返回的json数据。返回的json数据中包含我们需要的颜值评分、年龄估算等信息。具体代码如下:defget_file_content(file_path):"""功能:使用base64转换路径编码"""withopen(file_path,'rb')asfp:content=base64.b64encode(fp.read())returncontent.decode('utf-8')defget_face_score(file_path):"""功能:调用api,实现一个百度颜值分析器"""#调用函数,获取image_codeimage_code=get_file_content(file_path=file_path)#requestbase_urlrequest_url="https://aip.baidubce.com/rest/2.0/face/v3/detect"#Formdataparams={'image':'{}'.format(image_code),'image_type':'BASE64','face_field':'age,gender,beauty'}#调用函数获取tokenmy_access_token="从官网获取的个人token信息"#获取access_tokenaccess_token=my_access_token#构建请求URLrequest_url=request_url+"?access_token="+access_token#请求头headers={'content-type':'json'}#发起请求response=requests.post(request_url,data=params,headers=headers)if响应:打印(response.json())age=response.json()['result']['face_list'][0]['age']gender=response.json()['result']['face_list'][0]['性别']['类型']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]returnall_results通过以上程序,得到百度AI预测的101位选手的年龄,性别,性别预测概率,颜值等信息df3.head()2。数据预处理这里我们主要对上面得到的数据集进行整理和清洗。清洗后的数据如下:df.head()3.数据可视化在获取并整理好数据后,我们再使用数据可视化库pyecharts进行以下数据可视化分析。球员的年龄分布首先,在年龄方面,球员的年龄最小为18岁,最大为25岁。我们对年龄进行分箱,发现20-22岁的玩家最多,占比35.87%。其次是22-24岁,占29.35%,其次是18-20岁,占28.26%。最后是24-26岁,仅占6.52%。看来想要出道还真是要趁早啊!代码如下:#binningage_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)forzinzip(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)forzinzip(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='player'sDistributionofnativeplace'),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对应low,60-70对应medium,70-80对应high,80以上对应high。可以算出,越长越高的占了76%,妹子们的颜值都很高。其中,百度AI预测的美女颜值最高的是谁?她就是崔文美秀,一个非常聪明精致的大小姐。谁是你心中的美人《创造营2020》?我们也做了视频版,有兴趣的朋友可以关注我们发布的视频哦!
