作者:张凡幸,人工智能初阶小白,初学Python,喜欢数据分析、爬虫相关内容

最近闲来无事恰巧《爱情公寓》电影版上映,10年青春,来看看大家是怎么去吐槽的。

PART1:数据爬取


相关代码:

# coding: utf-8
import pandas as pd
import requests
import random
import json
import time
header={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
    'Connection':'keep-alive'
}
cookies = '_lxsdk_cuid=1651950e6dfc8-02b4e01b2f82ec-6b1b1279-100200-1651950e6dfc8; _lxsdk=FA2EEC709AFE11E883FE1F23FDF\
          D6ADBB39CE732DF384D9DADFD1909B110AD64; v=3; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; __mta=121983668.153372\
          8057235.1533731802598.1533731803845.10'
cookie = {}
for line in cookies.split(';'):
    name, value = cookies.strip().split('=', 1)
    cookie[name] = value
love_apartment = pd.DataFrame(columns=['data','score','city','comment','nick'])
for i in range(0,1000):
    j = random.randint(1,1000)
    print(str(i)+' '+str(j))
    try:
        time.sleep(2)
        url = 'https://m.maoyan.com/mmdb/comments/movie/1175253.json?_v_=yes&offset='+str(j)
        html = requests.get(url=url, cookies=cookie,headers=header).content
        data = json.loads(html.decode('utf-8'))['cmts']
        for item in data:
            love_apartment = love_apartment.append({'data':item['time'].split(' ')[0],'city':item['cityName'],
                                                    'score':str(item['score']),'comment':item['content'],'nick':item['nick']},
                                                   ignore_index=True)
        love_apartment.to_csv('爱情公寓.csv',index=False)
    except:
        continue

数据获取的最大的难点就是猫眼电影短评的api,如果直接在电脑上用浏览器是获取不到api的,本次采用的是利用手机,UC,Fiddler软件对网站的url、header及cookie进行获取,具体网址:

https://blog.csdn.net/shimengran107/article/details/78644862

另外这回也是第一次尝试pandas,所以也费了不少时间去学习,附上相关网址:

https://blog.csdn.net/liufang0001/article/details/77856255/

获得数据表如下:

这里遇到比较多问题就是编码问题,生成的CSV文件会出现乱码,有两种方法,我选择的是CSV转为Excel,附上相关解决方案的网址:

https://blog.csdn.net/lht_okk/article/details/54929103

https://blog.csdn.net/erinalees/article/details/78862011

基本上数据获取就完成了,电影短评截止到现在大概有7万条,我利用Python的随机函数获取了其中的1千条左右(我也不知道为什么这么少...,有待考究,可是1千多条的数据清除无效地图城市也花了不少时间),然后进行数据分析,详情请见后文。

PART2:数据分析

首先附上图表神器pyecharts的技术文档的网址:http://pyecharts.org/#/zh-cn/charts

这里主要是使用其中的HeatMap(热力图)、Bar(柱状图/条形图)、Line(折线/面积图)、Geo(地理坐标系)、Overlap 类。

词云生成wordcloud使用网址:

https://blog.csdn.net/fly910905/article/details/77763086

这里遇到最大的障碍就是Pycharm导入pyecharts库、wordcloud库失败,至于为什么也是不懂。无奈只好通过相关网站下载.whl格式的安装包,在文件夹环境下安装库,可以成功使用。

上篇的pandas也在这里有应用,主要是涉及对数据表的排序、计算处理。主要的函数就是groupby和agg,groupby可以理解为基于行操作(对相同行进行归类),agg则是基于列的(统计列的平均值和数量)。

import pandas as pd
from pyecharts import Bar, Line,Overlap,Geo
import jieba
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
from collections import Counter

love_apartment_com = pd.read_excel('爱情公寓.xlsx',encoding='utf-8')
grouped = love_apartment_com.groupby(['city'])
grouped_pct = grouped['score']

