午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

 leafcho 2020-05-23

上一篇文章(Python爬蟲幫助解決挑選電影費時費力的煩惱),我們對騰訊視頻中的電影按照“豆瓣好評”的方式進行了數(shù)據(jù)爬蟲,獲取了大約5000部電影的詳情數(shù)據(jù),解決了選擇電影時比較浪費時間的問題。本篇文章將基于上一篇文章的數(shù)據(jù),來探究一下這5000部電影究竟怎么樣呢?對這5000部作品,該如何去做數(shù)據(jù)分析呢?

用數(shù)據(jù)說話,是數(shù)據(jù)分析的意義所在,整個數(shù)據(jù)分析的過程分為三步:

  • 數(shù)據(jù)讀取
  • 數(shù)據(jù)預處理
  • 數(shù)據(jù)可視化及數(shù)據(jù)分析

以下是具體步驟和代碼實現(xiàn):

數(shù)據(jù)讀取

在上一篇文章中,我們已經(jīng)獲取了數(shù)據(jù),沒有看過的同學可以進行查看,數(shù)據(jù)包括全量電影數(shù)據(jù),更細粒度的拆解數(shù)據(jù)(年代與區(qū)域、類型與區(qū)域等),對于數(shù)據(jù)的采集,個人建議是盡量做到“全“、“細”,方便進行數(shù)據(jù)拆解與數(shù)據(jù)對比分析,對于電影數(shù)據(jù)的讀取就相對比較簡單了。

import pandas as pd##------------數(shù)據(jù)讀取--------------#全量數(shù)據(jù)film_all_data = pd.read_csv('all_data.csv')#電影與區(qū)域的關系film_area_data = pd.read_csv('film_area.csv')#電影與類型的關系film_type_data = pd.read_csv('film_type.csv')#大陸電影與類型的關系film_type_china_data = pd.read_csv('film_type_china.csv')#電影與年代的關系film_year_data = pd.read_csv('film_year.csv')#大陸電影與年代的關系film_year_data = pd.read_csv('film_year_china.csv')

數(shù)據(jù)預處理

無論是做數(shù)據(jù)分析還是數(shù)據(jù)挖掘,數(shù)據(jù)預處理都是非常重要的一環(huán),在數(shù)據(jù)預處理階段,處理方法有很多,本文主要使用方法為:數(shù)據(jù)插補、臟數(shù)據(jù)刪除、數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)行列轉(zhuǎn)換等,上述處理方法在之前文章中都有涉及。

# 格式轉(zhuǎn)換def transform_score(x):    if x >=9.5:        return '[9.5,)'    elif x>=9 and x <9.5:        return '[9,9.5)'    elif x>=8.5 and x <9:        return '[8.5,9)'    elif x>=8 and x <8.5:        return  '[8,8.5)'    else:        return '(,8)'#  電影時間處理def film_time2min(t):    if len(str(t))==5:        m,s = t.strip().split(':')        return  int(m)     elif len(str(t))==8:        h,m,s = t.strip().split(':')        return int(h) * 60 + int(m)     else:        return 0film_all_data['score_interval'] = film_all_data.apply(lambda x :transform_score(x['film_score']),axis=1)film_all_data['film_caption']= film_all_data['film_caption'].apply(lambda x :film_time2min(str(x)))film_all_data['is_vip'] = film_all_data['is_vip'].fillna('正常播放')film_all_data.drop(columns=['Unnamed: 0','film_score','img_href','film_href'],inplace=True)

數(shù)據(jù)可視化與數(shù)據(jù)分析

我們使用pyecharts進行數(shù)據(jù)可視化,安裝命令pip install pyechars,下面進行數(shù)據(jù)可視化與數(shù)據(jù)分析。

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

我們使用pyecharts進行數(shù)據(jù)可視化,安裝命令pip install pyechars,下面進行數(shù)據(jù)可視化與數(shù)據(jù)分析。

代碼實現(xiàn):

bar = Bar(init_opts=opts.InitOpts(width='750px', height='350px'))bar.add_xaxis(film_all_data_group['score_interval'].to_list())bar.add_yaxis('豆瓣好評',film_all_data_group['score_interval_num'].to_list())bar.set_global_opts(title_opts=opts.TitleOpts(title='騰訊電影庫影片分數(shù)分布'), visualmap_opts=opts.VisualMapOpts(max_=50), toolbox_opts=opts.ToolboxOpts())

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

