电影《少年的你》影评分析

news/2024/7/6 10:46:09

文章目录

    • 前言
    • 数据展示
    • 评星比例图
    • 地理位置分布图
    • 词云图
    • 完整代码
    • 总结

前言

今天我将用数据告诉你电影《少年的你》到底值不值得看,废话不多说,直接进入今天的正题吧!
在这里插入图片描述

数据展示

在这里插入图片描述
数据是我用爬虫从猫眼上爬下来的,具体操作见博文猫眼电影影评爬取

评星比例图

首先,给大家展示一下这部电影的评分比例。

def pie_show() -> Pie:
    c = (
        Pie()
        .add("", [list(z) for z in zip(star, values)])
        .set_global_opts(title_opts=opts.TitleOpts(title="《少年的你》评星"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
        .render('result/评星.html')
    )
    return c

在这里插入图片描述

地理位置分布图

接着我们再来看一下,评分人的地理位置分布。


def geo_show() -> Geo:
    c = (
        Geo()
        .add_schema(maptype='china')
        .add("", [list(z) for z in zip(city_name, city_position)])
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="《少年的你》评星人位置分布图 by CSDN-虐猫人薛定谔i"))
        .render('result/位置分布图.html')
    )
    return c

在这里插入图片描述

词云图

最后,看一下电影评论的词云图,通过词云图你也就大概知道电影的主题了。


def wordcloud_show():
    comment_split = jieba.cut(str(comments), cut_all=False)
    words = " ".join(comment_split)
    # 过滤掉无用的词
    stopwords = STOPWORDS.copy()
    stopwords.update({"虽然", "但是", "这部", "还是", "一个", "电影", "最后", "而且", "感觉"})
    background_img = plt.imread('res/bg.jpg')
    # 产生词云
    wc = WordCloud(
        width=454,
        height=442,
        background_color="white",
        max_words=200,
        mask=background_img,
        stopwords=stopwords,
        max_font_size=200,
        random_state=50,
        font_path='C:/Windows/Fonts/simkai.ttf'
    ).generate(words)
    image_colors=ImageColorGenerator(background_img)
    plt.imshow(wc.recolor(color_func=image_colors))
    plt.axis("off")
    plt.show()
    wc.to_file('result/词云图.png')

在这里插入图片描述

完整代码

# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time:    2020/1/22 19:49
# @Author:  Martin
# @File:    少年的你.py
# @Software:PyCharm
import jieba
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
from pyecharts.charts import Geo
from pyecharts.charts import Pie
from pyecharts import options as opts
from pyecharts.globals import ChartType, SymbolType
from pyecharts.datasets import COORDINATES

# 读取数据
data = pd.read_csv('./result/maoyan.csv', encoding='utf-8_sig')
star = ['一星', '两星', '三星', '四星', '五星']
score = data.groupby('score').size()
cities = data.groupby('cityName').size()
cities = cities.to_dict()
comments = data['content'].tolist()
values = [
    score.iloc[0] + score.iloc[1],
    score.iloc[2] + score.iloc[3],
    score.iloc[4] + score.iloc[5],
    score.iloc[6] + score.iloc[7],
    score.iloc[8] + score.iloc[9]
]
total = 0
for i in values:
    total += i
for i in range(0, len(values)):
    values[i] = values[i] / total * 100
# 设置匹配阈值
COORDINATES.cutoff = 0.7
# 城市坐标处理
city_name = []
city_position = []
for key in cities:
    result = Geo().get_coordinate(key)
    if result is None:
        continue
    else:
        city_name.append(key)
        city_position.append(result)


def pie_show() -> Pie:
    c = (
        Pie()
        .add("", [list(z) for z in zip(star, values)])
        .set_global_opts(title_opts=opts.TitleOpts(title="《少年的你》评星"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))
        .render('result/评星.html')
    )
    return c


def geo_show() -> Geo:
    c = (
        Geo()
        .add_schema(maptype='china')
        .add("", [list(z) for z in zip(city_name, city_position)])
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="《少年的你》评星人位置分布图 by CSDN-虐猫人薛定谔i"))
        .render('result/位置分布图.html')
    )
    return c