city_com = grouped_pct.agg(['mean', 'count'])
city_com.reset_index(inplace=True)
city_com['mean'] = round(city_com['mean'], 2)
data = [(city_com['city'][i], city_com['count'][i]) for i in range(0, city_com.shape[0])]
geo = Geo('《爱情公寓》全国热力图', title_color="#fff",title_pos="center", width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, type="heatmap",  is_visualmap=True, visual_range=[0, 20],visual_text_color="#fff")
geo.render('爱情公寓全国观影图.html')

在做第一张图表的时候,出现最大的问题就是pyecharts地图资源不全面,所以只好自己慢慢对Excel表筛除无效数据,着实是费了不少时间。从图中看出来,内陆确实人烟稀少,长三角,珠三角,沿海,北京,重庆都是金钱大佬,毕竟能去看电影,评得起分......

city_main = city_com.sort_values('count',ascending=False)[0:20]
attr = city_main['city']
v1 = city_main['count']
v2 = city_main['mean']
line = Line("主要城市评分")
line.add("城市", attr, v2, is_stack=True, xaxis_rotate=30, yaxis_min=0, mark_point=["max", "min"], xaxis_interval=0,
         line_color='lightblue', line_width=4, mark_point_textcolor='black', mark_point_color='lightblue', is_splitline_show=False)
bar = Bar("主要城市评论数")
bar.add("城市", attr, v1, is_stack=True, xaxis_rotate=30, yaxis_min=0, xaxis_interval=0, is_splitline_show=False)
overlap = Overlap()
overlap.add(bar)
overlap.add(line, yaxis_index=1, is_add_yaxis=True)
overlap.render('主要城市评分and评论数.html')

这边少了折线图y轴坐标的注释,明明程序里是有添加的,但是不知为何没有显示,我对城市其实没多大兴趣,主要想看就是电影评分,不过总的来说确实分低,也许这就是卖弄情怀的结果,欺骗了广大观众朋友的感情。

city_score = city_main.sort_values('mean',ascending=False)[0:20]
attr = city_score['city']
v1 = city_score['mean']
line = Line('爱情公寓主要城市评分')
line.add("城市", attr, v1, is_stack=True, xaxis_rotate=30, yaxis_min=0, mark_point=["min", "max"], xaxis_interval=0,
         line_color='lightblue', line_width=4, mark_point_textcolor='black', mark_point_color='lightblue', is_splitline_show=True)
line.render('爱情公寓主要城市评分.html')

最高:4.36分,最低:2.21分,数据收集的不少,应该还算可靠。

city_score_area = city_com.sort_values('count',ascending=False)[0:30]city_score_area.reset_index(inplace=True)data = [(city_score_area['city'][i], city_score_area['mean'][i]) for i in range(0, city_score_area.shape[0])]geo = Geo('《爱情公寓》全国打分图', title_color="#fff",title_pos="center", width=1200, height=600, background_color='#404a59')attr, value = geo.cast(data)geo.add("", attr, value, visual_range=[0, 5],visual_text_color="#fff", symbol_size=15, is_visualmap=True,is_roam=False)geo.render('爱情公寓全国打分图.html')

一片黄颜色的点点,评分大多在中间段

love_apartment_str = ' '.join(love_apartment_com['comment'])
words_list = []
word_generator = jieba.cut_for_search(love_apartment_str)
for word in word_generator:
    words_list.append(word)
words_list = [k for k in words_list if len(k)>1]
back_color = plt.imread('爱心.jpg')
wc = WordCloud(background_color='white',
               mask=back_color,
               font_path='C:\Windows\Fonts\STZHONGS.TTF',
               max_words=2000,
               max_font_size=250,
               random_state=30,
               )
love_apartment_count = Counter(words_list)
wc.generate_from_frequencies(love_apartment_count)
image_colors = ImageColorGenerator(back_color)
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
print('生成词云成功!')
wc.to_file('love_apartment.jpg')

生成的词云如下:

怎么说呢,一开始看跑男的节目的时候还以为有点搞头,慢慢的时间越长名堂也越来越明显了,网上的评论也是吐槽不少,不过这也不是我该操心的事了。

十年青春,说过就过,依稀还记得里面的一句台词:人生没有彩排,每一天都是现场直播。共勉!

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

点击阅读原文,从零开始学习网络爬虫

