前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
可以叫我才哥 | 作者
可以叫我才哥 | 來源
八佰
“
《八佰》是由華誼兄弟電影有限公司和北京七印象文化傳媒有限公司出品,騰訊影業文化傳播有限公司、北京光線影業有限公司和阿里巴巴影業(北京)有限公司聯合出品,導演管虎執導,黃志忠、歐豪、王千源、姜武、張譯、杜淳、魏晨、李晨、俞灝明等主演的戰爭題材影片,該片取材1937年淞滬會戰期間,講述了史稱“八百壯士”的中國國民革命軍第三戰區88師524團的一個加強營,固守蘇州河畔的四行倉庫、阻擊日軍的故事,該片于2020年8月21日上午9點在中國大陸正式上映~
”
由于今年新冠疫情,電影院也是在最近一段時間才“解封”,《八佰》算是“開年”截止目前熱度最高的電影了,朋友圈很多人看完容易沉浸在其氣氛中、激發心中的民族感,當然也有一些網友持負面看法,那究竟大家都在有著什么樣的觀后感呢,我們來通過評論資料看看給予不同評分的觀眾都怎么說吧,
0.前言
這里我們主要是通過python進行貓眼電影評論內容獲取,然后再匯入資料庫使用superset進行基礎資料統分及看板生成,最后用jieba和wordcloud做詞云分析,
本次資料統計周期為:2020年8月21日9點——8月27日24點 共采集到評論資料量:144,098條
本文主要分為三部分:
- 三類(好評、中評和差評)評價用戶資料統分 本部分主要根據評分對用戶進行分組,然后統計不同分組下用戶數及這些用戶評價內容的詞云分析
- 評價資料分布詳情 本部分主要是對爬取的全部資料按照日期、評分及用戶地區進行基礎的資料統計處理,并用supset進行可視化展示
- 評論資料爬蟲程序 本部分詳細介紹貓眼電影評論內容爬取的程序,大家可以參考代碼對自己喜歡的電影做類似處理
1.三類(好評、中評和差評)評價用戶資料統分
1.1.總體評價詞云
在評論中,高頻詞匯是“勿忘國恥”、“震撼”、“銘記歷史”、“國人如此”和“感動”等等,都是比較貼近該部劇作主題和正向的褒義詞,
1.2.三類用戶資料
評價分數區間為0-5分,按照3分以內為差評,3分為中評,4分以上為好評的分類標準,我們統計結果如下:
# 分箱 data['評價型別'] = pd.cut(data['評分'], [0,3,4,6], labels=["差評", "中評", "好評"],right=False) # 分組計算各評價型別 評價數量data_star = data.groupby('評價型別')['評分'].count().to_frame('數量').reset_index() # 計算占比data_star['占比'] = data_star['數量']/data_star['數量'].sum() data_star
評價型別數量占比
可以看到,超過90%的用戶給予了4星以上好評,低于3星的差評僅占5.4%,絕大部分人還是給予了很高的評價,
1.3.三類用戶的觀后感差異
通過對不同評價型別用戶的評論關鍵詞分析,我們可以發現好評用戶主要表達的是觀影后的電影帶來的情感共鳴,中評用戶則對影片的評價關鍵點比較分散,差評用戶似乎更多關注在導演、劇情和電影院上面,
1.3.1好評用戶給予的評論內容詞云
一共13萬條好評評論,“勿忘國恥”、“感動”、“不錯”、“中國”、“震撼”和“可以”等傳遞的情感非常鮮明,
1.3.2中評用戶給予的評論內容詞云
在一共5千余條中評評論中,我們看到這部分評論的內容維度參差不齊,有不少認為一般般的,但也有不少覺得可以、好看,
1.3.3差評用戶給予的評論內容詞云
在7千多條差評中,我們發現還是有不少認為好看、可以的,除此之外評價“垃圾”的用戶占比較高,評價關鍵詞也更多的轉向了“導演”、“劇情”和“電影院”等,
我們抽樣10條差評看看:
print(data[data['評價型別']=='差評'].sample(10)[['評價型別','點評內容']].to_markdown())
評價型別點評內容
2.評價資料分布詳情
從正式上映到8月27日24點,貓眼累計有評論內容評價14.4萬,評分高達9.24分,我們通過supset制作看板如下:
2.1.評分分布
在14.4萬條評論中,有超過75%的用戶給予了5星滿分的評價,而超過4星的評價占比也高達90%+,
2.2.上映首周每日評價數分布
上映當天是周五早上9點,我有個同事以為是0點場,然后發現是早上9點便沒考慮去追首場,我們可以看到,評價數走勢其實比較平穩,除了首周周日那天有明顯提升之外,作業日也很平穩(8月27日周四除外),不過,一般次周周末會又有一個高峰,比如我和小伙伴就決定今天去看來著~
2.3.每日分時評價數分布
從評價數分時分布的走勢來看,周末和作業日其實沒有啥太大差異,都集中在凌晨2點前(夜貓子居多),下午4-6點,晚上9-12點,這也比較符合正常情況,畢竟吃飯時間不能占用,一般排片上也吃飯前1-2小時和吃飯時間后的排片較多,
2.4.評價用戶城市分布
我記得之前應該是北上廣深評價用戶分布占前四,這次疫情原因,各地電影院“解封”條件不一樣吧,從《八佰》首周的用戶評價地區分布來看,成都高居第一位!!不得不說,咱們湖北武漢也進了前10 ,感動~
3.評論資料爬蟲程序
評論資料爬蟲程序主要分為 介面資料請求、資料處理和資料存盤三部分,其中資料格式是簡單的json格式,整個爬蟲程序比較簡單,我們不做詳細講解,
評論資料介面地址:
“
http://m.maoyan.com/mmdb/comments/movie/346210.json?v=yes&offset=0&startTime=2020-08-25%2011:48:06
”
資料請求結果(截取部分):
“
{"cmts":[{"approve":1,"approved":false,"assistAwardInfo":{"avatar":"","celebrityId":0,"celebrityName":"","rank":0,"title":""},"avatarurl":"https://img.meituan.net/maoyanuser/e4308d29872520d06a8d65b01f55dc206358.jpg","cityName":"西安","content":"讓人哭的不是悲情,就好像上學的時候我自己做錯了事情,結果老師罰了全班人這種感覺,家國大義凜然正氣,","filmView":false,"id":1103548562,"isMajor":false,"juryLevel":0,"majorType":0,"movieId":346210,"nick":"","nickName":"","oppose":0,"pro":false,"reply":0,"score":5.0,"spoiler":0,"startTime":"2020-08-26 10:51:11","supportComment":true,"supportLike":true,"sureViewed":1,"tagList":{"fixed":[{"id":1,"name":"好評"},{"id":4,"name":"購票"}]},"time":"2020-08-26 10:51","userId":1029449566,"userLevel":3,"videoDuration":0,"vipType":0},...}
”
爬蟲代碼:(大家可自行優化)
import requests import jsonimport datetimeimport pandas as pd from fake_useragent import UserAgent start_time = '2020-08-27 23:59:59' end_time = '2020-08-21 09:00:00' # 電影上映時間 lis = []while start_time > end_time: url = 'http://m.maoyan.com/mmdb/comments/movie/346210.json?_v_=yes&offset=0&startTime=' + start_time.replace(' ', '%20') headers = {"User-Agent": UserAgent(verify_ssl=False).random} r = requests.get(url, headers=headers) data = r.text # 轉為為字典 data = https://www.cnblogs.com/hhh188764/p/json.loads(data) data = https://www.cnblogs.com/hhh188764/p/data['cmts'] for li in data: dic = {} dic['昵稱'] = li['nickName'] dic['城市'] = li['cityName'] dic['評價內容'] = li['content'] dic['評分'] = li['score'] dic['評價時間'] = li['startTime'] lis.append(dic) start_time = dic['評價時間'] start_time = datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(seconds=-1) start_time = datetime.datetime.strftime(start_time, '%Y-%m-%d %H:%M:%S') df = pd.DataFrame(lis)
PS:如有需要Python學習資料的小伙伴可以加下方的群去找免費管理員領取
可以免費領取原始碼、專案實戰視頻、PDF檔案等
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/10154.html
標籤:Python