def wordcloud_show():
    comment_split = jieba.cut(str(comments), cut_all=False)
    words = " ".join(comment_split)
    # 过滤掉无用的词
    stopwords = STOPWORDS.copy()
    stopwords.update({"虽然", "但是", "这部", "还是", "一个", "电影", "最后", "而且", "感觉"})
    background_img = plt.imread('res/bg.jpg')
    # 产生词云
    wc = WordCloud(
        width=454,
        height=442,
        background_color="white",
        max_words=200,
        mask=background_img,
        stopwords=stopwords,
        max_font_size=200,
        random_state=50,
        font_path='C:/Windows/Fonts/simkai.ttf'
    ).generate(words)
    image_colors=ImageColorGenerator(background_img)
    plt.imshow(wc.recolor(color_func=image_colors))
    plt.axis("off")
    plt.show()
    wc.to_file('result/词云图.png')


if __name__ == '__main__':
    pie_show()
    geo_show()
    wordcloud_show()

总结

通过这次数据分析实战,我学到了一些常用的数据可视化的方法,进一步了解了词云图以及pyecharts。
在这里插入图片描述
对数据可视化感兴趣的小伙伴可以相互关注,一起交流,一起学习,共同进步。
在这里插入图片描述

By 虐猫人薛定谔i 2020年1月24日写于家中


http://www.niftyadmin.cn/n/3741995.html

相关文章

.NET Framework 3.0框架概述

在2000年,微软首次发行了一个称为.NET 1.0的产品的测试版本。其时.NET 1.0作为一个类框架,回答了开发者社区特别是Java社区,向微软提出的问题。当时,人们认为微软已经跟不上形势甚至有些落后于时代了。结果,.NET 框架的…

launcher修改---launcher的搜索框和ProtipWidget(widget修改)(有图有真相)

有的时候,对launcher的开发,需要去掉launcher上面的搜索框和ProtipWidget,另外,ProtipWidget是android从2.2版本以后才添加上的。在找寻了n久以后,经过网友的帮张,原来定义文件在Launcher2/res/xml/default…

零基础入门前端开发(二)

文章目录字符实体无序列表有序列表自定义列表图片标签文件地址字符实体 无序列表 用来表示一种没有先后顺序之分的列表项。 有序列表 用来表示一种有顺序之分的列表项。 自定义列表 自定义列表是一组标签,不过比较复杂,因为它出现了三对标签。 …

捐赠者讲述建造地震中未倒希望小学

资料图:最结实的希望小学,四川北川刘汉希望小学。 带领孩子们安全逃离的校长史少先(左一) 最结实的希望小学是怎样建成的——记四川北川刘汉希望小学和它的捐赠者 新华网四川北川5月26日电&a…

零基础入门前端开发(三)

表格 table标签的属性: tr标签的属性: td或者th标签的属性 空链接 锚点链接 如何实现锚点链接? 1、定义锚点 2、找到锚点 框架网页 将一个浏览器窗口分割为多个小窗口,每一个小窗口都可以存放一个HTML页面。 网页中颜色的…

汇编语言学习笔记(2)

文章目录汇编语言的组成:指令和数据CPU对存储器的读写各类存储器芯片内存地址空间小结汇编语言的组成: 1、汇编指令:机器码的助记符,有对应的机器码 2、伪指令:没有对应的机器码,由编译器执行,…

阳光下的星期天

周末总是过的那么快,在情愿中到来,在不情愿中离去,时间总是过的那么快,以前还有比较奢侈的长假,可能换做现在依然还不懂得珍惜,很多都说失去以后才知道珍惜,单依然知道后悔却依然不知所以的度过…

做校长当如安县桑枣中学校长叶志平

四川安县桑枣中学紧邻北川,在此次汶川大地震中也遭遇重创,但由于平时的多次演习,地震发生后,全校师生,2200多名学生,上百名老师,从不同的教学楼和不同的教室中,全部冲到操场&#xf…