用Python解读分析《爱情公寓》电影版相关推荐

  1. python爬取爱情公寓电影评论并制作词云

    python爬取爱情公寓电影评论并制作词云 前言:     一直想研究研究如何生成词云,今天抽点时间给大家分享一下制作词云的过程,本文重在研究词云如何制作,由于时间仓促,至于爬取的数据量不大,大家可自 ...

  2. 【读者来稿】数据解读《爱情公寓》电影版——十年一瞬间

    张凡幸,人工智能初阶小白,初学Python,喜欢数据分析.爬虫相关内容 微信公众号:学习随笔(ID:walker398) 前言: 数据森麟公众号收到读者来稿,一篇关于<爱情公寓>电影版的数 ...

  3. python周末看什么电影_史上最强春节档来袭!Python 解读哪部影片值得一看?

    原标题:史上最强春节档来袭!Python 解读哪部影片值得一看? 作者 | 徐麟 责编 | 郭芮 随着春节脚步的临近,想必各位都已经开始规划幸福的春节长假该如何度过.阖家团聚,探亲访友,与好久没见的好 ...

  4. skr!《爱情公寓》电影版来了

         (本内容转载自公众号"科技与Python") 今日,由韦正执导.汪远编剧,"曾小贤"陈赫."胡一菲"娄艺潇."唐悠悠&q ...

  5. python爬猫眼电影影评,Python系列爬虫之爬取并简单分析猫眼电影影评

    前言 今天给大家介绍利用Python爬取并简单分析猫眼电影影评.让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: pyecharts模块: jieba模 ...

  6. python猫眼电影分析_用Python 爬取猫眼电影数据分析《无名之辈》

    前言 作者: 罗昭成 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e7 ...

  7. python爬取豆瓣短评_爬取并简单分析豆瓣电影短评

    导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...

  8. python 豆瓣评论数据分析_Python数据可视化分析--豆瓣电影Top250

    Python数据分析–豆瓣电影Top250 利用Python爬取豆瓣电影TOP250并进行数据分析,对于众多爬虫爱好者,应该并不陌生.很多人都会以此作为第一个练手的小项目.当然这也多亏了豆瓣的包容,没 ...

  9. 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读

    利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...

最新文章

  1. 83篇文献-万字总结强化学习之路
  2. 常用批处理命令总结3之Find和FindStr
  3. Python读取PDF内容
  4. 深度强化学习-马尔科夫决策过程和表格型方法
  5. 多线程:同步和异步的优缺点比较
  6. 2021HDU多校6 - 7028 Decomposition(构造)
  7. win7关闭休眠_【科普】笔记本电脑,待机/睡眠/休眠有啥区别?(ACPI SPM S0-S5)...
  8. 铁路cj继电器_几类铁路信号继电器.ppt
  9. 开门红讨采头,开工喜庆红色PSD分层海报模板
  10. 【转载】通往性能优化的天堂-地狱 JOIN方法说明
  11. List列表拒绝添加重复信息
  12. 网络中的那些事儿(一)之神奇的通讯
  13. word2007里插入分节符
  14. Lync常识之Lync Server有哪些角色
  15. 大数据技术原理与应用答案 林子雨 第二版
  16. 会员制营销和EMAIL营销
  17. openssl-1.0.0 的新增功能与欠缺(一)
  18. 人生的换档时刻?你是怎么度过的
  19. 数据结构——栈的基本操作
  20. xcode连接新的iPhone进行app调试教程

热门文章

  1. mt6735 [Speech App]使用velcom卡呼叫其他运营商号码回铃声叠加
  2. 使用vtk提取模型模型边线2021-01-24
  3. Host 'ip地址' is not allowed to connect to this MySQL server报错解决方法
  4. 怎么压缩图片不影响清晰度
  5. 新天骄服务器爆率修改,常用天骄修改
  6. 甘肃vr全景数字化展厅提高企业品牌认知度和销售效果
  7. error MSB8041: 此项目需要 MFC 库
  8. linux中写crontab脚本,Linux中crond服务与crontab用法
  9. NPOI XSSFWorkbook样式设置
  10. ESP32与Xbox手柄的UART通信测试,基于Arduino框架和pyserial+pygame