本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
以下文章来源于小蚊子数据分析 ,作者小蚊子数据分析
最近《八佰》这部电影破30亿了,上映差不多2个月。对于沉寂了半年、影院上座率仍限定在50%的电影市场而言,这样的成绩出人意料。
从猫眼电影官网可以看到,《八佰》获得了9.2分的高口碑。一向好奇的我产生了一些疑惑,这些人到底在评论些啥?哪些地方的人评论最多?针对不同演员角色的评论内容有什么不同?
数据获取
猫眼电影是简单的动态网页,数据格式为json,通过解析接口的方式即可轻松获取。
<code><span class="hljs-function"><span class="hljs-keyword">def <span class="hljs-title">parse_page<span class="hljs-params">(html): <span class="hljs-keyword">try: data = json.loads(html)[<span class="hljs-string">"cmts"] <span class="hljs-comment"># 将str转换为json <span class="hljs-comment">#print(data) comments = [] <span class="hljs-keyword">for item <span class="hljs-keyword">in data: comment = { <span class="hljs-string">"id": item[<span class="hljs-string">"id"], <span class="hljs-string">"nickName": item[<span class="hljs-string">"nickName"], <span class="hljs-string">"cityName": item[<span class="hljs-string">"cityName"] <span class="hljs-keyword">if <span class="hljs-string">"cityName" <span class="hljs-keyword">in item <span class="hljs-keyword">else <span class="hljs-string">"", <span class="hljs-comment"># 处理cityName不存在的情况 <span class="hljs-string">"content": item[<span class="hljs-string">"content"].replace(<span class="hljs-string">" ", <span class="hljs-string">" ", <span class="hljs-number">10), <span class="hljs-comment"># 处理评论内容换行的情况 <span class="hljs-string">"score": item[<span class="hljs-string">"score"], <span class="hljs-string">"startTime": item[<span class="hljs-string">"startTime"] } comments.append(comment) <span class="hljs-keyword">return comments <span class="hljs-keyword">except Exception <span class="hljs-keyword">as e: <span class="hljs-keyword">pass</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
www#gaodaima.com来源gao*daima.com搞@代#码网搞代码
数据清洗
读取影评数据
<code><span class="hljs-keyword">import pandas <span class="hljs-keyword">as pd <span class="hljs-keyword">import numpy <span class="hljs-keyword">as np <span class="hljs-keyword">data=[] with <span class="hljs-keyword">open(<span class="hljs-string">"comments.txt", <span class="hljs-string">"r",encoding=<span class="hljs-string">"utf-8-sig") <span class="hljs-keyword">as f_input: <span class="hljs-keyword">for line <span class="hljs-keyword">in f_input: <span class="hljs-keyword">data.append(list(line.strip().split(<span class="hljs-string">","))) <span class="hljs-keyword">data</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code>
转为DataFrame并添加列名
<code><span class="hljs-attr">df = pd.DataFrame(data).iloc[:, <span class="hljs-number">0:<span class="hljs-number">6] <span class="hljs-attr">df.columns = [<span class="hljs-string">"观众ID",<span class="hljs-string">"观众昵称",<span class="hljs-string">"城市",<span class="hljs-string">"评论内容",<span class="hljs-string">"评分",<span class="hljs-string">"评论时间"]</span></span></span></span></span></span></span></span></span></span></code>
删除重复记录和缺失值
<code><span class="hljs-attr">df = df.drop_duplicates() <span class="hljs-attr">df = df.dropna()</span></span></code>
预览并保存
<code><span class="hljs-selector-tag">df<span class="hljs-selector-class">.sample(<span class="hljs-number">5) <span class="hljs-selector-tag">df<span class="hljs-selector-class">.to_csv(<span class="hljs-string">"八佰.csv",index=False,encoding=<span class="hljs-string">"utf_8_sig")</span></span></span></span></span></span></span></code>
整体评论词云
对18万条影评内容进行分词,并将频率最高的500个词抽离出来制作词云图,我们发现广大观众对《八佰》这部战争题材电影表现出强烈的情感。除了好看、不错这些赞美之词以外,更多的是震撼、感人、历史、勿忘国耻等代表着强烈民族色彩的词。
评论类型分布
超过90%的好评率,20亿+的票房不是没有道理。
差评抽样
差评虽不多,但集中在对《八佰》结局的轰炸。
评论数据量TOP10城市
成都人对《八佰》评论热情高涨,超过北上广深等大城市。
相关演员提及
观众评论中提及欧豪和端午的次数最多,不知是因为演技还是颜值?
关于端午的评论
关于老算盘的评论