5000部電影中,VIP電影占比為55.7%,無需付費電影占比37.5%,VIP用券、獨播、付費總體占比為7%,這么多的好作品,沒有VIP會員的話,可能就沒福享受了。

代碼實現(xiàn)

from pyecharts.charts import Piefrom pyecharts import options as optspie1 = Pie(init_opts=opts.InitOpts(width='750px', height='350px'))pie1.add('',         [*zip(['VIP','VIP用券','付費','正常播放','獨播'],[0.557229,0.016466,0.008233,0.375502,0.042570])],         radius=['35%','70%'])pie1.set_global_opts(title_opts=opts.TitleOpts(title='騰訊電影付費類型占比'),                     legend_opts=opts.LegendOpts(orient='vertical', pos_top='15%', pos_left='2%'),                     toolbox_opts=opts.ToolboxOpts())pie1.set_series_opts(label_opts=opts.LabelOpts(formatter='{c}%'))pie1.set_colors(['#D7655A', '#FFAF34', '#3B7BA9', '#EF9050', '#6FB27C'])

全球電影優(yōu)秀作品人物

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

在全球電影創(chuàng)作優(yōu)秀作品的演員中,放眼望去都是外國人,仔細查看,還是有不少中國優(yōu)秀演員的身影,劉德華、周星馳、劉青云、洪金寶等,除了在詞云中看到的之外,周潤發(fā)、梁家輝、古天樂、李連杰的表現(xiàn)的也是可圈可點的。

代碼實現(xiàn)

##詞云def get_comment_word(df): # 集合形式存儲-去重 stop_words = set() print(stop_words) # 加載停用詞 cwd = os.getcwd() stop_words_path = cwd + '\\stop_words.txt' print(stop_words_path) with open(stop_words_path, 'r', encoding='ISO-8859-1') as sw: for line in sw.readlines(): stop_words.add(line.strip()) print(stop_words) # 添加停用詞 stop_words.add('主演') # 合并評論信息 df_comment_all = df['film_actor'].str.cat() # 使用TF-IDF算法提取關鍵詞 word_num = jieba.analyse.extract_tags(df_comment_all, topK=300, withWeight=True, allowPOS=()) print(word_num) # 做一步篩選 word_num_selected = [] # 篩選掉停用詞 for i in word_num: if i[0] not in stop_words: word_num_selected.append(i) else: pass return word_num_selectedkey_words = get_comment_word(film_all_data)key_words = pd.DataFrame(key_words, columns=['words','num']) key_words.head()

優(yōu)秀作品產(chǎn)生時間

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

以騰訊5000部電影為例,告訴你Python數(shù)據(jù)分析該怎么做

從中國優(yōu)秀作品的趨勢圖來看,2016、2017年產(chǎn)生了較多優(yōu)秀的作品,與全球優(yōu)秀作品的趨勢基本是一致的,從上圖我們可以看出,隨著中國電影市場的迅速發(fā)展,優(yōu)秀作品在全球的占比權重在進一步增加。

代碼實現(xiàn)

line1 = Line(init_opts=opts.InitOpts(width='750px', height='350px'))line1.add_xaxis(['80年代','90年代','2005-2000','2010-2006','2013-2011','2014','2015','2016','2017','2018','2019'])line1.add_yaxis('年代', [270,1591,1397,1999,1704,560,712,1014,734,456,405],                areastyle_opts=opts.AreaStyleOpts(opacity=0.5),                label_opts=opts.LabelOpts(is_show=False))line1.set_global_opts(title_opts=opts.TitleOpts(title='全球優(yōu)秀作品量'),                      toolbox_opts=opts.ToolboxOpts(),                      visualmap_opts=opts.VisualMapOpts(max_=200))

總結(jié)

本文從整體評分、付費類型、貢獻優(yōu)秀作品詞云、優(yōu)秀作品產(chǎn)生時間等不同視角來展示5000部電影的現(xiàn)狀,如果我們有更多的精力,可以進行更細粒度的分析與拆解。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多